こちらを参考にRでWord2Vecを実行してみたが、ちょっとハマったのでメモ
パッケージインストール
必要なパッケージをインストールします
1 2 3 4 5 6 7 8 9 | install.packages("devtools") library(devtools) install.packages("tsne") install.packages("magrittr") install.packages("stringi") library(tsne) library(magrittr) library(stringi) devtools::install_github("bmschmidt/wordVectors") |
データ作成
青空文庫から夏目漱石の三四郎をテストデータとします
1 2 3 4 | $ wget http://www.aozora.gr.jp/cards/000148/files/794_ruby_4237.zip $ unzip 794_ruby_4237.zip $ nkf -w --overwrite sanshiro.txt $ mecab -Owakati sanshiro.txt -o data.txt |
UTF8へ文字コードを変換しておきます。ちなみにmecabはUTF8のものをインストールしておいてください
R実行
Rから実行します
1 2 3 4 5 6 7 8 9 10 | library(devtools) library(wordVectors) library(magrittr) library(tsne) library(magrittr) wordVectors::train_word2vec( train_file = "data.txt", output_file = "model.txt", vectors = 200, window = 10, threads = 3 ) |
threadsはCPU数−1あたりで設定します
これを実行すると
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | type.convert(data[[i]], as.is = as.is[i], dec = dec, numerals = numerals, でエラー: '<f6>(;<a4><d0>;<fb><ba>{<d4>ֺ<b8>3:q<fd><c5>:ף<f6>9<9a><99><dd>8<f6>(<ec><ba><d7>c<91>:' に不正なマルチバイト文字があります 追加情報: 警告メッセージ: 1: utils::read.table(filename, header = F, skip = 1, colClasses = c("character", で: line 1 appears to contain embedded nulls 2: utils::read.table(filename, header = F, skip = 1, colClasses = c("character", で: line 2 appears to contain embedded nulls 3: utils::read.table(filename, header = F, skip = 1, colClasses = c("character", で: line 3 appears to contain embedded nulls 4: utils::read.table(filename, header = F, skip = 1, colClasses = c("character", で: line 4 appears to contain embedded nulls 5: utils::read.table(filename, header = F, skip = 1, colClasses = c("character", で: line 5 appears to contain embedded nulls 6: utils::read.table(filename, header = F, skip = 1, nrows = 1, で: line 1 appears to contain embedded nulls |
このようなエラーが出ます
この場合には気にせずRで
1 | word2vec_model <- read.vectors("model.txt",binary=TRUE) |
これで読み込み直してやります。
確認
1 2 3 4 5 6 7 8 9 10 | > nearest_to(word2vec_model,word2vec_model[["三四郎"]]) 三四郎 与次郎 じっと 秋 ますます 勇気 見合わせ おかしく 次 3.330669e-16 4.131871e-01 4.873280e-01 4.886600e-01 4.895344e-01 4.948309e-01 5.033392e-01 5.220245e-01 5.278047e-01 腹の中 5.329964e-01 > nearest_to(word2vec_model,word2vec_model[["東京"]]) 東京 生まれ これから ずっと 変る おれ いなか うえ いっそ 5.551115e-16 3.663971e-01 3.754231e-01 3.864140e-01 4.024397e-01 4.056571e-01 4.078920e-01 4.080678e-01 4.103215e-01 文芸時評 4.340431e-01 |
ま、こんなもんです