【コラム】

Yet Another 仕事のツール

47 茶筌の辞書に単語を登録する

    鶴田展之  [2004/12/14]

    前回はごくごく簡単なテキストマイニングの例を紹介したが、実は結果があまり正しく分析できていなかったりする。なぜなら、茶筌の辞書「IPA品詞体系辞書(ipadic)」に登録されていない単語は「未知語」として扱われてしまったり、アルファベットの1文字ずつに分割されてしまったりするため、単語としての集計の対象から漏れてしまうのだ。例えば、「MySQLもPostgreSQLもデータベースである。」という文を解析した結果は以下のようになる。

    $ chasen -i w
    MySQLもPostgreSQLもデータベースである。
    M       エム      M       記号-アルファベット
    y       ワイ      y       記号-アルファベット
    S       エス      S       記号-アルファベット
    Q       キュー     Q       記号-アルファベット
    L       エル      L       記号-アルファベット
    も       モ       も       助詞-係助詞
    PostgreSQL                      未知語
    も       モ       も       助詞-係助詞
    データベース  データベース  データベース  名詞-一般
    で       デ       だ       助動詞     特殊・ダ    連用形
    ある      アル      ある      助動詞     五段・ラ行アル 基本形
    。       。       。       記号-句点
    EOS

    「PostgreSQL」はかろうじて単語として扱われているが、品詞が「未知語」だ。MySQLは一文字ずつに分解されてしまった。このようなコンピュータ用語や、あまり一般的でない固有名詞などの単語は、独自に辞書に登録して正しく解析に反映されるようにしよう。今回はipadicへの単語登録の手順を紹介する。

    用意するものは、ipadicのインストールに使用したソース一式だけだ。ソースファイル群は以下のように構成されている。

    grammar.cha

    grammar.chaは品詞定義ファイルであり、ipadicで扱う品詞の分類が階層的に定義されている。品詞を追加したり、品詞の名称を変更したりする場合はgrammar.chaを編集する必要がある。

    ctypes.cha / cforms.cha

    活用する品詞に関して、活用型の一覧を定義したファイルがctypes.cha、具体的な活用形が記述されているのがcforms.chaだ。

    辞書ファイル

    「.cha」という拡張子のついたファイルが、実際の単語を定義した辞書ファイルだ。辞書ファイルは各品詞毎に細かく分割されている。たとえば、人名は「Noun.name.dic」、地名は「Noun.place.dic」といった具合だ。なお、ユーザが独自に辞書ファイルを追加することもできる。その場合も、拡張子を「.dic」にしておくだけでOKだ。

    さて、単語登録を行う場合、品詞や活用形をいじる必要が生じることはほとんどないだろう。つまり、編集するのは辞書ファイルだけだ。ここでは、「Linux」「Apache」「MySQL」「PostgreSQL」といった単語を、新たな辞書ファイル「オープンソース名詞辞書」を作成して定義してみよう。まず、エディタで新しい辞書ファイル「Noun.oss.dic」を開く。

    $ cd /usr/local/src/ipadic-2.6.3
    $ vi Noun.oss.dic

    辞書ファイルは、あらかじめ定められたフォーマットで記述する。今回追加する四語の例では以下のようになる。これをNoun.oss.dicに記述しよう。

    (品詞 (名詞 固有名詞 一般)) ((見出し語 (Linux 5000)) (読み リナックス) )
    (品詞 (名詞 固有名詞 一般)) ((見出し語 (Apache 5000)) (読み アパッチ) )
    (品詞 (名詞 固有名詞 一般)) ((見出し語 (PostgreSQL 5000)) (読み ポストグレスエスキューエル) )
    (品詞 (名詞 固有名詞 一般)) ((見出し語 (MySQL 5000)) (読み マイエスキューエル) )

    各行の先頭では品詞の定義を行い、「見出し語」として登録したい単語を記述する。単語の後に記述された数値は、「形態素生起コスト」と呼ばれる値で、文中に出現しやすい、つまりよく使われる単語ほど値を小さく設定する。ここでは至極適当に"5000"としているが、他の辞書ファイルを参照しながら、似たような使われ方をする単語と近い値に設定しておくと良いだろう。

    辞書ファイルの用意ができたら、あとは前々回を参照して辞書をコンパイルし、インストールするだけだ。先ほどの例文を再度茶筌で解析してみよう。

    $ chasen -i w
    MySQLもPostgreSQLもデータベースである。
    MySQL   マイエスキューエル       MySQL   名詞-固有名詞-一般
    も       モ       も       助詞-係助詞
    PostgreSQL      ポストグレスエスキューエル   PostgreSQL      名詞-固有名詞-一般
    も       モ       も       助詞-係助詞
    データベース  データベース  データベース  名詞-一般
    で       デ       だ       助動詞     特殊・ダ    連用形
    ある      アル      ある      助動詞     五段・ラ行アル 基本形
    。       。       。       記号-句点
    EOS

    きちんとMySQLもPostgreSQLも固有名詞として認識されている。いちいち辞書をコンパイルしなおすのはちょっと面倒だが、頻出する単語は使いながら徐々に追加していくとよいだろう。

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン