2018年2月9日 更新

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

2,353 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 件

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

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

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

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

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

等角写像の一つであるSchwarz Christoffel 変換を用いて,画像の変換をしてみます. python によるコードも記載しております. 画像はhttps://uk.mathworks.com/help/images/examples/exploring-a-conformal-mapping_ja_JP.html より.
三好 裕之 | 324 view
画像のセグメンテーション - Level set 法の実装 (Chan-Vese) -

画像のセグメンテーション - Level set 法の実装 (Chan-Vese) -

画像処理のセグメンテーションの分野で用いられるLevel set 法を用いて画像のセグメンテーションを行います.
三好 裕之 | 1,838 view
画像の一部を消すInpainting という技術とその実装 (python)

画像の一部を消すInpainting という技術とその実装 (python)

Python + OpenCVにより,画像の修復の技術,「Inpainting 」の実装を行います.
三好 裕之 | 3,203 view

この記事のキーワード

この記事のキュレーター

井上 大輝 井上 大輝