メモ‎ > ‎

日本語形態素解析器に関するメモ

日本語の形態素解析器に関連するメモです。
相当古いです。申し訳ないですが、私の興味は形態論から別のところに移動しつつあります。


解析器と辞書

形態素解析器は、解析器が採用する機械学習モデルと各種形態論情報が付与された辞書とが分離されていることをまず理解してください。

解析器

  • JUMAN-7.0
    • 規則による形態素解析器
  • ChaSen
    • HMM による形態素解析器
    • 制約つき解析を利用しないのであれば、2.3系を利用する方が良い
  • MeCab
    • HMM/CRF/オンライン学習器 に基づく形態素解析器
機械学習の性能からいうと CRF に基づく形態素解析器 MeCab が最良です。

辞書

  • JUMAN辞書 (on JUMAN-7.0) / jumandic (on MeCab)
    • 益岡・田窪文法に基づく品詞体系
    • オリジナルの JUMAN 辞書は表記ゆれ情報/意味情報を保持し、後続の KNP-3.01 を用いることにより、語義の曖昧性解消が行われる
    • 固有名詞以外の語彙については約30000語に統制されたものがある
    • 7.0 系で大分拡充されています。
  • UniDic http://www.tokuteicorpus.jp/dist/
    • 国語研短単位に基づく単位設計
    • 可能性に基づく品詞体系
    • 読み情報・発音情報だけでなくアクセント型などの情報を保持
    • 固有名詞の標準形は「語形(かな)」が同じであれば認定
    • 2.0系でライセンスがいわゆるフリーになりました。
  • NAIST-jdic/IPADIC
    • IPA品詞体系に基づく
    • 表記ゆれ/複合語情報を保持する
    • IPADIC のライセンス問題(ICOT 条項) を全数チェックにより解決したものが NAIST-jdic
    • 既に継続的にメンテナンスされていません。

形態素解析と辞書をどのように選べばよいのか

一般に性能が良い、精度がよいものがよいというのであれば、MeCab + UniDic を利用すればよい。但し、出力される単位・品詞が後続の処理において有効であるものと無効であるものがある。付与されている各種情報に基づいて、用途による使い分けをお勧めする。
  • 音韻的な情報が重要な場合
    • UniDic + MeCab を利用するが、固有名詞にクセがあるために、NAIST-jdic の名詞-固有名詞を借りてくる
  • 統語的な情報が重要な場合
    • JUMAN辞書(JUMAN-6.0) を利用するが、足りない語彙を NAIST-jdic の名詞-固有名詞から借りてくる
言語処理学会年次大会などで発表されている応用タスクで「○○という手法を用いてN%上がりました!」という発表がたくさんありますが、少なく見積もってその3割くらいのタスクで、本人たちがその手法の開発にかけた時間を形態素解析辞書のメンテナンスにかけるだけで同じ 「N% 上がりました!」が達成できると思う。

自分で形態素解析器を再学習したい人へ

辞書とコーパスの準備

MeCab/ChaSen の訓練に必要なものは seed 辞書とコーパスです。
  • JUMAN 辞書の場合、JUMAN 辞書を seed 辞書とし、京都大学テキストコーパスを訓練コーパスとする。京都大学テキストコーパスは 1995年の毎日新聞記事データを元にしているために 1995年の毎日新聞記事データを買う必要がある
  • UniDic 辞書の場合、UniDic 辞書を seed 辞書とし、日本語コーパスコアデータを訓練コーパスとする。日本語コーパスコアデータは現時点では「正式公開版 DVD」に収録されているものを用いるとよい。
  • NAIST-jdic の場合、NAIST-jdic を seed 辞書とし、RWCテキストコーパスに含まれる毎日新聞形態素解析差分データ (3000記事) を奈良先端大で改変したものを元にしている。1994年の毎日新聞記事データを元にしているために 1994年の毎日新聞記事データを買う必要がある
    • このRWCテキストコーパス(費用は約2000円だったと思う)は 2010.09.01現在、どこに問い合わせても手に入らないので、どのようにして手に入れるかについて、よく企業から問い合わせがある。以下のいずれかの方法をとってください:
      1. RWCテキストコーパスを再配布するかどうかを NICT もしくは GSK (言語資源協会) などに問い合わせてRWCテキストコーパスを入手する。もちろん、1994年の毎日新聞 CD-ROM コーパスを購入する。そのうえで、NAIST (私宛)に依頼いただければ、NAIST-jdic の訓練データをお渡しします。
      2. RWCテキストコーパスを入手せずに、1994年の毎日新聞 CD-ROM コーパスを購入したうえでNAIST に依頼する。
      3. 1994年の毎日新聞 CD-ROM コーパスを MeCab と NAIST-jdic で解析する。MeCab は訓練データに対しては 99.5%以上の精度解析できるために、容易に復元できる。
    • こちらとしては 1. をお願いしたいところなのですが、多くの企業が 3. を選択する。2. でいいのかどうかわからないが、NAIST-jdic と異なり全数チェックをしたということが証明できない。
    • 2012.01.01 に NAIST から異動したので、NAIST でこのデータを引き続き管理しているかどうかわからないです。

タグ付きコーパスを自分で準備する

タグ付きコーパスを自分で作成するための補助ツールが 2 種類あります:
現ジャストシステム社の松田寛氏(horosi-m) が開発した、内部で形態素解析器 ChaSen を呼び出して、1文ずつ解析し、あるコスト幅の n-best 解を出力させて、その中から正しい解を選択するためのGUIツール。
MeCab には対応していないが、ChaSen の -w -v オプションの出力を内部で呼び出しているだけなので、MeCab のソフト分かち書き(-aオプション)と -F オプションを駆使して必要な情報を出力させ、足りない情報(単語のオフセット値や累計コスト)などを出力するための Wrapper プログラムを作成すればよい。

