finreflectkg-eval
FinReflectKG: Agentic Construction and Evaluation of Financial Knowledge Graphs — Arun et al. (2025) (arXiv:2508.17906, 2025)
What this evaluates
Evaluates the quality, schema compliance, diversity, and factual grounding of automatically extracted financial knowledge graph triples from SEC 10-K filings. It measures rule-based compliance, entity and relation coverage, semantic diversity via entropy, and comparative quality using an LLM-as-a-Judge framework.
Datasets
- S&P 100 SEC 10-K Filings (2024) — total 100; splits: test (-1)
Metrics
CheckRules (primary) — range: [0, 1]
- CR(t) = (1/R) * sum(phi_i(t)) for i=1 to R, where phi_i(t) is 1 if triple t complies with rule i, else 0. R=4 rules: Subject Reference, Entity Length Constraint, Entity Schema Compliance, Relationship Schema Compliance.
Entity Coverage Ratio (ECR) — range: [0, 1]
- Proportion of unique entities relative to total extracted elements, measuring extraction completeness.
Shannon Entropy — range: other
- H(X) = -sum(p_i * log2(p_i)) over normalized frequency distributions of entities, types, or relationships to quantify semantic diversity.
LLM-as-a-Judge Score — range: percent
- Comparative scores for Precision, Faithfulness, Comprehensiveness, and Relevance. Evaluated via Qwen3-32B (temp=0.1) with 3 independent votes and a 4th tie-breaker vote when consensus is not reached.
Input / output format
Input: Extracted triples (subject, relation, object) per document chunk, source text chunk, and predefined entity/relation schema.
Output: Per-triple compliance flags, aggregate coverage ratios, entropy values, and LLM-as-a-Judge comparative scores (percentages).
Scoring recipe
def compute_checkrules(triples, rules):
scores = []
for t in triples:
compliant = [1 if check_rule(t, r) else 0 for r in rules]
scores.append(sum(compliant) / len(rules))
return scores
def compute_llm_judge(triples, source_text, judge_model='Qwen3-32B', temp=0.1):
votes = []
for _ in range(3):
votes.append(judge_model.generate(prompt=f'Rate precision, faithfulness, etc. for {triples} given {source_text}', temperature=temp))
if len(set(votes)) > 1:
votes.append(judge_model.generate(prompt='Tie-breaker for...', temperature=temp))
return majority_vote(votes)
Common pitfalls
- Abstract references like 'the company' or 'we' are explicitly flagged as non-compliant in CheckRules, requiring canonicalization to specific names or tickers.
- Lower Shannon/Rényi entropy in the reflection method is intentional to reduce redundancy and improve graph navigability, not a metric failure.
- LLM-as-a-Judge evaluation deliberately avoids Chain-of-Thought prompting to prevent overthinking, and requires a 4th tie-breaker vote when initial 3 votes disagree.
Evidence (verbatim from paper)
To address these systematic issues, CheckRules evaluates each extracted triple against a set of rules: Subject Reference, Entity Length Constraint, Entity Schema Compliance, Relationship Schema Compliance. Each extracted triple is individually evaluated against these rules. For a triple t with R rules, the CheckRules score is: CR(t) = (1/R) sum(phi_i(t)) where phi_i(t) in {0,1} indicates compliance.
Citation
@misc{arun2025finreflectkg,
title={FinReflectKG: Agentic Construction and Evaluation of Financial Knowledge Graphs},
author={Arun et al. (2025)},
year={2025},
note={arXiv:2508.17906}
}
1---2name: finreflectkg-eval3description: Evaluates the quality, schema compliance, diversity, and factual grounding of automatically extracted financial knowledge graph triples from SEC 10-K filings. It measures rule-based compliance, entity and relation coverage, semantic diversity via entropy, and comparative quality using an LLM-as-a-Judge framework. Use when the user wants to benchmark on S&P 100 SEC 10-K Filings (2024), or asks about evaluating this task. Reports CheckRules.4---56# finreflectkg-eval78> FinReflectKG: Agentic Construction and Evaluation of Financial Knowledge Graphs — Arun et al. (2025) (arXiv:2508.17906, 2025)910## What this evaluates1112Evaluates the quality, schema compliance, diversity, and factual grounding of automatically extracted financial knowledge graph triples from SEC 10-K filings. It measures rule-based compliance, entity and relation coverage, semantic diversity via entropy, and comparative quality using an LLM-as-a-Judge framework.1314## Datasets1516- **S&P 100 SEC 10-K Filings (2024)** — total 100; splits: test (-1)1718## Metrics1920- `CheckRules` **(primary)** — range: [0, 1]21 - CR(t) = (1/R) * sum(phi_i(t)) for i=1 to R, where phi_i(t) is 1 if triple t complies with rule i, else 0. R=4 rules: Subject Reference, Entity Length Constraint, Entity Schema Compliance, Relationship Schema Compliance.22- `Entity Coverage Ratio (ECR)` — range: [0, 1]23 - Proportion of unique entities relative to total extracted elements, measuring extraction completeness.24- `Shannon Entropy` — range: other25 - H(X) = -sum(p_i * log2(p_i)) over normalized frequency distributions of entities, types, or relationships to quantify semantic diversity.26- `LLM-as-a-Judge Score` — range: percent27 - Comparative scores for Precision, Faithfulness, Comprehensiveness, and Relevance. Evaluated via Qwen3-32B (temp=0.1) with 3 independent votes and a 4th tie-breaker vote when consensus is not reached.2829## Input / output format3031**Input**: Extracted triples (subject, relation, object) per document chunk, source text chunk, and predefined entity/relation schema.3233**Output**: Per-triple compliance flags, aggregate coverage ratios, entropy values, and LLM-as-a-Judge comparative scores (percentages).3435## Scoring recipe3637```python38def compute_checkrules(triples, rules):39 scores = []40 for t in triples:41 compliant = [1 if check_rule(t, r) else 0 for r in rules]42 scores.append(sum(compliant) / len(rules))43 return scores4445def compute_llm_judge(triples, source_text, judge_model='Qwen3-32B', temp=0.1):46 votes = []47 for _ in range(3):48 votes.append(judge_model.generate(prompt=f'Rate precision, faithfulness, etc. for {triples} given {source_text}', temperature=temp))49 if len(set(votes)) > 1:50 votes.append(judge_model.generate(prompt='Tie-breaker for...', temperature=temp))51 return majority_vote(votes)52```5354## Common pitfalls5556- Abstract references like 'the company' or 'we' are explicitly flagged as non-compliant in CheckRules, requiring canonicalization to specific names or tickers.57- Lower Shannon/Rényi entropy in the reflection method is intentional to reduce redundancy and improve graph navigability, not a metric failure.58- LLM-as-a-Judge evaluation deliberately avoids Chain-of-Thought prompting to prevent overthinking, and requires a 4th tie-breaker vote when initial 3 votes disagree.5960## Evidence (verbatim from paper)6162> To address these systematic issues, CheckRules evaluates each extracted triple against a set of rules: Subject Reference, Entity Length Constraint, Entity Schema Compliance, Relationship Schema Compliance. Each extracted triple is individually evaluated against these rules. For a triple t with R rules, the CheckRules score is: CR(t) = (1/R) sum(phi_i(t)) where phi_i(t) in {0,1} indicates compliance.6364## Citation6566```bibtex67@misc{arun2025finreflectkg,68 title={FinReflectKG: Agentic Construction and Evaluation of Financial Knowledge Graphs},69 author={Arun et al. (2025)},70 year={2025},71 note={arXiv:2508.17906}72}73```7475- arXiv: 2508.17906