YutaroOgawa / pytorch_advanced

書籍「つくりながら学ぶ! PyTorchによる発展ディープラーニング」の実装コードを配置したリポジトリです
MIT License
846 stars 334 forks source link

【第7章】ボキャブラリ辞書について #152

Open norihiro-ito opened 3 years ago

norihiro-ito commented 3 years ago

実行結果が気になったので、、、。

7-4_vectorize.ipynb ボキャブラリの数は、使用する辞書によって変わってしまうようです。これは、使用したmecabのバージョンによるのだろうと思います。

そのためボキャブラリ同士の演算に使用されているインデクスがずれてしまい、正しい演算ができなくなります、

tensor_calc = TEXT.vocab.vectors[41] - TEXT.vocab.vectors[38] + TEXT.vocab.vectors[46]

print("女王", F.cosine_similarity(tensor_calc, TEXT.vocab.vectors[39], dim=0)) print("王", F.cosine_similarity(tensor_calc, TEXT.vocab.vectors[44], dim=0)) print("王子", F.cosine_similarity(tensor_calc, TEXT.vocab.vectors[45], dim=0)) print("機械学習", F.cosine_similarity(tensor_calc, TEXT.vocab.vectors[43], dim=0))

そこで、辞書を利用して、名前からインデクスを引くように変えてみました。

tensor_calc = TEXT.vocab.vectors[TEXT.vocab['姫']] - \ TEXT.vocab.vectors[TEXT.vocab['女性']] + TEXT.vocab.vectors[TEXT.vocab['男性']]

print("女王", F.cosine_similarity(tensor_calc, TEXT.vocab.vectors[TEXT.vocab['女王']], dim=0)) print("王", F.cosine_similarity(tensor_calc, TEXT.vocab.vectors[TEXT.vocab['王']], dim=0)) print("王子", F.cosine_similarity(tensor_calc, TEXT.vocab.vectors[TEXT.vocab['王子']], dim=0)) print("機械学習", F.cosine_similarity(tensor_calc, TEXT.vocab.vectors[TEXT.vocab['機械学習']], dim=0))

YutaroOgawa commented 3 years ago

@norihiro-ito さま

確認を誠にありがとうございます。

読者の皆様、本Issueは

【第7章】make_folders_and_data_downloads.ipynb、word2vecの日本語学習済みモデル(東北大学 乾・岡崎研究室)がダウンロードできません

https://github.com/YutaroOgawa/pytorch_advanced/issues/29

と紐づくものです。ファイル変更にともない、インデックスが変わっているため、その対応策となります。

@norihiro-ito さま、誠にありがとうございます。