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') )