File size: 8,792 Bytes
404ac00 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | import gradio as gr
# Africa Environmental Law Claim Verifier β Eval Space
# AutoScientist Challenge 2026 | Standalone honest-finding analysis
# Author: Hussein Adeiza (mabera) β Licensed Environmental Health Officer, Abuja Nigeria
CLAIMS = [
{"claim": "Nigeria's EIA process is governed by the EIA Act No. 86 of 1992.",
"country": "Nigeria", "actual": "TRUE", "predicted": "TRUE", "correct": True,
"note": "Correct. Direct restatement of source text, high keyword overlap correctly read as TRUE."},
{"claim": "Ghana requires EIA approval before mining operations can begin.",
"country": "Ghana", "actual": "TRUE", "predicted": "TRUE", "correct": True,
"note": "Correct. Matches Ghana Minerals and Mining Act 703 of 2006 source content."},
{"claim": "Kenya's EIA process is regulated by the Environmental Management and Coordination Act (EMCA) 1999.",
"country": "Kenya", "actual": "TRUE", "predicted": "TRUE", "correct": True,
"note": "Correct. Matches Kenya EMCA 1999 source content."},
{"claim": "Rwanda has banned single-use plastics since 2008.",
"country": "Rwanda", "actual": "TRUE", "predicted": "TRUE", "correct": True,
"note": "Correct. Matches Rwanda REMA source content."},
{"claim": "The African Union's Maputo Convention addresses conservation of nature and natural resources.",
"country": "Pan-Africa", "actual": "TRUE", "predicted": "TRUE", "correct": True,
"note": "Correct. Matches AU Maputo Convention 2003 source content."},
{"claim": "Rwanda has no EIA requirements for development projects.",
"country": "Rwanda", "actual": "FALSE", "predicted": "TRUE", "correct": False,
"note": "WRONG. This is the negation-blindness failure. The claim shares nearly all vocabulary with the true statement (Rwanda, EIA, requirements, development projects) but the word 'no' inverts the meaning entirely. Keyword overlap cannot detect this."},
{"claim": "Nigeria allows unrestricted importation of hazardous waste as long as it is for industrial reuse.",
"country": "Nigeria", "actual": "FALSE", "predicted": "UNVERIFIABLE", "correct": False,
"note": "WRONG. Source text uses different phrasing (prohibits importation, transit, deposit) so overlap was low, landing in UNVERIFIABLE territory by accident rather than correctly flagging this as a direct contradiction."},
{"claim": "South Africa's EIA Basic Assessment process has no fixed legal timeframe for a decision.",
"country": "South Africa", "actual": "FALSE", "predicted": "TRUE", "correct": False,
"note": "WRONG. Same negation-blindness pattern. Shares vocabulary with the true 107-day timeframe statement, but 'no fixed timeframe' is the opposite claim."},
{"claim": "Senegal's environmental assessment process has no public participation requirement.",
"country": "Senegal", "actual": "FALSE", "predicted": "TRUE", "correct": False,
"note": "WRONG. Again, negation inverts a true statement (public participation IS mandatory for Category 1) into a false one, undetected by keyword overlap."},
{"claim": "ECOWAS has no shared environmental policy and leaves all environmental regulation entirely to individual member states.",
"country": "ECOWAS Region", "actual": "FALSE", "predicted": "TRUE", "correct": False,
"note": "WRONG. Same pattern. High vocabulary overlap with the true ECOWAS Environmental Policy 2008 statement, but negated into a false claim."},
{"claim": "Nigeria's NESREA has approved over 5,000 EIA certificates in the last year.",
"country": "Nigeria", "actual": "UNVERIFIABLE", "predicted": "TRUE", "correct": False,
"note": "WRONG. A specific operational statistic not in the source dataset. Shares enough vocabulary (NESREA, EIA, certificates) with general true statements about NESREA's role to be wrongly read as TRUE."},
{"claim": "Ethiopia is planning to repeal its EIA Proclamation 299/2002 next year.",
"country": "Ethiopia", "actual": "UNVERIFIABLE", "predicted": "TRUE", "correct": False,
"note": "WRONG. A forward-looking legislative prediction, not covered by a dataset documenting the current framework. High overlap on the law's name wrongly suggests confirmation."},
{"claim": "Ghana's EPA processes EIA applications faster than South Africa's DFFE.",
"country": "Ghana / South Africa", "actual": "UNVERIFIABLE", "predicted": "UNVERIFIABLE", "correct": True,
"note": "Correct. A cross-country comparative speed claim with no shared source content at all, correctly flagged as unverifiable."},
]
def get_summary():
total = len(CLAIMS)
correct = sum(1 for c in CLAIMS if c["correct"])
true_claims = [c for c in CLAIMS if c["actual"] == "TRUE"]
false_claims = [c for c in CLAIMS if c["actual"] == "FALSE"]
unverif_claims = [c for c in CLAIMS if c["actual"] == "UNVERIFIABLE"]
true_correct = sum(1 for c in true_claims if c["correct"])
false_correct = sum(1 for c in false_claims if c["correct"])
unverif_correct = sum(1 for c in unverif_claims if c["correct"])
return f"""
## π Overall Result: {correct}/{total} correct ({correct/total*100:.1f}%)
| Claim Type | Accuracy |
|------------|----------|
| TRUE claims | {true_correct}/{len(true_claims)} ({true_correct/len(true_claims)*100:.0f}%) |
| FALSE claims | {false_correct}/{len(false_claims)} ({false_correct/len(false_claims)*100:.0f}%) |
| UNVERIFIABLE claims | {unverif_correct}/{len(unverif_claims)} ({unverif_correct/len(unverif_claims)*100:.0f}%) |
### π The Headline Finding: Negation Blindness
A simple keyword-overlap verifier got **every single TRUE claim right** but **every single FALSE claim wrong**, always defaulting to TRUE.
The reason is structural, not random. Claims like *"Rwanda has no EIA requirements"* share almost all the same vocabulary as the true statement *"Rwanda has EIA requirements"*, same country, same law, same nouns, just inverted by one negation word. Surface-level keyword matching cannot detect that inversion.
This means a verification layer built only on lexical overlap is **systematically blind to the most dangerous category of misinformation**, a confidently worded false claim that uses all the right vocabulary.
"""
def show_claim(index):
c = CLAIMS[int(index)]
status_emoji = "β
" if c["correct"] else "β"
return f"""
### {status_emoji} Claim {int(index)+1} of {len(CLAIMS)}
**Claim:** {c['claim']}
**Country:** {c['country']}
**Actual verdict:** {c['actual']}
**Predicted verdict:** {c['predicted']}
**Verifier was:** {"Correct β
" if c['correct'] else "Wrong β"}
**Analysis:** {c['note']}
"""
with gr.Blocks(title="Africa Law Claim Verifier Eval", theme=gr.themes.Soft()) as demo:
gr.Markdown("""
# βοΈ Africa Environmental Law Claim Verifier
## Standalone Eval β AutoScientist Challenge 2026
**Author:** Hussein Adeiza (mabera) β Licensed Environmental Health Officer, Abuja Nigeria
**Built on:** Africa Environmental Law Model (Legal Category submission)
This is a complementary analysis, not the official challenge metric. It stress-tests
a claim verification approach against 13 real claims about African environmental law,
5 true, 5 false, 3 genuinely unverifiable, all grounded in the structured legal dataset
from this challenge's Legal category submission.
Inspired by the community's honest-finding eval Space pattern. Reporting the result as
it actually came out, including where it failed.
""")
gr.Markdown(get_summary())
gr.Markdown("---\n### Browse individual claims")
with gr.Row():
with gr.Column():
claim_slider = gr.Slider(0, len(CLAIMS)-1, value=0, step=1, label="Claim Index")
with gr.Column():
claim_output = gr.Markdown()
claim_slider.change(show_claim, inputs=claim_slider, outputs=claim_output)
demo.load(lambda: show_claim(0), outputs=claim_output)
gr.Markdown("""
---
### Why This Matters
NGOs, investors and businesses increasingly rely on AI for quick answers about African
regulatory environments. A model that can fluently restate true facts but cannot detect
a negated false claim is a real risk, it sounds equally confident either way. This finding
suggests verification layers need negation-aware reasoning, not just topical relevance
matching, before being trusted for compliance-adjacent use cases.
π€ [Legal Model](https://huggingface.co/mabera/africa-environmental-law-model) |
π [Source Dataset](https://huggingface.co/datasets/mabera/africa-environmental-law-dataset) |
π [Main Demo](https://huggingface.co/spaces/mabera/nigeria-health-ai-demo)
Powered by Adaptive Data β Adaption Labs
""")
demo.launch() |