Edited at

kuromoji.jsでmecab-ipadic-NEologdを使う

More than 3 years have passed since last update.

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を読み込むようにします。


scripts/build-dict.js

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/のファイルが更新されていれば完了です。

あとはプログラムに読み込ませて使いましょう。


参考