TL; DL
most similar(=類似単語検索)はget_nearest_neighbors
で、「"東京"-"日本"+"アメリカ"」(=単語の足し算, 引き算)はget_analogies
で実装できる
なぜこの記事を書いたか
Facebookの訓練済みFastTextモデルではmost_similarが使えない
また、gensimでFacebookの訓練済みベクトルを読み込もうとすると、以下のようなエラーが出てしまう
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 0: unexpected end of data
gensimで読み込み直すこと無く、そのままFastTextで類似単語検索などを行いたい
コード
import fasttext import fasttext.util # 日本語版FastTextの訓練済みベクトルダウンロード fasttext.util.download_model('ja', if_exists='ignore') # 10分以上かかる ft = fasttext.load_model('cc.ja.300.bin') # 類似単語検索 ft.get_nearest_neighbors('日本') """ => [(0.683641791343689, '国内'), (0.6735708117485046, '米国'), (0.6710543036460876, 'アメリカ'), (0.6430486440658569, '欧米'),,, """ # 単語の足し算, 引き算 ft.get_analogies("東京", "日本", "アメリカ") """ [(0.6167652606964111, 'ニューヨーク'), (0.5732213854789734, 'ロサンゼルス'), (0.5674026608467102, 'フィラデルフィア'), (0.5639261603355408, 'フロリダ'),,, """