LoginSignup
0
1

More than 1 year has passed since last update.

word2vecを簡単に試してみる

Last updated at Posted at 2021-07-26

word2vecとは?

  • 言語モデルをもとに、単語をベクトル化して計算できるようにしたもの
  • 学習させる言語モデルは自分で指定できる(例:NARUTOの世界観でモデルを作成するなど)

環境

  • mac os x
  • jupyter notebook
  • python 3.8.2

学習済み日本語モデルを使う

  1. 今回は日本語版wikipediaをもとにした学習済みモデルを使用する
    http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/
    スクリーンショット 2021-07-22 15.58.52.png

  2. ダウンロードしたファイルを解凍する

  3. "entity_vector.model.bin"を実行環境と同じディレクトリに移動させる

モデルをロードする

word2vec.py
import gensim
word2vec_model = gensim.models.KeyedVectors.load_word2vec_format('./entity_vector.model.bin', binary=True)

類似度の高いものを表示

word2vec.py
word2vec_model.most_similar(positive=['リンゴ'])
#実行結果
#[('バナナ', 0.7925126552581787),
#('イチゴ', 0.7851971387863159),
#('パイナップル', 0.7774679660797119),
#('トマト', 0.7547608017921448),
#('ナッツ', 0.7491065263748169),
#('キャンディー', 0.7482196092605591),
#('[リンゴ]', 0.7430691719055176),
#('林檎', 0.7421839237213135),
#('クルミ', 0.7396929264068604),
#('カボチャ', 0.7337167263031006)]

2つの単語の類似度を求める

word2vec.py
word2vec_model.similarity('魚', 'マグロ')
#実行結果
#0.6114297

word2vec_model.similarity('魚', 'ニワトリ')
#実行結果
#0.55593973

"魚"と"マグロ"は納得できるが、"魚"と"ニワトリ"は微妙

単語間で計算してみる

word2vec.py
# 女 + 王様 - 男
word2vec_model.most_similar(positive=['女', '王様'], negative=['男'])
#実行結果
#[('お姫様', 0.7259089946746826),
#('[シンデレラ]', 0.6741881370544434),
#('貴婦人', 0.6695671081542969),
#('[アリス_(不思議の国のアリス)]',0.6475884914398193),
#('花嫁', 0.6458605527877808),
#('妖精', 0.6455655097961426),
#('道化師', 0.6381884813308716),
#('姫君', 0.6307607889175415),
#('魔女', 0.6281230449676514),
#('魔法使い', 0.6276963949203491)]

まとめ

  • word2vecを日本語版wikipediaをもとにした学習済みモデルで試してみた
  • 日本語的に正しい部分もあるが、間違っている部分もある

参考文献

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1