Edited at

neologd辞書をjuman/juman++で使えるようにするスクリプト作った

More than 1 year has passed since last update.

本スクリプトは、Insight Tech公開のリポジトリから入手可能です。

※ 長く気がついていませんでしたが、辞書生成途中でエラーが起きていて、多くのエントリが変換されないままになっていました。最新の版では修正済みです。


この記事で紹介すること


  • neologd辞書の有効性

  • neologd辞書をJUMAN/JUMAN++で利用できるようにするためのスクリプト紹介


neologd辞書とは?

正式にはmecab-ipadic-neologdという名称で、mecabの追加辞書として設計されています。

形態素解析器をweb上のテキストに適用するには、標準の辞書では対応できないケースが多々ありました。特にドラマの名前、スラング的な語(オマエモナーなど)などが顕著です。

例えば、昨年の年末に話題になった逃げるは恥だが役に立つは標準のipadicでは1語と認識できません。


標準ipadic

% echo "逃げ恥は毎週みている" | mecab

逃げ 名詞,一般,*,*,*,*,逃げ,ニゲ,ニゲ
恥 名詞,一般,*,*,*,*,恥,ハジ,ハジ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
毎週 名詞,副詞可能,*,*,*,*,毎週,マイシュウ,マイシュー
み 動詞,自立,*,*,一段,連用形,みる,ミ,ミ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
いる 動詞,非自立,*,*,一段,基本形,いる,イル,イル
EOS


neologd

% echo "逃げ恥は毎週みている" | mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd 

逃げ恥 名詞,固有名詞,一般,*,*,*,逃げ恥,ニゲハジ,ニゲハジ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
毎週 名詞,副詞可能,*,*,*,*,毎週,マイシュウ,マイシュー
み 動詞,自立,*,*,一段,連用形,みる,ミ,ミ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
いる 動詞,非自立,*,*,一段,基本形,いる,イル,イル
EOS

neologdはこのように、次々と世の中に出現する新語に次々と対応していこう!という非常に精力的なプロジェクトです。

neologdのプロジェクトページによると、週に2回の更新が実施されているとのことです。(2017/2/24現在)


Juman/Juman++とは?

Juman/Juman++は京都大学の黒橋・河原研究室で開発されている形態素解析器です。

Jumanはmecabよりも単語の意味分類を細かく実施してくれる点で、大きく異なります。

% echo "逃げ恥は毎週みている" | juman  

逃げ にげ 逃げる 動詞 2 * 0 母音動詞 1 基本連用形 8 "代表表記:逃げる/にげる 自他動詞:他:逃がす/にがす"
恥 はじ 恥 名詞 6 普通名詞 1 * 0 * 0 "代表表記:恥/はじ 漢字読み:訓 カテゴリ:抽象物"
は は は 助詞 9 副助詞 2 * 0 * 0 NIL
毎週 まいしゅう 毎週 名詞 6 時相名詞 10 * 0 * 0 "代表表記:毎週/まいしゅう カテゴリ:時間"
みて みて みる 動詞 2 * 0 母音動詞 1 タ系連用テ形 14 "代表表記:見る/みる 補文ト 自他動詞:自:見える/みえる"
@ みて みて みる 動詞 2 * 0 母音動詞 1 タ系連用テ形 14 "代表表記:診る/みる 補文ト ドメイン:健康・医学"
いる いる いる 接尾辞 14 動詞性接尾辞 7 母音動詞 1 基本形 2 "代表表記:いる/いる"
EOS

毎週 の行にカテゴリ:時間という表示があるのが見れます。

このように、単語の意味分類を実施しているため、カテゴリを利用した集計も可能です。

一方、Juman++はJumanの後継として2016年に登場した形態素解析器です。

形態素解析時にRNNを利用しており、「単語の意味的な類似度」を考慮しながら、単語区切りが可能です。

また、Juman++はJumanと同じフォーマットなので、Jumanで可能だったことをそのまま置き換えることができます。

特にKNPとの組み合わせでは、大きな威力を発揮します。

Juman/KNP という組み合わせを Juman++/KNP という組み合わせに置き換えることができます。


neolod2juman

さて、本記事のメイントピックです。

Juman/Juman++ユーザーとしては、毎週のように更新されるneologd言語資源は喉から手が出るほど欲しいものです。

そこで、それを実現してくれるスクリプトを作りました。それがneologd2jumanです。

neologdのエントリをJuman辞書形式に変換してくれます。

ただし、neologdのすべてのエントリを変換するわけではなく、 名詞/固有名詞 のみです。

neologdとJuman辞書の品詞体系は別の体系を利用しており、1対1の変換関係を構築するのは困難です。固有名詞のみは共通しているだろう。と考え、このようなアプローチにしています。

また、辞書の見出し語が40文字以上の場合はjuman用の辞書に追加されません。

辞書生成コマンドがエラーを出してしまうからです・・


スクリプトの実行とインストール

Ubuntu14.04とMac El Capitanで動作確認をしています。


