pythonでWord2Vecを使ってみよう

プログラミング
スポンサードリンク
スポンサードリンク

モデル構築

学習済みモデル

白ヤギさんの日本語学習済みモデル HP-https://aial.shiroyagi.co.jp/2017/02/japanese-word2vec-model-builder/

こちらのサイトにアクセスし、zipファイルをダウンロードして解凍します。

クリックだけではダウンロードできなかったのでwindowsターミナルからwgetコマンドを使ってダウンロードしました。

さくっとword2vecを使いたい方にお勧めです。

※追記
現在ページが消されてしまっているので、下記のデータベースからモデルを生成する必要があります。

データベース

wikipedia データベース
https://dumps.wikimedia.org/jawiki/latest/

上のリンクにアクセスし、日本語全記事 jawiki-latest-pages-articles.xml.bz2 (※3GB以上あります)をダウンロードします。

次のコードがモデル学習のコードです。

from gensim.models import word2vec
import bz2

#ファイルの解凍
with bz2.BZ2File('jawiki-latest-pages-articles.xml.bz2', 'r') as f:
    content = f.read()

with open('jawiki-latest-pages-articles.xml', 'wb') as f:
    f.write(content)

# Wikipedia日本語版のダンプデータから学習する
sentences = word2vec.LineSentence('jawiki-latest-pages-articles.xml')

# word2vecのモデルを学習する
model = word2vec.Word2Vec(sentences, vector_size=100, window=5, min_count=5, workers=4)

# 学習したモデルを保存する
model.save('jawiki.model')

実行例

# モデルを読み込む
from gensim.models import Word2Vec

#単語を入力
a,b,c = input().split()

#学習済みモデルをロード
model = Word2Vec.load('word2vec/jawiki.model')

# 単語同士の類似度を計算する
similarity = model.wv.similarity(a, b)
print('類似度:', similarity)

# 単語同士の距離を計算する
distance = model.wv.distance(a, b)
print('距離:', distance)

# 類似した単語を検索する
similar_words = model.wv.most_similar(a)
print('類似した単語:', similar_words)

# 2つの単語の足し算、引き算を計算する
result1 = model.wv.most_similar(positive=[a, b], negative=[c])
print('単語1 + 単語2 - 単語3:', result1)

result2 = model.wv.most_similar(positive=[a, b])
print('単語1 + 単語2:', result2)

input関数を利用して単語を指定する方法がお勧めです。

モデルのロードが重いのでロード前に単語を入力しました。

コメント