今年度の実験では,文書からの情報抽出に関するプログラムを作成する. 情報抽出(Information Extraction)とは, 簡単に言うと,個々の文書から中心的な情報だけを抽出する技術である. 簡単な解説記事(「画像ラボ」1999年12月号 掲載)があるので,もう少し詳し い説明はそちらを参照されたい. 情報抽出において,基礎的技術となるのが固有表現抽出(Named Entity Extraction)である. 固有表現とは,組織名(会社名,団体名など),人名,地名,製品名などであり,これらを認識することが情報抽出の基本となる.
そこで,本実験では固有表現抽出の一つとして, 人物名を新聞記事から抽出するプログラムを作成する.
作成するプログラムは以下の入出力関係を満足するものとする.
以下のフォーマットを持つ新聞記事情報の繰り返しである.
<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> 以外は必須項目ではなく, 省略されていることもある.
実際の記事の例を示す.
[記事の例](学内利用のみ.他人に再配布しないこと.)
これは日本語の新聞記事であるが,入手可能であれば, 英語の新聞記事を対象とするプログラムとしてもよい.
以下のいずれかであること. もちろん,記事中の人物名を誤りなく,かつ,洩れなく取り出すことは, 困難であるので,ここでの「すべて」は努力目標である.
ただし,以下の条件を満足すること.
作成したプログラムについて,以下の点を含む報告書を提出せよ. 用紙はA4とし,表紙には最低でも, 報告書の題目,報告者の学籍番号ならびに名前を記述すること.
ただし,評価の指標である,再現率,適合率,F値は
(正しく抽出できた名前の個数)/(記事中の名前の数)
(正しく抽出できた名前の個数)/(システムが抽出した名前の数)
2*R*P/(R+P)
プログラミング言語,設計方針などは自由であるが, それでは手がかりがないという方は,次の文書を参考にされたい.
新聞記事に各種固有表現の情報を付加したファイルを参考までにあげる.
[参考データ]
このファイルは学内利用のみであり,他人に再配布しないこと.
このファイルには,PERSONの他に,以下のタグがついており, 複数のタグが同じ表現に掛かるときには長い方を選択するように表示してある. 例えば,
ドゥダエフ政権の場合は,「ドゥダエフ」が人名であり,「ドゥダエフ政権」が組織名であるが, 後者についての情報だけがタグづけされている.
ORGANIZATION | 組織名 |
LOCATION | 地名 |
ARTIFACT | 固有物名 |
DATE | 日付 |
TIME | 時間 |
MONEY | 金額 |
PERCENT | 割合 |
すべてのファイルの漢字コードをEUCで管理し, システムの出力を推奨フォーマットにすると,IREXの際に開発された次のツール群を使うことができる. 作成したシステムの結果の評価はこのツールで簡単に行なうことができる. ここでは,簡単な使い方を示す.
[ツール群](tar+gzip形式)
記事ファイルに対して, 手作業などで正解のタグ(<PERSON>...</PERSON>)をすべて挿入しておく. ここでは,元の記事ファイルの名前を sample.sgml, 正解タグを挿入したファイルの名前を sample-cor.sgml としよう.
タグの挿入には pntag.el をmule/nemacsに読み込んで作業すると便利である.
ツール群の中のプログラム tea を使って正解インデクスファイルを作成する. まず,インデクスファイルの雛型をコピーする.
雛型ファイル[person0.idx]
ここではコピー先のファイル名をsample-cor.idxとする.
つぎに,以下のようにすると,tea により正解インデクスがsample-cor.idx に抽出される.
tea -e sample-cor.idx sample-cor.sgml
実験で作成した抽出システムに記事ファイルを入力し, <PERSON>タグを挿入する. このとき生成された(推奨フォーマットによる)出力ファイルの名前を sample-sys.sgml とする.
まず,インデクスファイルの雛型ファイル(person0.idx)をコピーする. ここでは,そのファイルの名前を sample-sys.idx とする.
つぎに,以下のように,tea を用いてシステムが出力したタグ情報のインデクスをsample-sys.idx に抽出する.
tea -e sample-sys.idx sample-sys.sgml
正解のインデクスファイル 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はその表現の出現位置を記事の先頭からバイト数で数えたもの.