1999年 電子情報工学特別実験 森研究室

新聞記事から人物名を抽出しよう!

森 辰則

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

最終更新日: 平成11年11月25日(木)


目次

1. はじめに

2. プログラムの仕様

3. 報告書の提出

4. 設計方針に纏わるヒント


1. はじめに

今年度の実験では,文書からの情報抽出に関するプログラムを作成する. 情報抽出(Information Extraction)とは, 簡単に言うと,個々の文書から中心的な情報だけを抽出する技術である. 簡単な解説記事(「画像ラボ」1999年12月号 掲載)があるので,もう少し詳し い説明はそちらを参照されたい. 情報抽出において,基礎的技術となるのが固有表現抽出(Named Entity Extraction)である. 固有表現とは,組織名(会社名,団体名など),人名,地名,製品名などであり,これらを認識することが情報抽出の基本となる.

そこで,本実験では固有表現抽出の一つとして, 人物名を新聞記事から抽出するプログラムを作成する.

2. プログラムの仕様

作成するプログラムは以下の入出力関係を満足するものとする.

2.1 入力

以下のフォーマットを持つ新聞記事情報の繰り返しである.


<DOC>
<DOCNO> 文書番号</DOCNO>
<SECTION>面情報</SECTION>
<AE>写真・図の有無</AE>
<WORDS>文字数等</WORDS>
<HEADLINE>記事見出し</HEADLINE>
<TEXT>
本文
</TEXT>
</DOC>

ただし,<名前> は「タグ」であり, これと</名前>との間に挟まれた部分が「名前」で識別される情報である. 以下にその説明を示す.

<DOC> ... </DOC>1文書情報
<DOCID> ... </DOCID>文書ID
<HEADLINE> ... </HEADLINE>見出し
<TEXT> ... </TEXT>本文

タグのうち,<DOC>,<TEXT> 以外は必須項目ではなく, 省略されていることもある.

実際の記事の例を示す.

[記事の例](学内利用のみ.他人に再配布しないこと.)

これは日本語の新聞記事であるが,入手可能であれば, 英語の新聞記事を対象とするプログラムとしてもよい.

2.2 出力

以下のいずれかであること. もちろん,記事中の人物名を誤りなく,かつ,洩れなく取り出すことは, 困難であるので,ここでの「すべて」は努力目標である.

  1. 入力した記事に登場するすべての人名のリスト.(最低限の仕様)
  2. 入力した記事に対して,すべての人名の周囲に <PERSON>...</PERSON> というタグを挿入したもの. 記事データにおける他の部分はそのまま保存する.(望ましい仕様)

ただし,以下の条件を満足すること.

先ほど,記事に対する正解出力は次の通りである. [正解出力(望ましいフォーマット)](学内利用のみ.他人に再配布しないこと.)

3. 報告書の提出

作成したプログラムについて,以下の点を含む報告書を提出せよ. 用紙はA4とし,表紙には最低でも, 報告書の題目,報告者の学籍番号ならびに名前を記述すること.

3.1 報告すべき項目

ただし,評価の指標である,再現率,適合率,F値は

である. 最終的には高いF値を得られるのがよい.

3.2 提出方法

4. ヒント

4.1 システム設計例

プログラミング言語,設計方針などは自由であるが, それでは手がかりがないという方は,次の文書を参考にされたい.

4.2 データ

新聞記事に各種固有表現の情報を付加したファイルを参考までにあげる.

[参考データ]

このファイルは学内利用のみであり,他人に再配布しないこと.

このファイルには,PERSONの他に,以下のタグがついており, 複数のタグが同じ表現に掛かるときには長い方を選択するように表示してある. 例えば,

ドゥダエフ政権
の場合は,「ドゥダエフ」が人名であり,「ドゥダエフ政権」が組織名であるが, 後者についての情報だけがタグづけされている.

ORGANIZATION組織名
LOCATION地名
ARTIFACT固有物名
DATE日付
TIME時間
MONEY金額
PERCENT割合

4.3 評価システム

すべてのファイルの漢字コードをEUCで管理し, システムの出力を推奨フォーマットにすると,IREXの際に開発された次のツール群を使うことができる. 作成したシステムの結果の評価はこのツールで簡単に行なうことができる. ここでは,簡単な使い方を示す.

[ツール群](tar+gzip形式)
  1. 準備
    1. 正解ファイルの作成

      記事ファイルに対して, 手作業などで正解のタグ(<PERSON>...</PERSON>)をすべて挿入しておく. ここでは,元の記事ファイルの名前を sample.sgml, 正解タグを挿入したファイルの名前を sample-cor.sgml としよう.

      タグの挿入には pntag.el をmule/nemacsに読み込んで作業すると便利である.

    2. 正解インデクスファイルの作成

      ツール群の中のプログラム tea を使って正解インデクスファイルを作成する. まず,インデクスファイルの雛型をコピーする.

      雛型ファイル[person0.idx]

      ここではコピー先のファイル名をsample-cor.idxとする.

      つぎに,以下のようにすると,tea により正解インデクスがsample-cor.idx に抽出される.

      tea -e sample-cor.idx sample-cor.sgml
  2. 抽出システムによる人名抽出

    実験で作成した抽出システムに記事ファイルを入力し, <PERSON>タグを挿入する. このとき生成された(推奨フォーマットによる)出力ファイルの名前を sample-sys.sgml とする.

  3. システムが出力したファイルからインデクスファイルの生成

    まず,インデクスファイルの雛型ファイル(person0.idx)をコピーする. ここでは,そのファイルの名前を sample-sys.idx とする.

    つぎに,以下のように,tea を用いてシステムが出力したタグ情報のインデクスをsample-sys.idx に抽出する.

    tea -e sample-sys.idx sample-sys.sgml
  4. インデクスファイルの比較

    正解のインデクスファイル sample-cor.idx とシステム出力のインデクスファイル sample-sys.idx を比較し,システムの性能評価を行なう. 比較にはPerlのスクリプトファイル NEscorer.perl を以下のように用いる.

    perl ../../NE_TOOLS/NEscorer/NEscorer.perl sample-cor.idx sample-sys.idx

    これにより,総合評価が sample-sys.scrに,個別表現の評価がsample-sys.rep に得られる. 表中の記号の意味は以下の通りである. 報告書の性能評価には両者をつけるとなお良い.

    GLD は正解,SYSはシステムが出したもの,COR(cor)はシステム出力で正しかったもの, MIS(mis) はシステムが見つけられなかったもの,OVG(ovg)はシステムが誤って出力したもの, RECは再現率(百分率),PREは適合率(百分率),F-MEADURESはF値(百分率). OFFSETはその表現の出現位置を記事の先頭からバイト数で数えたもの.

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