import gensim import os class MySentences(object): def __init__(self, dirname): self.dirname = dirname def __iter__(self): for fname in os.listdir(self.dirname): for line in open(os.path.join(self.dirname, fname)): yield line.split() path = os.getcwd() sentences= MySentences(path + "\\test") # カレントディレクトリに testフォルダ を作成し,その中に,学習用のテキストファイルを入れて下さい. model = gensim.models.Word2Vec(sentences, min_count=10, size=200) # 単語ベクトル作成 vec_calc = model.most_similar(positive=["Japan", "Paris"], negative=["Tokyo"], topn=1) # [Japanベクトル]-[Tokyoベクトル]+[Parisベクトル] を表しています. print(vec_calc) # [('French', 0.9493083953857422)] が出力されます.
word2vec.py
[Japanベクトル] ー [Tokyoベクトル] を計算することで,[country nameベクトル] を取得し,[country nameベクトル] + [Parisベクトル] を計算することで,[Frenchベクトル] が得られる.という内容を上記の実装で行っています.
今回は学習用テキストファイルの内容が,首都と国名がペアになって記述されているものなので,[country nameベクトル] や [capital nameベクトル] が取得できます.学習データを変えてみるともっと面白いことが出来そうです.
因みに,https://github.com/RaRe-Technologies/gensim-data に行くと,色々な種類のデータが手に入ります.また,gensim の Doc2vec を用いれば,文書をベクトル化することも可能らしいです (word2vec は単語をベクトル化する).今後,Doc2vec にも挑戦してみようと思います.
今回は学習用テキストファイルの内容が,首都と国名がペアになって記述されているものなので,[country nameベクトル] や [capital nameベクトル] が取得できます.学習データを変えてみるともっと面白いことが出来そうです.
因みに,https://github.com/RaRe-Technologies/gensim-data に行くと,色々な種類のデータが手に入ります.また,gensim の Doc2vec を用いれば,文書をベクトル化することも可能らしいです (word2vec は単語をベクトル化する).今後,Doc2vec にも挑戦してみようと思います.
4 件