LoginSignup
15
14

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-12-30

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/のファイルが更新されていれば完了です。
あとはプログラムに読み込ませて使いましょう。

参考

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14