日本語 Wikipedia エンティティベクトルの作成

これも東北大学スクリプトを実行してみる

 

python3 make_corpus.py --cirrus_file ../bert-japanese/jawiki-20220110-cirrussearch-content.json.gz --output_file output --tokenizer mecab --tokenizer_option "-d ../bert-japanese/mecab-ipadic-neologd"

 

は時間がかかったもののエラーなく完了。ところが、

 

python3 train.py --corpus_file output --output_dir trained --embed_size 300 --window_size 10 --sample_size 10 --min_count 10 --epoch 5 --workers 20

 

はsizeという引数は知らない、みたいなエラーが出て止まる。調べてみるとgensimのバージョンが新しくなって引数の名前が変わったようだ。そのため、train.pyを下記のように修正したところ(コメントアウト部分がオリジナル)、

 

    model = Word2Vec(sentences=LineSentence(args.corpus_file),
#                     size=args.embed_size,
                     vector_size=args.embed_size,
                     window=args.window_size,
                     negative=args.sample_size,
                     min_count=args.min_count,
                     workers=args.workers,
                     sg=1,
                     hs=0,
                     epochs=args.epoch)
#                     iter=args.epoch)

 

一応今のところは動いている。

・・・・・・が、数時間後epoch5が完了後にやはりgensimのバージョン違いによるエラーが出たので諦めてgensimのバージョンを落として現在やり直し中。

そして最終的に、

 

[I 220202 02:34:52 base_any2vec:1332] EPOCH - 5 : training on 1280011274 raw words (923906431 effective words) took 5771.3s, 160085 effective words/s
[I 220202 02:34:52 base_any2vec:1368] training on a 6400056370 raw words (4619507623 effective words) took 28731.5s, 160782 effective words/s
[I 220202 02:34:54 train:46] word vocabulary size: 865469
[I 220202 02:34:54 train:47] entity vocabulary size: 901585
[I 220202 02:34:54 train:48] total vocabulary size: 1767054
[I 220202 02:34:54 train:50] writing word/entity vectors to files

 

となり、一応作業は完了した模様。後はこれが実際に使えるかどうかを検証してみよう。一応cygwin上のlessコマンドで

less entity_vectors.txt

と中身を見てみるとそれらしいデータにはなっている(Windows上でmoreコマンドだとUTF8が文字化けするため)。

気になるのが、東北大学で配布しているデータと比較して大きさが1/6くらいしかないこと・・・と思ったら一桁間違えていた。配付されているのが1.8GBほどで今回生成されたのは3GBほど。