JavaScriptだけで形態素解析ができるkuromoji.jsで、mecab-ipadic-NEologdを使いたいなーと思って、試してみました。
結論
- 辞書生成はできた
- 辞書サイズが大きすぎてメモリ馬鹿食いする
- 読み込みに時間がかかる
サーバサイドでの使用ならいいかもしれませんが、クライアントサイドでの利用は難しいかなと思いました。
サーバサイドなら素直にmecab使うほうが楽な気はしますね。
辞書生成方法
追加辞書の用意
ここから追加辞書をダウンロードして解凍します。
ここではmecab-user-dict-seedを追加しようと思います。
$ xz -dkv mecab-user-dict-seed.*.csv.xz
kuromojiでは辞書のもととなるcsvがEUC-JPの必要があるので変換します。
ここでは適当にneo.csv
としておきます。
$ nkf -e mecab-user-dict-seed.*.csv > neo.csv
辞書の生成
kuromojiをcloneして、npm installしておきます。
$ git clone https://github.com/takuyaa/kuromoji.js.git
$ npm install
生成したneo.csv
をscripts/input以下に配置して、scripts/build-dict.js
を編集してneo.csv
を読み込むようにします。
var tid_files = [
"Adj.csv",
"Adnominal.csv",
"Adverb.csv",
"Auxil.csv",
"Conjunction.csv",
"Filler.csv",
"Interjection.csv",
"Noun.adjv.csv",
"Noun.adverbal.csv",
"Noun.csv",
"Noun.demonst.csv",
"Noun.nai.csv",
"Noun.name.csv",
"Noun.number.csv",
"Noun.org.csv",
"Noun.others.csv",
"Noun.place.csv",
"Noun.proper.csv",
"Noun.verbal.csv",
"Others.csv",
"Postp-col.csv",
"Postp.csv",
"Prefix.csv",
"Suffix.csv",
"Symbol.csv",
"Verb.csv",
"neo.csv" // 追記
];
gulp build-dictを実行して辞書を再生成します。
mecab-user-dict-seedは非常にサイズが大きいので、メモリの上限を変えています。
(少し起動方法が強引ですが)
$ node --max-old-space-size=4096 node_modules/.bin/gulp build-dict
dist/dict/
のファイルが更新されていれば完了です。
あとはプログラムに読み込ませて使いましょう。