Spaces:
Running
Running
D Ф m i И i q ц e L Ф y e r
clean: Remove .env and __pycache__ from tracking, add .gitignore
ff19e9c | from flask import Flask, send_from_directory, jsonify, request | |
| from flask_cors import CORS | |
| import requests | |
| app = Flask(__name__, static_folder="static") | |
| CORS(app) | |
| KEY = "AIzaSyBiuY4AxuPgHcrViQJQ6BcKs1wOIqsiz74" | |
| def fact_check(q): | |
| try: | |
| r = requests.get("https://factchecktools.googleapis.com/v1alpha1/claims:search", | |
| params={"query": q[:200], "key": KEY, "languageCode": "fr"}, timeout=10) | |
| if r.status_code == 200: | |
| return [{"claim": c.get("text",""), "rating": c.get("claimReview",[{}])[0].get("textualRating","N/A")} | |
| for c in r.json().get("claims",[])[:5]] | |
| except Exception as e: | |
| print(f"FactCheck error: {e}") | |
| return [] | |
| def home(): | |
| return send_from_directory("static", "index.html") | |
| def static_f(f): | |
| return send_from_directory("static", f) | |
| def verify(): | |
| d = request.get_json() | |
| fc = fact_check(d.get("input_data","")) | |
| return jsonify({ | |
| "informationEntree": d.get("input_data",""), | |
| "scoreCredibilite": 0.72, | |
| "resumeAnalyse": f"{len(fc)} fact check(s) trouvé(s)" if fc else "Mode Demo", | |
| "reglesAppliquees": {"fact_checking": fc}, | |
| "analyseNLP": {"sentiment": {"label": "NEUTRAL", "score": 0.65}, "coherence_score": 0.78, | |
| "bias_analysis": {"score": 0.2, "label": "Low Bias"}, "entities": []}, | |
| "eeat_score": {"experience": 0.72, "expertise": 0.68, "authority": 0.75, "trust": 0.8, "overall": 0.74}, | |
| "trec_metrics": {"precision": 0.82, "recall": 0.75, "map": 0.68, "ndcg": 0.72, "tfidf": 0.45, "mrr": 1.0} | |
| }) | |
| def graph(): | |
| return jsonify({ | |
| "nodes": [ | |
| {"id": "syscred:source_analyzed", "label": "Source Analysée", "type": "Source", "score": 0.72, | |
| "uri": "http://syscred.uqam.ca/ontology#SourceAnalyzed"}, | |
| {"id": "syscred:claim_primary", "label": "Affirmation Principale", "type": "Claim", "score": 0.65, | |
| "uri": "http://syscred.uqam.ca/ontology#PrimaryClaim"}, | |
| {"id": "syscred:evidence_trec", "label": "Preuve TREC", "type": "Evidence", "score": 0.82, | |
| "uri": "http://syscred.uqam.ca/ontology#TRECEvidence"}, | |
| {"id": "syscred:evidence_factcheck", "label": "Google Fact Check", "type": "Evidence", "score": 0.78, | |
| "uri": "http://syscred.uqam.ca/ontology#FactCheckEvidence"}, | |
| {"id": "syscred:entity_syscred", "label": "SysCRED", "type": "Entity", "score": 0.9, | |
| "uri": "http://syscred.uqam.ca/ontology#SysCRED"}, | |
| {"id": "syscred:entity_uqam", "label": "UQAM", "type": "Entity", "score": 0.85, | |
| "uri": "http://dbpedia.org/resource/Université_du_Québec_à_Montréal"}, | |
| {"id": "syscred:metric_eeat", "label": "E-E-A-T Score", "type": "Metric", "score": 0.74, | |
| "uri": "http://syscred.uqam.ca/ontology#EEATMetric"}, | |
| {"id": "syscred:metric_trec", "label": "TREC Precision", "type": "Metric", "score": 0.82, | |
| "uri": "http://syscred.uqam.ca/ontology#TRECPrecision"} | |
| ], | |
| "links": [ | |
| {"source": "syscred:source_analyzed", "target": "syscred:claim_primary", "relation": "contient"}, | |
| {"source": "syscred:claim_primary", "target": "syscred:evidence_trec", "relation": "supporté_par"}, | |
| {"source": "syscred:claim_primary", "target": "syscred:evidence_factcheck", "relation": "vérifié_par"}, | |
| {"source": "syscred:source_analyzed", "target": "syscred:entity_syscred", "relation": "mentionne"}, | |
| {"source": "syscred:source_analyzed", "target": "syscred:entity_uqam", "relation": "mentionne"}, | |
| {"source": "syscred:source_analyzed", "target": "syscred:metric_eeat", "relation": "évalué_par"}, | |
| {"source": "syscred:evidence_trec", "target": "syscred:metric_trec", "relation": "mesuré_par"} | |
| ] | |
| }) | |
| if __name__ == "__main__": | |
| print("🚀 SysCRED + FactCheck: http://localhost:5001") | |
| app.run(host="0.0.0.0", port=5001, debug=False) | |