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ほど。