mecab-ipadic-NEologd v0.0.2 をリリースした

今日、6/23の朝 [2015-06-23] に、mecab-ipadic-NEologd の v0.0.2 をリリースしました🎉。

https://github.com/neologd/mecab-ipadic-neologd/releases/tag/v0.0.2

前回の v0.0.1 からの大きな差分は以下の5点です。

- 3ヶ月分の新語
- Unicode 6.0以前の絵文字に読みと品詞情報を付与
- IPA辞書に未再録で区切り間違う or 読みを付与できない副詞
- unk.defを変更して記号を記号,一般に
- IPA辞書の一部のエントリの読み仮名誤りを修正

3ヶ月分の新語


v0.0.1以降に新しく再録したエントリは、diff以下で記録しています。

https://github.com/neologd/mecab-ipadic-neologd/tree/master/diff

v0.0.2以降の新語についても diff以下に出力しますのでご参照ください。

Unicode 6.0 以前の絵文字に読みと品詞情報を付与



Unicode 6.0 以前の絵文字への読み付与を行いました。
Unicode絵文字の文中での使われ方によって、品詞情報や付与されると期待される読み仮名が変わることから、一つの絵文字に複数の品詞情報と読み仮名を付与する必要がありました。

このようなタスクに利用できる既存のリソースにmozcの絵文字に関するエントリが挙げられます。

- mozc/emoji_data.tsv at master · google/mozc
-- https://github.com/google/mozc/blob/master/src/data/emoji/emoji_data.tsv

日本語入力用の辞書は複数のキーワードから一つの絵文字にたどり着く用途のエントリになっています。それに対して、形態素解析用の辞書は一つの絵文字にマッチするエントリ群を、その絵文字が出現した文脈にふさわしい順に並べ替えるのが目的になっています。

例えば、日本語入力が⚾️や🏀に「ボール」という文字列で見つかれば良いのに対して、形態素解析ではこれらの絵文字をボールとして扱ったり、競技名として扱ったりする必要があります。

そのため、mozcのリソースを参考にしながら結局全部自分で手打ちする必要がありました。

その結果、意外と面白い仕上がりになっています。



今後は Unicode 7.0 以降の絵文字に対応したり、文脈ごとによりふさわしい品詞情報が選ばれるようにコストを調整したり、より妥当な読み仮名を付与したりします。

IPA辞書に未再録で区切り間違う or 読みを付与できない副詞



IPA辞書とその他のオープンソースな形態素解析辞書の一番大きな違いは、実は用言系のエントリにあると僕は個人的に感じています。

今回は用言の中でもあまり空間が大きくない副詞エントリを充実することに着手しました。

行ったことは以下の二つです。

- IPA辞書に再録されていない副詞を集めて、副詞のシードとする
- 笹野さんの論文で述べられている未知語処理のルールの一部を参考にして、副詞のシードを展開する
-- 参考文献 : 「笹野遼平, 黒橋禎夫, 奥村学: 日本語形態素解析における未知語処理の一手法 -既知語から派生した表記と未知オノマトペの処理-, 自然言語処理, Vol.21, No.6, pp.1183-1205 」
-- https://www.jstage.jst.go.jp/article/jnlp/21/6/21_1183/_article/-char/ja/

このくらいやると、以下のようになります。



「じゅわっ」とか「じゅわっと」が副詞なの?っていうことも議論できると思いますが、副詞的な機能をもつトークンの過分割を抑制することを主目的としており、まずはアウトプットしようということで、このまま出しています。

品詞情報の調整とか、Web固有の曖昧な表記の回収をしてエントリを取捨選択する必要は大いにありますし、原型をどこにマッピングするのかも悩みどころです。

もう少し詳しく書きますね。

IPA辞書に再録されていない副詞を集めて、副詞のシードとする


この作業のために各種形態素解析辞書と Web上をクロールしたエントリからテーブルを作り、そのテーブルから副詞として再録するのが妥当なエントリを高精度なルールと、人手によるチェックで選びました。

今のところ既存の形態素解析辞書が対応できている副詞が再録されていないことが多々あります。

そのようなエントリは「副詞なのか形容詞なのか名詞なのか、、」と迷っているものだったりします。

笹野さんの論文で述べられている未知語処理のルールの一部を参考にして、副詞のシードを展開する


展開する際には色々試したのですが、生成されたエントリ全体を見て、辞書エントリ化しても大きな影響がなさそうに感じた生成ルールだけ足しています。

先行研究は文脈が与えられたうえで行う推定なので、あらかじめエントリ化する場合との違いを感じながらトライ&エラーしていました。

展開する際のルールの一部を挙げておきます。

- 文字 ngram の繰り返し検知と、繰り返し回数の追加
- 「HHっと」などの副詞シードに対して「HHッと」「KKっと」「KKッと」を生成
- 「HHっと」などの副詞シードに対して、長音記号と小書き文字を挿入
- 「HHっ」な副詞シードに対して「HHッ」「HHっと」「HHッと」を生成
- など

unk.defを変更して記号を記号,一般に



今まで、mecab-ipadic-NEologdではunk.defに手を加えていませんでした。

ただ、記号は記号になって欲しいなという気持ちがあったので、SYMBOLだけいじりました。

https://github.com/neologd/mecab-ipadic-neologd/blob/master/misc/dic/unk.def

IPA辞書の一部のエントリの読み仮名誤りを修正


これはWeb上でMeCabの読み付与に関するtweetを見ていて気がついたのですが、確かに読み仮名がかなり明らかに最適ではないエントリがありました。

ただ、誤りがある位置のヒントがあって誤りを探すのと、全体を漠然と探すのとでは難易度が大きく違います。

https://github.com/neologd/mecab-ipadic-neologd/tree/master/misc/patch

前者は今後も個人的に続ければ良くて、後者はハッカソンとかで複数の辞書エントリ作成タスクの適合者な方と一緒に、目標を定めながら(例 : 今回は動詞!とか)行うのが良いのかなと思っています。




おわりに


3ヶ月分の成果の一部をまとめて v0.0.2 をリリースしました。

次の v0.0.3 は形容詞対応が終わったら出そうと思います。

定期的なアップデートは次の3ヶ月も継続します。まずは一年続けてみます。

3ヶ月経ってみたら、GitHub の unique cloners が1000を超えていて(ありがとうございます)、いろいろな人が形態素解析を利用しているのだなという雰囲気は感じました。でも、どこでご利用頂いてるのかは教えて頂けた分以外は全くわかりません。

mecab-ipadic-NEologd をご利用頂いている方は事例をネット上で呟いたり、イベントでご発表いただいたり、 @overlast まで DM などでコッソリ教えて頂けますと、とてもやる気が出ますので、是非教えてくださいね。

今後もよろしくお願いいまします。


投稿者:としのり  日時:23:59:59 | コメント | トラックバック |
blog comments powered by Disqus