ai-news-api / src /intelligence /test_scoring.py
vinitsingare's picture
fix: Restore DistilBERT fake news detector and update dependencies
371bc2b
Raw
History Blame Contribute Delete
2.43 kB
import os
import sys
# Ensure project root is in path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')))
from src.intelligence.fake_news import load_fake_news_detector, detect_fake_news
def test_samples():
model, tokenizer = load_fake_news_detector()
if not model:
print("Model not found. Please train it first.")
return
# test cases
test_cases = [
{
"label": "TRUE (Trusted Source)",
"title": "Kerala student who went missing in Karnataka Chandradrona hills found dead",
"content": "The body of a 22-year-old student from Kerala, who went missing in the Chandradrona hill ranges of Chikkamagaluru district on Wednesday, was found on Thursday.",
"source": "Times of India",
},
{
"label": "TRUE (Regular Source)",
"title": "A new park was inaugurated in the city center",
"content": "A new park was inaugurated in the city center yesterday by the local municipal corporation to provide more green space for residents.",
"source": "Local News",
},
{
"label": "FAKE (Sensationalist)",
"title": "SHOCKING: Secret documents from the moon reveal gravity is a hoax",
"content": "SHOCKING: Secret documents from the moon reveal that gravity is actually a controlled experiment by billionaire tech giants! SHARE THIS NOW!",
"source": "ViralTruth.net",
},
{
"label": "FAKE (Medical Misinfo)",
"title": "Doctors are hiding this 10-second habit that cures cancer",
"content": "Doctors are hiding this 10-second habit that cures cancer completely overnight. No more chemotherapy needed, just eat this one fruit!",
"source": "HealthyTipsDaily",
}
]
print("\n" + "="*80)
print(f"{'TEST CASE':<30} | {'PREDICTION':<10} | {'SCORE':<10}")
print("-" * 80)
for case in test_cases:
is_fake, score, breakdown = detect_fake_news(case['title'], case['content'], model=model, tokenizer=tokenizer, source=case['source'])
status = "FAKE" if is_fake else "REAL"
print(f"{case['label']:<30} | {status:<10} | {score*100:>6.1f}%")
print(f" Explanation: {breakdown.get('explanation_text', '')}")
print("-" * 80)
if __name__ == "__main__":
test_samples()