必要なもの


  • Juman

  • Juman++ (Juman++用に辞書を使いたい場合のみ)

  • makeコマンド

  • python3


手順

手順を紹介します。

Juman用に辞書を用意するには、以下の手順でOKです。


  1. git clone git@github.com:fumankaitori/neologd2juman.git

  2. make

コマンドが無事に全実行されると、

New juman dictionary is at /usr/local/share/juman/juman-neologd-dic

New jumanrc file is at /usr/local/share/juman/jumanrc

という表示があります。

jumanコマンドを呼ぶときに、 -r [jumanrcのパス] をつけると、neologd辞書が適応されます。

echo "逃げ恥は毎週みている" | juman -r /usr/local/share/juman/jumanrc

逃げ恥 にげはじ 逃げ恥 名詞 6 固有名詞 3 * 0 * 0 "代表表記:逃げ恥/にげはじ"
は は は 助詞 9 副助詞 2 * 0 * 0 NIL
毎週 まいしゅう 毎週 名詞 6 時相名詞 10 * 0 * 0 "代表表記:毎週/まいしゅう カテゴリ:時間"
みて みて みる 動詞 2 * 0 母音動詞 1 タ系連用テ形 14 "代表表記:見る/みる 補文ト 自他動詞:自:見える/みえる"
@ みて みて みる 動詞 2 * 0 母音動詞 1 タ系連用テ形 14 "代表表記:診る/みる 補文ト ドメイン:健康・医学"
いる いる いる 接尾辞 14 動詞性接尾辞 7 母音動詞 1 基本形 2 "代表表記:いる/いる"
EOS

いいですね!一語で獲得することができました。

形態素解析器では、品詞間の連続コストを考慮しているので、「辞書に存在する=必ず獲得できる」わけではないようです。

参考までにgithubのリポジトリでは、うまく獲得できた例を掲載しています。


Juman++で使う

手作業が必要になります。

Juman++をダウンロードすると、 dict-build というディレクトリがあります。

このディレクトリ下のディレクトリ userdicneologd-user-dict.dic を配置します。

(neologd-user-dict.dic はneologd2jumanのmake過程で生成されます)

その後に、dict-buildmakeinstall.sh を実行します。

% cd dict-build

% cp [PATH-TO-YOUR neologd-user-dict.dic FILE] userdic/neologd-user-dict.dic
% make
% [sudo] ./install.sh

Jumanの時と違い、特別なコマンドは不要です。

% echo "逃げ恥は毎週みている" | jumanpp                                 

逃げ恥 にげはじ 逃げ恥 名詞 6 固有名詞 3 * 0 * 0 "代表表記:逃げ恥/にげはじ"
は は は 助詞 9 副助詞 2 * 0 * 0 NIL
毎週 まいしゅう 毎週 名詞 6 時相名詞 10 * 0 * 0 "代表表記:毎週/まいしゅう カテゴリ:時間"
みて みて みる 動詞 2 * 0 母音動詞 1 タ系連用テ形 14 "代表表記:診る/みる 補文ト ドメイン:健康・医学"
@ みて みて みる 動詞 2 * 0 母音動詞 1 タ系連用テ形 14 "代表表記:見る/みる 補文ト 自他動詞:自:見える/みえる"
いる いる いる 接尾辞 14 動詞性接尾辞 7 母音動詞 1 基本形 2 "代表表記:いる/いる"
EOS

逃げ恥 はneologd辞書追加前は1語ではなかったので、今度は成功しました。

参考までに、neologd辞書適応前は下のようになります。

逃げ にげ 逃げ 名詞 6 普通名詞 1 * 0 * 0 "代表表記:逃げ/にげv 自他動詞:他:逃がす/にがす 連用形名詞化:形態素解析"

恥 はじ 恥 名詞 6 普通名詞 1 * 0 * 0 "代表表記:恥/はじ 漢字読み:訓 カテゴリ:抽象物 漢字"
は は は 助詞 9 副助詞 2 * 0 * 0 NIL
毎週 まいしゅう 毎週 名詞 6 時相名詞 10 * 0 * 0 "代表表記:毎週/まいしゅう カテゴリ:時間 漢字"
みて みて みる 動詞 2 * 0 母音動詞 1 タ系連用テ形 14 "代表表記:診る/みる 補文ト ドメイン:健康・医学"
@ みて みて みる 動詞 2 * 0 母音動詞 1 タ系連用テ形 14 "代表表記:見る/みる 補文ト 自他動詞:自:見える/みえる"
いる いる いる 接尾辞 14 動詞性接尾辞 7 母音動詞 1 基本形 2 "代表表記:いる/いる"
EOS


まとめ


  • neologd辞書をjuman/juman++利用できるようにした

  • 新語にうまく対応できている様子

  • ぜひご利用ください〜

最後に、このスクリプトはInsight Techから公開されています。Insight Techでは、不満買取センターユーザーの声を元にした調査事業をしています。

マーケティング調査のご用命をお待ちしております。