-w -v の出力形式ですが:

*  0   0   0     0                 BOS/EOS NIL 0 0 0 0 
   2   0   2  4631 す    ス    ス    す    名詞-一般 NIL 0 0 0 4000 0 631
   3   0   2  4471 す    ス    ス    す    接頭詞-名詞接続 NIL 0 0 0 2994 0 1477
*  9   0   6  4631 すもも    スモモ    スモモ    すもも    名詞-一般 NIL 0 0 0 4000 0 631
  10   2   4  6034 も    モ    モ    も    助詞-係助詞 NIL 0 0 0 0 2 1403
  12   2   6  8286 もも    モモ    モモ    もも    名詞-一般 NIL 0 0 0 3649 2,3 702,166
  16   4   8 10307 もも    モモ    モモ    もも    名詞-一般 NIL 0 0 0 3649 10 624
* 18   6   8  6034 も    モ    モ    も    助詞-係助詞 NIL 0 0 0 0 9,12 1403,1403
  20   6  10  8982 もも    モモ    モモ    もも    名詞-一般 NIL 0 0 0 3649 9,12 702,702
  22   8  10 11710 も    モ    モ    も    助詞-係助詞 NIL 0 0 0 0 16 1403
* 24   8  12 10307 もも    モモ    モモ    もも    名詞-一般 NIL 0 0 0 3649 18 624
  26  10  12 10385 も    モ    モ    も    助詞-係助詞 NIL 0 0 0 0 20 1403
  28  10  14 13333 もも    モモ    モモ    もも    名詞-一般 NIL 0 0 0 3649 20,22 702,624
* 30  12  14 11710 も    モ    モ    も    助詞-係助詞 NIL 0 0 0 0 24 1403
  32  12  16 14658 もも    モモ    モモ    もも    名詞-一般 NIL 0 0 0 3649 24,26 702,624
  34  14  16 14736 も    モ    モ    も    助詞-係助詞 NIL 0 0 0 0 28 1403
* 36  14  18 15983 もも    モモ    モモ    もも    名詞-一般 NIL 0 0 0 3649 28,30 702,624
  38  16  18 16061 も    モ    モ    も    助詞-係助詞 NIL 0 0 0 0 32 1403
  40  16  20 18263 もの    モノ    モノ    もの    名詞-一般 NIL 0 0 0 2903 32,34 702,624
  41  16  20 18214 もの    モノ    モノ    もの    名詞-非自立-一般 NIL 0 0 0 702 32 2854
  42  16  20 17989 もの    モノ    モノ    もの    名詞-接尾-一般 NIL 0 0 0 2552 32 779
  44  18  20 19184 の    ノ    ノ    の    名詞-非自立-一般 NIL 0 0 0 347 36 2854
  45  18  20 17731 の    ノ    ノ    の    助詞-格助詞-一般 NIL 0 0 0 0 36 1748
* 46  18  20 16652 の    ノ    ノ    の    助詞-連体化 NIL 0 0 0 0 36,38 669,1663
  55  20  24 20326 うち    ウチ    ウチ    うち    名詞-副詞可能 NIL 0 0 0 2458 40,41,42,44,46 1852,2525,1917,2525,1216
  56  20  24 19491 うち    ウチ    ウチ    うち    名詞-一般 NIL 0 0 0 2613 40,41,42,46 702,1991,853,226
* 57  20  24 18657 うち    ウチ    ウチ    うち    名詞-非自立-副詞可能 NIL 0 0 0 971 40,41,42,44,46 2288,2433,2297,2433,1034
  58  20  24 20636 うち    ウチ    ウチ    うち    名詞-非自立-一般 NIL 0 0 0 2585 40,42,46 2854,2851,1399
  59  20  24 20802 うち    ウチ    ウチ    うつ    動詞-自立 NIL 五段・タ行 連用形 0 2806 40,41,42,44,45,46 1786,1836,2067,1836,265,1871
* 61  24  24 19688                 BOS/EOS NIL 0 0 0 0 55,56,57,58,59 1214,905,1031,1113,1513
EOS
*  0   0   0     0                 BOS/EOS NIL 0 0 0 0 
*  1   0   0   369                 BOS/EOS NIL 0 0 0 0 0 369
EOS

先頭の * が最尤解、
2列目が 可能な単語の ID だが、上の例では -w 4000 なので、 コスト幅 4000 からあふれるものが
カットされている。
3 列目がオフセット開始位置、4列目がオフセット終了位置 (ちなみに EUC-JP で解析)
5 列目が累計コスト、6 列目が形態素表層形、7列目が読み、8列目が発音
9列目が品詞、
"NIL 0 0 0" のあとの数字(14列目)が word emission cost,
15列目が Viterbi で探索する際に左連接する単語の ID (2列目の ID)を csv で
16列目が 上の ID に対応する tag transition cost.

簡単に言うと 14列目が VisualMorphs の node につけられている cost
15列目が arc を作成するための情報
16列目が arc につけられる cost

となります。。
コーパスコンコーダンサ。ボスはコーパス管理ツールと呼んでと言っているが。例えば、『「で」「は」に後置する「ない」を形容詞から助動詞に変更する』といった一括返還ができる。

尚、浅原はオールドタイプなので、コーパス全体が Buffer に取り込めるようになった昨今、形態論情報は emacs マクロで修正することが多いです。





Comments