自然语言处理工具之gensim / 预训练模型 word2vec doc2vec
gensim
intro
Gensim是一个免费的 Python库,旨在从文档中自动提取语义主题,尽可能高效(计算机方面)和 painlessly(人性化)。
Gensim旨在处理原始的非结构化数字文本(纯文本)。
在Gensim的算法,比如Word2Vec,FastText,潜在语义分析(LSI,LSA,see LsiModel),隐含狄利克雷分布(LDA,见LdaModel)等,自动训练文档的躯体内检查统计共生模式发现的文件的语义结构。这些算法是无监督的,这意味着不需要人工输入 - 您只需要一个纯文本文档。
一旦找到这些统计模式,任何纯文本文档(句子,短语,单词......)都可以在新的语义表示中简洁地表达,并查询与其他文档(单词,短语......)的主题相似性。
install
pip install --upgrade gensim
Pre-trained word2vec
import random
import gensim
from gensim.models import Word2Vec, Doc2Vec
from gensim import utils
token_review = list()
dims = [100, 600]
for sieze in dims:
#instantiate our model
model_w2v = Word2Vec(min_count=10, window=5, size=size, sample=1e-3, negative=5, workers=4, sg=0)
#build vocab over all reviews
model_w2v.build_vocab(token_review)
#We pass through the data set multiple times, shuffling the training reviews each time to improve accuracy.
Idx=list(range(len(token_review)))
t0 = time()
for epoch in range(5):
print(epoch+1, "/5 epochs")
random.shuffle(Idx)
perm_sentences = [token_review[i] for i in Idx]
model_w2v.train(perm_sentences,total_examples=len(Idx), epochs = 1)
elapsed=time() - t0
print("Time taken for Word2vec training: ", elapsed/60, " (mins).")
# saves the word2vec model to be used later.
#model_w2v.save('./model_word2vec_skipgram_300dim')
# open a saved word2vec model
#model_w2v=gensim.models.Word2Vec.load('./model_word2vec')
model_w2v.wv.save_word2vec_format('./data/model_word2vec_v2_%ddim.txt'%size, binary=False)
print("similar words of 'cancer'", model_w2v.wv.most_similar('cancer') )