2018年2月9日 更新

word2vec:Pythonで単語ベクトルを作成する_実装編

5,212 view お気に入り 0
 (4543)

前回の記事,「word2vec:Pythonで単語ベクトルを作成する」で単語ベクトル作成の理論を解説しました.ということで今回は,python,特に gensim と呼ばれるライブラリを用いて単語ベクトル作成の実装を行います.そして図に示したような単語ベクトル作成の足し算・引き算を行います.
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 にも挑戦してみようと思います.

4 件

関連する記事 こんな記事も人気です♪

量子アニーリングを駆使して数独を解いてみた

量子アニーリングを駆使して数独を解いてみた

先日,量子アニーリングの勉強会に参加して来ました.そのアウトプットとして,今回,数独ソルバーを作ってみます.
井上 大輝 | 4,258 view
Morphology (モルフォロジー) 変換の実装 ~ Python + OpenCV ~

Morphology (モルフォロジー) 変換の実装 ~ Python + OpenCV ~

画像処理の一つ,モルフォロジー変換をPython と OpenCVのライブラリを用いて実装し,それを2値画像に対して適用します.
等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 2

等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 2

前回の記事「等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 1」の続きです. 実際に実装をして,写像を確かめてみます.
等角写像による画像の変換〜Schwarz-Christoffel 変換〜 part1

等角写像による画像の変換〜Schwarz-Christoffel 変換〜 part1

等角写像の一つであるSchwarz Christoffel 変換を用いて,画像の変換をしてみます. python によるコードも記載しております. 画像はhttps://uk.mathworks.com/help/images/examples/exploring-a-conformal-mapping_ja_JP.html より.

この記事のキーワード

この記事のキュレーター

井上 大輝 井上 大輝