自然言語処理系の研究室所属になった新人のメモです.
[修正] おまけ部分の記述について (2018/08/02)
最新のgensimでは追加学習で新規語彙を学習できるそうです.
ご指摘ありがとうございます.
word2vecの追加学習
素性を作る際にword2vecを使うことになって,頂いたモデルに追加で学習が必要になりました.
普通に分かち書きしたテキストを以下のようにすれば追加学習できると思っていたのですが
model.train(wakati_list)
以下のようなエラー
ValueError: You must specify either total_examples or total_words, for proper alpha and progress calculations. The usual value is total_examples=model.corpus_count.
解決策
どうも新しいバージョンではtotal_examplesとepochsをちゃんと指定しないといけないようでした.
ですので,コードを以下のように修正
model.train(sentences, total_examples = sum([len(wakati) for wakati in wakati_list]), epochs = model.iter)
おまけ
追加学習した際に新しい単語が入っていたとしてもその単語のベクトルが新しく登録されることはないらしい...気をつけねば.
最新のgensimでは追加学習で新規語彙を学習できるそうです.
自分の事例において新規語彙が登録されない理由は「model作成時のmin_countパラメータに引っかかっている」あるいは「新規学習データsentenceがリストになっていない」とのことです.
(コメント欄参照)