辞書とカスタム辞書について(Jugemより移植)

Posted by johtani on Thursday, June 2, 2011

目次

辞書の特性について

現在lucene-gosenでは以下の2つの辞書が利用可能です。 簡単に違いについて説明します。

IPAdicの辞書について

  • バージョン:2.6.0(※IPAdicとして公開されている最新は2.7.0)
  • 最終更新日:2003/06/19
  • 登録単語数:約24万語
  • NAIST-Jdicができたためか、更新されていない

NAIST-Jdic-for-ChaSenの辞書について

  • バージョン:0.4.3(※NAISTとして公開されている最新はMeCab用の辞書0.6.3)
  • 最終更新日:2008/07/07
  • 登録単語数:約28万語
  • IPAdicの後継として整備。品詞の定義など大まかな仕様は共通。
  • IPAdicと異なり、アルファベットや数字が1文字ずつ単語として登録されている。

IPAdicとNAIST-Jdicで大きな違いはアルファベットと数字の扱いについてです。 次のような文章をそれぞれの辞書で解析した結果は次のようになります。(SolrのField Analysisの画面です。思いの外大きいのでサムネイルのみですが。) 「このComputerは、10回に1回の割合で起動中に青い画面が表示されます。」 ○IPAdicの場合

IPAdicの解析結果

○NAIST-Jdicの場合
NAIST-Jdicの解析結果

「Computer」と「10」という単語の区切り方が異なることがわかります。 この違いは、辞書のエントリが異なるために発生します。 NAIST-Jdicでは、数字(例:「1」)やアルファベット(例:「a」)が個々のエントリで登録されているため、分割された単語として認識されます。

※この問題への対応方法はまた後日。

カスタム辞書について

実際のデータを形態素解析したい場合、辞書に存在しない単語を登録して、1単語として認識させたい場合があります。(固有名詞など) このような場合にカスタム辞書を利用することで、新しい単語を辞書に登録することが可能になります。 カスタム辞書を利用する手順としては次のようになります。

  1. カスタム辞書ファイルの作成
  2. 作成した辞書ファイルを利用したjarファイルの生成

まずは辞書ファイルの作成についてです。 以下では、naist-chasen(NAIST-Jdic)の辞書を例として説明します。(ディレクトリの違いだけで、IPAdicでも同じ方法でOKです。)

lucene-gosenでは辞書のコンパイルに2つのフェーズが存在します。

  1. gosen用辞書を生成する前処理(中間csvファイルの生成)
  2. gosen用バイナリ辞書の生成

カスタム辞書は1の出力の形式(=中間csvファイル=dictionary.csv)にあわせたCSVファイルとして作成します。 CSVの各カラムは次のような意味を持っています。

単語 単語の生起コスト 品詞 品詞細分類1 品詞細分類2 品詞細分類3 活用型 活用形 基本形 読み 発音
3カラム目以降は「素性(そせい?)」と呼ばれる項目です。ipadic、naist-jdicでは「品詞」「品詞細分類1」「品詞細分類2」「品詞細分類3」「活用型」「活用形」「基本形」「読み」「発音」となります。 ※「見出し語」「形態素生起コスト」「素性」と呼ばれる項目を表形式にする。 厳密な品詞の体系に関してはIPAdicやNAIST-Jdicのサイトをご覧ください(説明できるレベルにはまだまだなっていないので。。。) 今回は、固有名詞(人名、地名など)を追加するという例でカスタム辞書について説明します。 固有名詞として「達川」という人名を追加してみましょう。 まずは、次のようなエントリをもつ「custom-dic.csv」ファイルを作成します。ファイルはUTF-8で保存してください。 コストはすでにあるエントリで似たようなエントリのコストを真似します。(今回は固有名詞,人名で似ているものを採用)。ちなみに、コストは小さいほど単語として出てきやすくなります。 ※カスタム辞書にはSenで利用していたものが利用できます。
**"達川",2245,名詞,固有名詞,人名,名,*,*,"達川","タツカワ","タツカワ"**

上記ファイルを、先日紹介した$LUCENE-GOSEN/dictionary/ディレクトリにコピーします。 では、カスタム辞書を含んだlucene-gosenのjarを作成しましょう。 カスタム辞書のビルドは$LUCENE-GOSEN/dictionary/で行います。 また、カスタム辞書の指定はCSVファイル名をantの引数で指定します。次がコマンドの例になります。


$ cd lucene-gosen-trunk
$ cd dictionary
$ ant -Ddictype=naist-chasen clean-sen
$ ant -Ddictype=naist-chasen -Dcustom.dics="../custom-dic.csv" compile
$ cd ..
$ ant -Ddictype=naist-chasen

上記コマンドの例で"clean-sen"というタスクを実行しています。これは、すでに出来上がっているgosen用のバイナリ辞書を削除するタスクになります。すでにgosen用の辞書が作成されている場合には辞書の再生成が行われないためです。 また、複数のファイルを利用したい場合は-Dcustom.dics="custom-dic.csv custom-dic2.csv"という形でスペース区切りでファイル名を記述すればOKです。

カスタム辞書を適用する前と適用後の違いは次のとおりです。 適用前

カスタム辞書適用前

適用後
カスタム辞書適用後

簡単ですが、以上がカスタマイズ辞書を利用する方法でした。 ちなみに、この記事を書く前にすでにカスタム辞書の件を書いているブログがありました。。。こちらも参考にしてください。 今回の例でいくつかSolrのanalysis画面を利用して説明してきました。Solrでのlucene-gosenの利用方法についてはまた後日記載したいと思います。 ※参考までに。Solrでの利用方法はこちらにも記載してあります。

また、IPAdicなどの辞書について記載のある書籍を見つけましたので、参考になれば。


comments powered by Disqus