word2vecというか、gensimの使い方

word2vecというか、gensimの使い方のひな形を書いておく。

一つ注意。
学習のところで、windowというオプションがあるが、
これは、文の中だけが範囲であって、文を跨がない。

window (int, optional) – Maximum distance between the current and predicted word within a sentence.

gensim: models.word2vec – Word2vec embeddings

なお、文をどう認識しているかだが、
入力データはリストのリスト(もしくはそれに準ずるもの)であって、
1つのリストを1つの文と見ているようだ。

from gensim.models import word2vec
 
#open file patten 01
word_list=[ x.rstrip("\r\n").split() for x in list(open("infile")) ]
 
#open file patten 02
#word_list = word2vec.LineSentence("infile")
 
#modelling
model = word2vec.Word2Vec(word_list, size=100,min_count=1,window=5,iter=100)
 
#save model
model.save("filename.model")
 
# save as vector(1行目は単語数とベクトルの次元の情報)
model.wv.save_word2vec_format("filename.vec",binary=False)
 
#list of words which were vectorized
list_words = model.wv.index2word
 
# word vector of "hoge"
model.wv.word_vec('hoge')
 
# similar words
results = model.wv.most_similar(positive=["hoge"])
for res in results:
    print(res)