基本的なシステムの設計例

森 辰則

横浜国立大学 工学部 電子情報工学科


1. 考え方

1.1 抽出パタンの蓄積

1.2 蓄積されたパタンの利用

1.3 例

2. 基本的なツール

2.1 形態素解析器

2.2 構文解析器


1. 考え方

固有表現の自動抽出の実際は,おおまかには,次の2段階からなる.
  1. 抽出パタンの蓄積の段階

    抽出パタンは抽出すべき固有表現に関して,それを特定するための情報である. 一般に,文字や語,あるいはそれらに関する情報(品詞など)の並びとして表現する. 固有表現自身の情報(例えば,品詞情報が「人名」)であったり, それが現れる周りの語等の情報(例えば,後接する語が「さん」,「社長」である)であったり,それらの組合せであったりする.

  2. 抽出パタンの適用段階

    蓄積された抽出パタンを新しい文書に適用し, それが適用可能な箇所から固有表現を見つけだす.

それぞれの手順は,概略,以下のようになる.

1.1 抽出パタンの蓄積

  1. 抽出したい表現が現れる文書を集める.
  2. 文書中において,抽出したい表現の現れる箇所において, 文字や語,あるいはそれらに関する情報(品詞など)の現れ方(並び方)に 規則性(パタン)を見つける.
  3. そのパタンを書き貯める.

1.2 蓄積されたパタンの利用

  1. 与えられた文書に対して,手持ちのパタンを順次適用する.
  2. 適用されたパタンに基づき,特定のタグを割り振る.

1.3 例

例えば,次のような経験的な知識があったとする.
「人名」に分類される単語が二つ隣接していたら,それぞれ, 名字ならびに名前に相当するので,その全体が一つの人名である.
これは,例えば,次のような知識で記述できる.
(.*品詞:人名.*\n.*品詞:人名.*\n) → <PERSON>\n$1</PERSON>\n
ここで,この規則は書換え規則となっており, 左辺に一致する文字列を左辺の文字列に置き換えることにより, 固有表現を表すタグ(ここでは,<PERSON>)を挿入する. ただし,右辺の`$1'は左辺の括弧内のパタンに一致する文字列を表す.

2. 基本的なツール

以下のシステムは学科計算機で利用可能である.

2.1 形態素解析器

日本語の場合,語と語の間に空白がないので, 語の切れ目を見つけること自身が一仕事である. その作業を行ないつつ,各語の品詞などを解析するのが形態素解析器である. ここでは,京都大学で開発されたJUMANを紹介する.

2.1.1 JUMAN

JUMANは一行一文形式の文書を入力すると,単語に分割し,品詞情報などを付加してくれる.

出力例を次に示す.[出力例]

この例のように,品詞詳細情報の中に「人名」という分類が現れるので, これを有力な情報として使うことができる.

ただし,品詞解析が必ず成功しているとは限らない. たとえば,「名詞 人名」と解析すべきところが,「名詞 普通名詞」や「名詞 地名」などと解析されることも多い.

2.1.2 JUMANの使い方

まず,/usr/local/share/lib/juman3.61/jumanrc というファイルを ファイル ~/.jumanrc にコピーし,設定ファイル ~/.jumanrc を作成する.

juman の本体は /usr/local/share/lib/juman3.61/bin/juman であるので, /usr/local/share/lib/juman3.61/bin にパスを通しておくと便利である.

JUMANには幾つかのオプションがあるが,それについては,

juman -h
と -h オプションによりjumanを起動するとオプションの説明が表示される.

2.2 構文解析器

構文解析とは語と語の関係を解析することである. 形態素解析器と構文解析器を組み合わせることにより, 形態素解析結果の品詞の曖昧性が正しく解消されることもある. 形態素解析システムの出力における曖昧性を一部解消してくれる. ここでは,同じく京都大学が開発したKNPという構文解析器を紹介する.

2.2.1 KNP

KNPはjumanの出力を入力とし,構文解析結果を出力する. 起動方法は以下の通りである. ただし,knpの本体は /usr/local/share/lib/knp2.0b6/bin/knp であるので, /usr/local/share/lib/knp2.0b6/bin にパスを通しておくと便利である.

juman -e -B | knp -tab

出力例を次に示す.[出力例]

アスタリスク(`*')で始まる行は文節のはじまりを表し,その文節の情報ならびに, 係受け先の情報などを含む.


森 辰則(mori@forest.dnj.ynu.ac.jp)