上位下位関係抽出ツール Version1.0 : Hyponymy extraction tool
目次
上位下位関係抽出ツールは,Wikipediaダンプデータ(XMLファイル)から機械学習を使って上位下位関係となる用語ペアを数百万対のオーダーで抽出できるツールです.
上位下位関係とは,"XはYの一種(一つ)である"と言えるXとYの関係を言います.
Xのことを下位語,Yのことを上位語と呼びます.
別の言い方をしますと,上位下位関係は「上位概念ー下位概念」または「概念ーインスタンス(具体例)」の関係を持つ語の対となります.
抽出できる上位下位関係の単語対の総体は,単語の分類,シソーラスと見なすこともできます.
また,本ツールの出力する上位語,下位語はいわゆる「単語」にとどまらず「志摩市のスポーツイベント」のように詳細な意味を表す複合的な言語表現を含みます.
本ツールは,我々の知る限り,日本語に関する上位下位関係を世界最大規模で抽出できます.
2010年6月24日バージョンのWikipediaに対して適用した場合,精度90%程度で約600万対の上位下位関係が抽出されます.
この約600万対の上位下位関係は,上位語異なり数約20万語,下位語異なり数約245万語をカバーしています.
情報検索やテキストマイニング,オントロジー構築などでご活用下さい.
(上位下位関係の抽出例)
上位語 下位語
仏像 七面大明神像
ジャズフェスティバル BAY_SIDE_JAZZ_CHIBA
楽器 カンテレ
文房具 スティックのり
神楽団体 川平神楽社中
プログラミング言語 prolog
戦争映画 ハワイ・ミッドウェイ大海空戦
AOCワイン ラ・グランド・リュー ブルゴーニュ
ゲーム ファイナルファンタジーXI
研究所 情報通信研究機構
(Version 1.0より出力が可能になったより詳細な上位下位関係の抽出処理の結果例)
上位語 下位語
志摩市のスポーツイベント 志摩市ロードパーティ
シアトル・マリナーズの選手 エドガー・マルティネス
さまぁ〜ずのレギュラー番組 リンカーン
ドバイワールドカップのステップレース サンタアニタハンデキャップ
オープンカーの車種 ロータス・エリーゼ
トルコの都市 アンカラ
上位下位関係となる用語ペアの抽出処理では,Wikipediaのページから以下の3種類を情報源として上位下位関係候補を抽出し,各候補が上位下位関係であるか否かを統計的に判定しています.
- hierarchy :箇条書きなどの階層構造から上位下位関係の候補を抽出
(例) 下記のWikipediaの記事の階層構造からは,"チーズ / プロセスチーズ"や"チーズ / パニール"などが上位下位関係候補として抽出されます.(他にも,"ナチュラルチーズ / フレッシュチーズ","フレッシュチーズ / パニール"などの候補も抽出されます.)
- definition :最初の文(定義文)から上位下位関係の候補を抽出(「~とは,….」などを利用)
(例) 下記の記事の定義文からは,"食品 / チーズ"が上位下位関係候補として抽出されます.
- category :category tagにある単語から上位下位関係の候補を抽出
(例) 下記の記事のcategoryからは,"発酵食品 / チーズ"が上位下位関係候補として抽出されます.
- 2010-10-01 上位下位関係抽出ツールv1.0 リリース
- 上位下位関係の抽出の対象単語を拡張し,さらに大量の学習データにより生成したモデルファイルを新たに追加しました.
これらの変更により,抽出可能な上位下位関係数がv0.82と比較して約40%増加しました.
- 高速識別器peccoをデフォルトの識別器とし,大量の学習データにより生成したモデルファイルを使った判定処理も高速に行えるようになりました.
- hierarchyに対する処理結果を拡張し,より詳細な上位下位関係の抽出処理を実装しました.
(例) 下記の例では,v0.82で抽出された上位語"選手"と下位語"タイ・カップ"の中間語として,より詳細な上位語"[MLBのチーム]の選手"と,"デトロイト・タイガースの選手"を新たに抽出しています.
(従来の上位下位関係)
選手 / タイ・カップ
(より詳細な上位下位関係)
選手 / [MLBのチーム]の選手 / デトロイト・タイガースの選手 / タイ・カップ
- 2010-06-25 上位下位関係抽出ツールv0.82 リリース
省メモリモードの問題を修正しました.
- 2009-05-28 上位下位関係抽出ツールv0.81 リリース
zsh以外のシェルにも対応するようになりました.(bash,zsh推奨)
- 2009-04-23 上位下位関係抽出ツールv0.80 リリース
- Wikipediaのデータを利用するため,処理及び処理結果の利用に際しては,Wikipediaの著作権を熟読の上,著作権法を考慮の上,十分に注意をしてください.
- 本ツールの性格上,Wikipediaに記載されたあらゆる情報に対して上位下位関係を出力する可能性があり,処理結果を利用の際は 第三者への誹謗中傷,差別用語,個人情報などに十分な注意をお願いいたします.
- 抽出される上位下位関係の候補にはノイズが含まれます.また,上位語には非飽和性(曖昧な表現)のある語,成語性のない語なども含まれます.
- ツールの出力は電子的な方法によって行われており,その内容の正確性,真実性,相当性が保証されるものではありません.また,ツールの出力は国立研究開発法人情報通信研究機構の主体的な意思決定・判断を示すものではありません.
- 国立研究開発法人情報通信研究機構では,本ツールにより抽出される情報の信頼性について責任を持ちません.また,本ツールの使用に関連して生ずる損失,損害等について,いかなる場合においても一切責任を負いません.
# 解凍
> tar zxvf ex-hyponymy-1.0.tar.gz
インストール
スクリプト言語rubyを使用しているため,本ツール自体のインストールは必要ありません
- Linux (RedHat Enterprise Linux WS release 4,kernel version 2.6.9-67.0.7.ELsmpで動作確認)
- 最低メモリ量500MB(5GB以上推奨),ハードディスク空き容量10GB以上.(メモリが5GB未満の機器で使用する場合は省メモリモードでご使用ください. オプション -s)
- 本ツールを実行するには,以下のプログラム,データが必要となります.
(各バージョンは動作確認のとれたもの.上位下位関係抽出ツールキットをダウンロードしたディレクトリで各プログラムを実行するためのパス設定が必要です.)
- peccoインストール(peccoのページからの引用)
> wget http://www.tkl.iis.u-tokyo.ac.jp/~ynaga/pecco/pecco.tar.bz2
> tar jxvf pecco.tar.bz2
> cd pecco
> vi pecco_conf.h (pecco_conf.hの編集)
> vi makefile.pecco (makefile.peccoの編集。32bitのPCの場合は、コンパイルオプション追加)
> make -f makefile.pecco
- pecco_cong.h編集時の注意点
全てデフォルトの状態でも動作します.double array libraryなどの設定を変更する場合は下記をご参照下さい.また,USE_FLOATとABUSE_DAはコメントアウト(offの状態)でお願いいたします。丸め誤差が大きくなるとのことです。
(double array library)
下記から一つ選択.
- dda : pecco中にインプリメントされたライブラリ.darts-cloneやDartsと比較して20%程度処理時間が遅くなり,メモリ使用量も多くなります.(デフォルト)
- darts-clone : 高速かつ最も省メモリで実行可能.darts-cloneからダウンロードし,インストールする必要がある.
- Darts : 高速.Dartsからダウンロードし,インストールする必要がある.
- makefile.pecco編集時の注意点
コンパイルエラーがでないように,makefile.peccoを実行環境に合わせたオプションに変更します.
(変更例)
CC = ccache g++ → CC = g++
CFLAGS = -O2 -m64 -march=core2 -DNDEBUG → CFLAGS = -O2
- インストールの詳細は,peccoのページをご参照下さい.
解析用wiki dumpデータ
解凍したディレクトリscript内にある,コマンド(ex_hyponymy.sh)により実行.
> script/ex_hyponymy.sh [オプション] Wikipediaファイル
# jawiki-20100624-pages-meta-current.xml.bz2から全ての情報源(hierarchy,
definition,category)を利用して上位下位関係候補を抽出するコマンド例
> script/ex_hyponymy.sh jawiki-20100624-pages-meta-current.xml.bz2
本システムでは,各情報源(hierarchy, definition, category)から抽出した候補が上位下位関係であるか否かを統計的に判定する処理において,下記のモデルファイルを使用します.
- data : 小規模な学習データにより作成したhierarchy用モデルファイル
- data2 : 中規模な学習データにより作成したhierarchy用モデルファイル
- data3 : 大規模な学習データにより作成したhierarchy用モデルファイル
- data_def : definition用モデルファイル
- data_cat : category用モデルファイル
hierarchyを情報源とする解析処理において,3種類のモデルファイル(data,data2,data3)を選択できます.
3種類のモデルファイルは,それぞれを作成した際の学習データ量が違い,結果として出力の精度が変わります.
大きな学習データにより作成したモデルファイルほど精度は良くなりますが,抽出に要する処理時間は長くなり,また必要なメモリも増えます.
ご自分の環境に合わせたモデルファイルをご利用ください.(デフォルトは小規模な学習データにより作成したモデルファイルdataです.)
# 中規模な学習データにより作成したモデルファイル(data2)を使用
# 出力結果は,dataを利用した結果に比べて約10%増.
> script/ex_hyponymy.sh -t ./data2 jawiki-*-pages-meta-current.xml.bz2
# 大規模な学習データにより作成したモデルファイル(data3)を使用
# 出力結果は,dataを利用した結果に比べて約20%程度増.
> script/ex_hyponymy.sh -t ./data3 jawiki-*-pages-meta-current.xml.bz2
hierarchyに対する処理結果: res_hier_withWD_posWD
definitionに対する処理結果: res_def_withWD_posWD
categoryに対する処理結果: res_cat_withWD_posWD
hierarchyに対する拡張結果(v1.0で追加): res_hier_withWD_posWD_expand
# 出力フォーマット(res_*_withWD_posWD)
上位語 下位語 評価スコア(peccoまたはTinySVMの出力値)
(例) 作品 ミッドウェイ 1.13208
# 出力フォーマット(res_hier_withWD_posWD_expand)
上位語 中間語1 中間語2 下位語
(例)作品 [アメリカ合衆国の映画監督,ミネソタ州の人物]の作品 ジャック・スマイトの作品 ミッドウェイ_Midway
「中間語1」は上位語に対する下位語,中間語2と下位語に対する上位語です.
「中間語2」は上位語と中間語1に対する下位語,下位語に対する上位語です.
「中間語1」,「中間語2」は,抽出できているもののみ出力されます.
※ この例の「中間語1」では,「アメリカ合衆国の映画監督の作品」「ミネソタ州の人物の作品」の
2つが抽出されています.
評価スコアは,抽出した上位下位関係の信頼度の指標となります(値が大きいほど高信頼度).
本ツールでは,我々が所有する実験用データを利用して,評価スコアが大きいものから順に精度がおおよそ90.0%となるところまで抽出しています.
例えば,後述する実験では,このスコアが0.49以上の値を持つ上位下位関係が抽出されています.
さらに高精度な出力が必要な場合は,このスコアの値がさらに大きいもののみを抽出して下さい.
-aオプションを使用すると,実験用データによる精度が93.0%以上となるスコアを持つ上位下位ペアが抽出されます.
使用するモデルファイルごとに評価スコアの値が持つ意味合いが異なりますので,ご注意下さい.
プログラム実行時には,次のオプションが指定可能です.
オプション |
説明 |
-h |
ヘルプメッセージを表示 |
-d [ディレクトリ名] |
mecab辞書ディレクトリ指定 |
-t [ディレクトリ名] |
機械学習用モデルファイルのディレクトリ指定(デフォルトは./data) |
-w [ディレクトリ名] |
中間出力ディレクトリ指定 (デフォルトはカレントディレクトリ) |
-o [ディレクトリ名] |
最終出力ディレクトリ指定 (デフォルトはカレントディレクトリ) |
-p |
中間ファイルを削除しない(preserve) |
-H |
hierarchy実行 |
-D |
definition実行 |
-C |
category実行 |
-s |
省メモリモード
メモリが5GB未満の場合は,省メモリモードを指定ください.
(v0.82で追加) |
-E |
hierarchy処理結果の拡張を実行
hierarchy,definition,categoryの処理結果が必要です.
(v1.0で追加) |
-v |
分類器としてTiny SVMを使用
オプションを指定しない場合はpeccoを使用します.
(v1.0で追加) |
-a |
実験用データの抽出精度が93.0%となる評価スコアのしきい値を利用.
指定しない場合は,実験データの抽出精度が90.0%となる値に設定されています.
(v1.0で追加) |
(-H, -D, -C ,-E いずれも指定されなければ,全て実行)
ディレクトリ |
説明 |
script/ |
プログラム |
data/ |
モデルファイル用ディレクトリ:小規模な学習データから作成したhierarchy用モデルファイルが保存(処理時間が短いモデルファイル) |
data2/ |
モデルファイル用ディレクトリ:中規模な学習データから生成したhierarchy用モデルファイルが保存.処理時間は増大するが,出力結果は少し増える.peccoの使用推奨. |
data3/ |
モデルファイル用ディレクトリ:大規模の学習データから生成したhierarchy用モデルファイルが保存.処理結果数は最も多い.peccoの使用必須.(v1.0で追加) |
data_cat/ |
モデルファイル用ディレクトリ:category用のモデルファイル保存.(v1.0で追加) |
data_def/ |
モデルファイル用ディレクトリ:definition用のモデルファイル保存.(v1.0で追加) |
# 3種類の上位下位関係候補抽出処理をipadic辞書を指定して実行
# 既にEUC版のIPA辞書によりmecabを利用している場合は,UTF8でIPA辞書をインストールし,-dオプションによりIPA辞書を指定.
> script/ex_hyponymy.sh -d /usr/local/mecab-0.97/lib/mecab/dic/ipadic jawiki-*-pages-meta-current.xml.bz2
# Category情報のみを利用して上位下位関係の候補を抽出
> script/ex_hyponymy.sh -C jawiki-*-pages-meta-current.xml.bz2
# 新たに追加されたモデルファイル(data3)を利用して解析. hierarchyの処理結果を拡張.
> script/ex_hyponymy.sh -E -t ./data3 jawiki-*-pages-meta-current.xml.bz2
上位下位関係抽出ツールVersion1.0を使用して,2010年6月24日バージョンのWikipediaを解析した結果,下記の数の上位下位関係を抽出できます.
上位下位関係数(-aオプション無し,モデルファイルdata3使用)
(情報源) : (抽出数)
hierarchy : 4,477,351ペア (下位語異なり2,281,178語)
definition : 333,536ペア (下位語異なり324,486語)
category : 1,271,725ペア (下位語異なり509,106語)
全体 : 6,082,603ペア (下位語異なり2,457,243語)
hierarchyを拡張した中間語数
中間語1(例:[MLBのチーム]の選手) : 8,894,187個
中間語2(例:デトロイト・タイガースの選手): 3,424,710個
※ 実行環境によって判定処理の際に丸め誤差が生じ,抽出数が上記と異なることがあります.
上位下位関係抽出ツールVersion1.0による2010年6月24日バージョンのWikipediaの解析時間は,下記の通りです.
モデルファイル |
SVM |
pecco |
data(小規模な学習データにより作成) |
2,736分 |
2,371分 |
data2(中規模な学習データにより作成) |
3,461分 |
2,396分 |
data3(大規模な学習データにより作成) |
10,000分以上 |
2,408分 |
(Intel Xeon 2.66GHz, メモリ使用量最大5GB程度, NFSディスク環境により計測)
- Asuka Sumida, Naoki Yoshinaga and Kentaro Torisawa, "Boosting
Precision and Recall of Hyponymy Relation Acquisition
from Hierarchical Layouts in Wikipedia," in Proceedings of the Sixth
International Language Resources and Evaluation, 2008.
- Asuka Sumida and Kentaro Torisawa, "Hacking Wikipedia for Hyponymy
Relation Acquisition," in Proceedings of IJCNLP-08, pp.883-888, 2008.
- 隅田飛鳥, 吉永直樹, 鳥澤健太郎, Wikipediaの記事構造からの上位下位関係抽出, 自然言語処理, vol.16(3), pp.3-24, 2008.
- Jong-Hoon Oh, Ichiro Yamada, Kentaro Torisawa and Stijn De Saeger, "Co-STAR: A Co-training Style Algorithm for Hyponymy Relation Acquisition from Structured and Unstructured Text," In Proceedings of COLING-2010, pp.842-850, 2010.
- Jong-Hoon Oh, Kiyotaka Uchimoto and Kentaro Torisawa, "Bilingual Co-Training for Monolingual Hyponymy-Relation Acquisition," In Proceedings of ACL-IJCNLP-2009, pp.432-440, 2009.
- Ichiro Yamada, Chikara Hashimoto, Jong-Hoon Oh, Kentaro Torisawa, Kow Kuroda, Stijn De Saeger, Masaaki Tsuchida and Jun'ichi Kazama,
"Generating Information-Rich Taxonomy from Wikipedia," in Proceedings of IUCS-2010, 2010(To appear).
MASTAR プロジェクト
NICT 情報分析研究室(2011年度より言語基盤グループから改称)
国立研究開発法人情報通信研究機構