# Fact Based Oie Eval

> Evaluates Open Information Extraction systems on their ability to correctly extract complete facts from sentences, moving beyond token-level overlap to fact-level exact matching against exhaustive gold synsets. It measures whether a system can identify all surface realizations of a fact and penalizes extractions that contain correct tokens but express incorrect or incomplete facts. Use when the user wants to benchmark on CaRB, or asks about evaluating this task. Reports Precision, Recall, F1 score (fact-based).

- Skill: `qhjqhj00/fact-based-oie-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/fact-based-oie-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/fact-based-oie-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/fact-based-oie-eval

---


# fact-based-oie-eval

> AnnIE: An Annotation Platform for Constructing Complete Open Information Extraction Benchmark — Friedrich et al. (2021) (arXiv:2109.07464, 2021)

## What this evaluates

Evaluates Open Information Extraction systems on their ability to correctly extract complete facts from sentences, moving beyond token-level overlap to fact-level exact matching against exhaustive gold synsets. It measures whether a system can identify all surface realizations of a fact and penalizes extractions that contain correct tokens but express incorrect or incomplete facts.

## Datasets

- **CaRB** — total ?; splits: (unstated)

## Metrics

- `Precision, Recall, F1 score (fact-based)` **(primary)** — range: [0, 1]
  - Precision = TP / (TP + FP), Recall = TP / (TP + FN), F1 = 2 * (P * R) / (P + R). TP is the number of fact synsets covered by at least one system extraction. FN is the number of fact synsets not covered by any system extraction. FP is the number of system extractions that do not exactly match any gold triple.

## Input / output format

**Input**: Natural language sentence.

**Output**: List of Open Information Extraction triples (subject; predicate; object) extracted by the system.

## Scoring recipe

```python
covered_synsets = set()
for sys_ext in system_extractions:
    for synset in gold_synsets:
        if sys_ext in synset:
            covered_synsets.add(id(synset))
            break
TP = len(covered_synsets)
FN = len(gold_synsets) - TP
FP = len([e for e in system_extractions if not any(e in s for s in gold_synsets)])
Precision = TP / (TP + FP) if (TP + FP) > 0 else 0
Recall = TP / (TP + FN) if (TP + FN) > 0 else 0
F1 = 2 * Precision * Recall / (Precision + Recall) if (Precision + Recall) > 0 else 0
```

## Common pitfalls

- Token-overlap metrics incorrectly reward extractions that contain all gold tokens but express a different or incomplete fact.
- Counting multiple system extractions of the same fact as multiple true positives instead of rewarding the fact only once.
- Failing to account for entity coreference or paraphrased surface realizations when defining gold fact synsets.

## Evidence (verbatim from paper)

> Because benchmarks based on fact synsets are supposed to be complete, a system OIE extraction is considered correct if and only if it exactly matches any of the gold extractions from any of the fact synsets. The number of true positives (TPs) is the number of fact synsets (i.e., different facts) “covered” by at least one system extraction. This way, a system that extracts N different triples of the same fact, will be rewarded only once for the correct extraction of the fact. False negatives (FNs) are then fact synsets not covered by any of the system extractions. Finally, each system extraction that does not exactly match any gold triple (from any synset) is counted as a false positive (FP). We then compute Precision, Recall, and F1 score from TP, FP, and FN in the standard fashion.

## Citation

```bibtex
@misc{friedrich2021annie,
  title={AnnIE: An Annotation Platform for Constructing Complete Open Information Extraction Benchmark},
  author={Friedrich et al. (2021)},
  year={2021},
  note={arXiv:2109.07464}
}
```

- arXiv: 2109.07464

