トレーニング済みの英語版ウィキペディア ベクトル ファイル ( wiki.en.vec
) を fastText Github リポジトリ ページからダウンロードし、次のように Mikolov の最初の word2vec 論文で説明されているように、構文および意味の類推タスクの精度を計算しようとしました。
を実行するだけで word2vec リポジトリを構築しましたmake
。
つまり、デフォルトで 30000 に制限するのでは./compute-accuracy wiki.en.vec 0 < questions-words.txt
なく、語彙全体を考慮するために、事前トレーニング済みのベクトル ファイルを word2vec の計算精度バイナリに 0 のしきい値と共に渡し、精度も送信します。コードが標準入力からデータセットを読み取ることに気付いたので、計算データセットquestions-words.txt
を使用しています。<
応答として、以下のような一連の NaN を取得します。これは、しきい値を 30000 などに変更しても変わりません。
>capital-common-countries:
ACCURACY TOP1: 0.00 % (0 / 1)
Total accuracy: -nan % Semantic accuracy: -nan % Syntactic accuracy: -nan %
英語の事前学習済みベクトルが word2vec の精度計算コードで機能しないように見える理由を誰か説明してもらえますか? 見てみるcompute-accuracy.c
と、標準のベクター ファイルの書式設定規則が想定さwiki.en.vec
れているように見えます。また、標準の規則で書式設定されているようにも見えます。
また、fastText の論文では、fastText ベクトルを使用した単語の類推精度が提示されており、この論文では Mikolov の word2vec 論文が引用されています。明らかに、同じデータセットが使用されており、おそらく同じ word2veccompute-accuracy.c
ファイルが提示された数値を取得するために使用されました。それで、誰かが何がうまくいかないのか説明してもらえますか?