共参照とイベントリンキングのための文書横断アノテーション
ECB+ がニュース記事をまたいでイベントとエンティティをどのようにリンクしたか、どのツールが文書横断の共参照に対応しているか、そしてイベントリンキングのための Potato の設定を解説します。
文書横断アノテーションは、ある文書内のメンション、イベント、主張を、ほかの文書内の同じエンティティ、イベント、証拠にリンクします。ECB+ コーパスの構築に使われた方法では、アノテーターはすべての文書のペアを比較する代わりに、現実世界の各イベントまたはエンティティに対する共有レコードへメンションを結び付けます。CROMER、CoRefi、そして Potato の multi_document_event スキームはこの種の共有レコードを保持し、INCEpTION と brat は各メンションの知識ベース識別子を通じて文書を結び付けます。
二つの表現が同じものを指すとき、その二つの表現は共参照の関係にあります。文書横断の共参照は、この関係を複数のテキストにまたがって拡張します。初期のテストセットは、John Smith という名前の 35 人の異なる人物に言及する、ニューヨーク・タイムズの 197 本の記事を集めました(Bagga と Baldwin、1998)。イベント共参照は、同じ考え方をアクションに適用します。EventCorefBank(ECB)は、482 本のニュース文書を 43 のトピックにまとめ、トピックごとに一つの中心的なイベントを置き、アノテーターが各イベントのメンションを報道をまたいでリンクしました(Bejan と Harabagiu、2010)。
主張と証拠のリンキングは、自動ファクトチェックのように、ある主張と、それを支持または反証する文を対応づけます。FEVER データセットでは、主張の 12.15% が複数の Wikipedia ページにまたがる証拠を必要としました(Thorne ら、2018)。複数文書のイベント抽出は、同じイベントについての多くの報道に情報抽出を適用し、一つのイベントテンプレート(誰が、何を、どこで、いつ)を埋めます。
以下のガイドは、文書間のリンクを扱います。共参照解析は一つのテキスト内のメンションの連鎖を、関係とイベントの抽出は一つのテキスト内の関係とイベントの項を、エンティティリンキングはメンションを知識ベースの項目に解決することを扱います。スパンアノテーションはメンション自体への印付けを扱い、テキストアノテーションツールの比較は、あらゆるタスクにわたってテキストツールを比較します。Potato は無料のオープンソース(GPL-3.0-or-later)で、自分のサーバーで動作します。
文書横断アノテーションの難しさの要因
文書のペアの数は、文書数の二乗で増えます。n 本の文書のコーパスには n(n − 1)/2 のペアがあります。25 本の報道では 300 ペアになり、ECB+ の 982 本のテキストでは 481,671 ペアになります。ECB と ECB+ は文書をトピック内でのみリンクし、コーパスの作成者は各トピックを一種類のイベントを中心にあらかじめ組み立てていました。共有レコードがあれば、アノテーターは新しい報道を、それまでに記録されたイベントと照らし合わせて確認し、そのリストの長さはコーパス内の現実世界のイベントの数に依存します。
アノテーターは、複数の文書の詳細を同時に念頭に置かなければなりません。ECB+ は、各トピックのイベントタイプの二つ目の事例を報じる 502 本の記事を追加しました(Cybulska と Vossen、2014)。たとえば最初のトピックは、Tara Reid の 2008 年のリハビリ入所の報道と、Lindsay Lohan の 2013 年の入所の報道を対にしています。ECB+ のガイドラインでは、二つのアクションのメンションが共参照するのは、そのアクションが時間、場所、参加者を共有する場合に限られます。そのためアノテーターは、二つの報道をリンクする前に、時間、場所、参加者を確認します。
クラスタに対する一致度は、ラベルに対する一致度より測定が困難です。二人のアノテーターが同じ十本の文書を、一本だけ異なるクラスタに分けることがあり、スコアは指標がリンク、メンション、クラスタ全体のどれを数えるかに依存します。Pradhan ら(2014)の参照スコアラーは、五つの共参照指標(MUC、B3、CEAFe、CEAFm、BLANC)を計算します。B3 は John Smith の研究に由来します。
ECB+ のアノテーション手順
ECB+ は、43 の ECB トピックに 502 本のニュース記事を追加し、合計 982 本のテキストにしました(ECB+ リポジトリ)。アノテーターは、イベントのアクション、時間、場所、人間と人間以外の参加者を 30 のタグで印付けしました。アノテーターは、どちらも英語を母語とする、報酬を受けた二人の学生アシスタントでした。二人のアシスタントは三つのラウンドで作業しました。
- CAT ツールで、アシスタントは新しい 502 本の記事内のイベント構成要素に印を付け、各記事内で共参照するメンションをリンクしました。
- アシスタントは、元の記事の既存の ECB 0.1 アノテーションを見直しました。
- CROMER で、アシスタントは各トピックのすべての記事にまたがって、共参照するメンションをリンクしました。
CROMER では、アノテーターはまず「barack obama」のような名前付きのインスタンスを作成し、その後、共参照する各メンションをそのインスタンスに結び付けます。タスクに取り組むすべての人が、インスタンスを共有します。二人のアノテーターは最初の四つのトピックの 55 本の記事にラベルを付け、30 のタグで Cohen のカッパ 0.74、五つの主要な構成要素のタグで 0.79 に達しました。不一致の大半はメンションの範囲に関するもので、ガイドラインが主辞を指定していたのに、アノテーターが句全体に印を付けることがあったためです。再訓練の後、二人のアノテーターは残りの 447 本の記事を分け合い、各記事に一度だけアノテーションを付けました。
文書横断の層では、二人目のアノテーターは、一人目のアノテーターのリンクを見ずに、一人目のインスタンスを再利用しました。インスタンスが共有されているため、インスタンス ID がカテゴリラベルとして機能し、490 件の文書横断共参照 ID に対する Cohen のカッパは 0.76 でした。ECB+ チームは、あらゆる文書横断プロジェクトに当てはまる三つの選択をしました。第一に、アノテーションの前に文書をトピックにグループ化しました。第二に、アノテーターはメンションを共有の名前付きレコードにリンクしました。第三に、残りの作業を分担する前に、二重にアノテーションされたサブセットで一致度を測定しました。
文書横断リンキングのためのツール
アノテーションツールは、文書横断リンクを二通りの方法で扱います。第一に、あるツールは、どの文書のメンションからも指せる共有のレコードのリストを保持します。第二に、ほかのツールは一度に一つの文書をアノテーションし、知識ベースの識別子を通じて文書を結び付けます。以下の表の各項目は、2026 年 11 月 2 日時点の、そのツール自身の論文またはドキュメントに基づいています。
| ツール | 用途 | 文書をリンクする方法 |
|---|---|---|
| CROMER | 文書のクラスタをまたぐ、イベントとエンティティの共参照の手作業アノテーション。複数のアノテーターが同じクラスタに取り組む | メンションは共有のインスタンスに結び付けられ、インスタンスは DBpedia と Wikipedia にリンクできます。CROMER は ECB+ の文書横断の層を作成しました。 |
| CoRefi | アノテーターのオンボーディングとレビューフェーズを備え、任意のウェブページに埋め込める、クラウドソーシングの共参照アノテーション(Bornstein ら、2020) | リポジトリは CoRefi を、エンドツーエンドの文書横断共参照のためのツールと説明しています。設定と結果は JSON で、ライセンスは MIT です。 |
| INCEpTION | 知識ベースへのリンキングとレコメンダーを備えた、複数層のテキストアノテーション。Apache License 2.0 | コンセプト機能が、メンションをプロジェクトの知識ベースまたは Wikidata のコンセプトにリンクします。2023 年のコードブックは、INCEpTION を使って、Wikidata を介してニュース記事をまたぐエンティティをリンクしました。 |
| brat | ブラウザー上でのスパンと関係のアノテーション | 各文書に一つの .ann ファイルがあります。Equiv 関係がファイル内のメンションをグループ化し、正規化がスパンを Wikipedia の項目のような外部 ID に結び付けます。 |
| Label Studio | 多くのデータ型にわたるラベル付け | Relations タグが二つのラベル付き領域をリンクし、共参照テンプレートが、テキストの一節内のエンティティをリンクします。 |
| Potato | 自分のサーバーでのアノテーション調査 | multi_document_event スキームは、イベントの共有レジストリを保持し、各イベントに所属文書と引用されたテキストスパンを持たせます。 |
リンクする単位で選んでください。メンション単位の文書横断共参照には、CoRefi や CROMER のように、文書をまたいで個々のメンションをリンクするツールが必要です。INCEpTION は、メンションを Wikidata やドメインのオントロジーに解決し、各文書内で連鎖の層やレコメンダーを使いたいプロジェクトに適しています。Potato は、文書全体を共有のイベントにリンクし、各イベントのスロットを埋めるテキストを記録します。この設計は、イベント単位の共参照、複数文書のイベント抽出、主張と証拠のリンキングに適しています。
Potato での文書横断イベント
Potato は、CROMER がインスタンスをモデル化するのとほぼ同じように、文書横断のイベントを共有レジストリのレコードとしてモデル化します。各記事が一つのアイテムです。記事を読むアノテーターは、その記事を既存のイベントに結び付けるか、新しいイベントを作成し、記事内のテキストを選択してイベントのスロットを埋めます。以下の設定は、イベントの構成要素ごとに一つのスロットを持つ、ニュース記事に対する ECB+ 形式のイベント共参照を設定します。
annotation_task_name: "Cross-document event coreference"
task_dir: "."
data_files:
- "data/articles.jsonl"
item_properties:
id_key: id
text_key: text
output_annotation_dir: "annotation_output/"
export_annotation_format: jsonl
user_config:
allow_all_users: true
instance_display:
fields:
- key: text
type: text
span_target: true
event_template:
enabled: true
name: news_event
allow_annotator_create: true
slots: &event_slots
- {name: action, description: "What happened", type: text}
- {name: time, description: "When the action happened", type: text}
- {name: location, description: "Where the action happened", type: text}
- {name: participants, description: "Who took part or was affected", type: text}
annotation_schemes:
- annotation_type: multi_document_event
name: events
description: "Attach this article to the real-world event the article reports, or create a new event, and cite text for each slot."
slots: *event_slots
allow_annotator_create: trueevent_template ブロックがレジストリを作成します。設定に multi_document_event スキームがあるのに、enabled: true を持つ event_template ブロックがない場合、Potato は起動時に検証エラーで停止します。YAML のアンカー &event_slots は、スキームのスロットをテンプレートのスロットと同一に保ちます。テキストフィールドの span_target: true により、アノテーターはテキストを選択して証拠を引用できます。articles.jsonl の各行には id と text があります。サーバーを起動するには potato start config.yaml を実行します。
Potato はレジストリを annotation_output/event_registry.json に書き込みます。各イベントのレコードには、タイトル、スロットの値、所属文書の ID、およびスロット名、文書 ID、文字オフセット、引用テキストを持つ証拠の引用のリストが含まれます。記事から証拠を引用すると、その記事がイベントに追加されます。seed_events ファイルでイベントを事前に読み込めます。たとえば、シードファイルに各トピックの中心的なイベントごとに一つのイベントを入れられます。
レジストリはアノテーター間で共有されます。記事を開いた二人目のアノテーターには、それ以前のアノテーターがその記事に結び付けたイベントが表示されます。二人のアノテーターが同じイベントを同時に編集すると、Potato は二つ目の保存を拒否し、そのイベントの現在のバージョンを再読み込みします。
コーパスマップは、アノテーターが比較する文書のリストを短くします。corpus_map を有効にすると、Potato は sentence-transformer モデルですべての文書を埋め込み、その埋め込みをクラスタリングし、クラスタを /corpus/map の 2D マップに射影し、各文書の最近傍を事前に計算します。アノテーターはその後、コーパス全体ではなく、一つのクラスタまたは一つの文書の近傍を確認します。上の設定に次のブロックを追加してください。
corpus_map:
enabled: true
embedding_model: all-MiniLM-L6-v2
clustering: {num_clusters: auto, items_per_cluster: 6}
knn: {k: 5}コーパスマップには、sentence-transformers を別途インストールしてください。pip install potato-annotation[viz] は、2D レイアウト用に umap-learn を追加します。umap-learn がない場合、Potato は PCA 射影にフォールバックします。マップ上の文書の点をクリックすると、通常の割り当てキューとは別に、その文書がアノテーターにオンデマンドで割り当てられます。
coreference スキームと span_link スキームは、一つのアイテム内のスパンをリンクします。一つの記事内のメンションの連鎖には、共参照チェーンで説明されているとおり、span スキームと coreference スキームを追加してください。ECB+ ショーケース設計は、イベントレジストリをサンプル記事に適用しています。
Potato での一致度とエクスポート
Potato 2.13.1 が一致度を計算するのは、メンションのスパンに対してのみです。span スキームについて、Potato の一致度レポートには、トークンレベルの Cohen のカッパ、完全一致と部分一致でのスパン F1、文字位置に対する Krippendorff のアルファ、そして簡略化されたガンマが含まれます。スパンの一致度では、各指標を説明しています。Potato は、共参照チェーン、スパンリンク、multi_document_event のメンバーシップを採点しません。クラスタの一致度は、エクスポートから Potato の外で計算します。
export_annotation_format: jsonl を指定すると、Potato はアノテーターと記事のペアごとに一件のレコードを annotation_output/exports/jsonl/ に書き込み、そのペアのラベル、スパン、リンクを含めます。events ラベルは、アノテーターが最後にその記事のメンバーシップを変更した時点で、その記事が属していたイベントを一覧し、event_registry.json はイベントそのものを含みます。ECB+ の研究のような一致度の調査では、output_annotation_dir の値を変えた設定のコピーから、アノテーターごとに一つの Potato サーバーを実行します。そうすると各サーバーは別々のレジストリを保持し、二つのクラスタリングを B3 や CEAF のようなクラスタ指標で比較します。裁定と不一致では、その後で相違を解消する方法を扱います。
よくある質問
どのツールが文書横断のアノテーションとリンキングに対応していますか?
CROMER、CoRefi、Potato は、どの文書のメンションからも指せる、イベントまたはエンティティごとの共有レコードを保持し、INCEpTION と brat は、各メンションの知識ベース識別子を通じて文書を結び付けます。CROMER は ECB+ の文書横断の層を作成し、CoRefi は、クラウドソーシングによる文書横断共参照のための MIT ライセンスのツールです。Potato の multi_document_event スキームは、文書全体を共有のイベントにリンクし、各イベントのスロットの引用テキストを保存します。
ECB+ コーパスはどのようにアノテーションされましたか?
報酬を受けた二人の学生アノテーターが、CAT ツールで 30 のタグでイベントの構成要素に印を付け、各記事内で共参照するメンションをリンクし、その後 CROMER で、各トピックの記事をまたいでメンションを共有の名前付きインスタンスにリンクしました。二重にアノテーションされた 55 本の記事のサブセットでは、Cohen のカッパは 30 のタグで 0.74、文書横断共参照で 0.76 でした。再訓練の後、二人のアノテーターは残りの 447 本の記事を分け合い、各記事に一度だけアノテーションを付けました。
関連資料
- 共参照解析
- 関係とイベントの抽出
- エンティティリンキング
- スパンアノテーション
- スパンの一致度
- テキストアノテーションツールの比較
- テキストアノテーションのための Potato
- デジタル人文学のための Potato
- 複数文書イベントアノテーションのソースドキュメント
参考文献
- Bagga, A., and Baldwin, B. (1998). Entity-Based Cross-Document Coreferencing Using the Vector Space Model. ACL-COLING 1998, 79–85. https://aclanthology.org/P98-1012/
- Bejan, C., and Harabagiu, S. (2010). Unsupervised Event Coreference Resolution with Rich Linguistic Features. ACL 2010, 1412–1422. https://aclanthology.org/P10-1143/
- Bornstein, A., Cattan, A., and Dagan, I. (2020). CoRefi: A Crowd Sourcing Suite for Coreference Annotation. EMNLP 2020 System Demonstrations, 205–215. https://aclanthology.org/2020.emnlp-demos.27/
- Cybulska, A., and Vossen, P. (2014). Using a Sledgehammer to Crack a Nut? Lexical Diversity and Event Coreference Resolution. LREC 2014, 4545–4552. https://aclanthology.org/L14-1646/
- Girardi, C., Speranza, M., Sprugnoli, R., and Tonelli, S. (2014). CROMER: a Tool for Cross-Document Event and Entity Coreference. LREC 2014, 3204–3208. https://aclanthology.org/L14-1568/
- Pradhan, S., Luo, X., Recasens, M., Hovy, E., Ng, V., and Strube, M. (2014). Scoring Coreference Partitions of Predicted Mentions: A Reference Implementation. ACL 2014, 30–35. https://aclanthology.org/P14-2006/
- Thorne, J., Vlachos, A., Christodoulopoulos, C., and Mittal, A. (2018). FEVER: a Large-scale Dataset for Fact Extraction and VERification. NAACL 2018, 809–819. https://aclanthology.org/N18-1074/
- Vogel, J. (2023). Code Book for the Annotation of Diverse Cross-Document Coreference of Entities in News Articles. arXiv:2310.12064. https://arxiv.org/abs/2310.12064