モデル構築
学習済みモデル
白ヤギさんの日本語学習済みモデル 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関数を利用して単語を指定する方法がお勧めです。
モデルのロードが重いのでロード前に単語を入力しました。
コメント