0
0

More than 1 year has passed since last update.

お試し

Posted at
例え生成プロジェクト チュートリアル段階

以下のサイトに従ってチュートリアルを実施した

gensim を使ってみる


gensim のinstall

pip install gensim

Successfully installed gensim-4.1.2 numpy-1.22.2 scipy-1.8.0 smart-open-5.2.1

上記のように4つのファイルが(入っていなければ)インストールされる


学習済みモデルのダウンロード

以下2種類の学習済みモデルの実装を試みた

  • WikiEntVec : 日本語の固有表現の情報が多い
  • 追加予定

今回使うのは東北大学 乾・岡崎研究室で作られたモデルです。これは、日本語 Wikipedia の本文全文を元に学習したもので、ベクトルは200次元です。

特徴はwikipediaの性質上,日本語の固有表現に関する情報が多いこと


このリンクで研究室のホームページに行き、 20170201.tar.bz2 (2017年2月1日版, 1.3GB, 解凍後 2.6GB)をダウンロードして下さい。

今回はgithubのページ からリリースページへジャンプし 一番最新かつ容量の多い、jawiki.all_vectors.300d.txt.bz2 (2019年5月20日版, 1.74GB, 解凍後 5.0GB)をダウンロードした。

と思ったが、最新のくんれん済みデータはtxtファイルしか入っていない。参考元を見ても、必要なのはbinファイルなので,おとなしく参考元と同じ2017年のモデルを使用することとする。


ダウンロードファイルの展開(linux環境です。windowsはソフト入れな)

cd 10_trainedVector/WikiEntVec/
拡張子が.bz2だけの場合
bzip2 -d jawiki.all_vectors.300d.txt.bz2
拡張子が.tar.bz2の場合
tar xvzf 20170201.tar.bz2

解凍待ちの完全に余談だが、tarのオプションはそれぞれ以下の意味らしい (参考)

  • x : eXtract(展開)

  • v : verbose(言葉の多い、展開内容を表示)

  • z : gzip対応

  • f : file から展開(デフォルトはテープデバイスになってるので。)

    ls entity_vector

entity_vector/entity_vector.model.binがあることを確認。 解凍前の圧縮ファイルは消してよし

やってみた

モデルの読み込み

from gensim.models import KeyedVectors
import os
モデルのパス
project_root = '..'
model_dir = os.path.join(project_root, '10_trainedVector/WikiEntVec/entity_vector')
model_txt = os.path.join(model_dir, 'entity_vector.model.bin')
model = KeyedVectors.load_word2vec_format(model_txt, binary=True)

指原莉乃 + 悪 = ?

results = model.most_similar(positive=[u'[悪]',u'[指原莉乃]'])
for result in results:
    print(result)
  1. ('[恋]', 0.6308125257492065)
  2. ('[小嶋陽菜]', 0.6083012819290161)
  3. ('[両性具有]', 0.6051624417304993)
  4. ('[善]', 0.6046913266181946)
  5. ('[柏木由紀]', 0.5923081636428833)
  6. ('[つるの剛士]', 0.5916614532470703)
  7. ('悪', 0.589141845703125)
  8. ('[秋元才加]', 0.5883554220199585)
  9. ('[大島優子]', 0.586757242679596)
  10. ('[知念侑李]', 0.5830826163291931)

指原莉乃 - AKB48 = ?

results = model.most_similar(positive=[u'[指原莉乃]'], negative=['[AKB48]'])
for result in results:
    print(result)
  1. ('[川平慈英]', 0.44735950231552124)
  2. ('[ハーヴェイ・カイテル]', 0.44733762741088867)
  3. ('[ウィル・アーネット]', 0.43451210856437683)
  4. ('[竹内靖夫]', 0.432728111743927)
  5. ('[矢野誠_(ミュージシャン)]', 0.42878034710884094)
  6. ('[置鮎龍太郎]', 0.4265846312046051)
  7. ('[渡辺徹_(俳優)]', 0.42566490173339844)
  8. ('[クリス・タッカー]', 0.42323005199432373)
0
0
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
0