Help us understand the problem. What is going on with this article?

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

参考

abcang
JavaScriptとかRubyとかがすきです
https://abcang.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away