PhD Thesis Prototype - Dominique S. Loyer
@software{loyer2025syscred,
author = {Loyer, Dominique S.},
title = {SysCRED: Neuro-Symbolic System for Information Credibility Verification},
year = {2026},
publisher = {GitHub},
url = {https://github.com/DominiqueLoyer/systemFactChecking}
}Note
New in v2.2 (Jan 29, 2026):
- GraphRAG: Contextual memory from Knowledge Graph.
- Interactive Graph: D3.js visualization with physics and details on click.
- Cloud Ready: Docker & Supabase integration.
A neuro-symbolic AI system for verifying information credibility that combines:
- Symbolic AI: Rule-based reasoning with OWL ontologies (RDF/Turtle)
- Neural AI: Transformer models for sentiment analysis and NER
- IR Engine: BM25, TF-IDF, and PageRank estimation
The system provides explainable credibility scores (High/Medium/Low) with detailed factor breakdown.
Perfect for exploring the code, basic credibility checking without ML features:
pip install syscredIncludes PyTorch, Transformers, and all ML models for full credibility analysis:
pip install syscred[ml]Includes ML, production tools, and development dependencies:
pip install syscred[all]- Click the Kaggle or Colab badge above
- Enable GPU runtime
- Run All cells
# Clone the repository
git clone https://github.com/DominiqueLoyer/systemFactChecking.git
cd systemFactChecking/02_Code
# Run with Startup Script (Mac/Linux)
./start_syscred.sh
# Access at http://localhost:5001from syscred import CredibilityVerificationSystem
# Initialize
system = CredibilityVerificationSystem()
# Verify a URL
result = system.verify_information("https://www.lemonde.fr/article")
print(f"Score: {result['scoreCredibilite']} ({result['niveauCredibilite']})")
# Verify text directly
result = system.verify_information(
"According to Harvard researchers, the new study shows significant results."
)| Endpoint | Method | Description |
|---|---|---|
/api/verify |
POST | Full credibility verification |
/api/seo |
POST | SEO analysis only (faster) |
/api/ontology/stats |
GET | Ontology statistics |
/api/health |
GET | Server health check |
curl -X POST http://localhost:5000/api/verify \
-H "Content-Type: application/json" \
-d '{"input_data": "https://www.bbc.com/news/article"}'{
"scoreCredibilite": 0.78,
"niveauCredibilite": "HIGH",
"analysisDetails": {
"sourceReputation": "High",
"domainAge": 9125,
"sentiment": {"label": "NEUTRAL", "score": 0.52},
"entities": [{"word": "BBC", "entity_group": "ORG"}]
}
}## π Project Structure
hybrid-credibility-system/
βββ README.md # Documentation principale
βββ docker-compose.yml # Orchestration des conteneurs
βββ .env.example # Variables d'environnement
β
βββ ontology/
β βββ sysCRED_ontology.owl # β Ontologie principale (OWL)
β βββ sysCRED_data.ttl # DonnΓ©es RDF (Turtle)
β βββ swrl_rules.swrl # RΓ¨gles SWRL pour infΓ©rence
β βββ individuals.ttl # Instances (sources, domaines)
β
βββ services/
β β
β βββ s1_neural/ # π§ Couche Neurale (S1)
β β βββ ner_service/
β β β βββ Dockerfile
β β β βββ requirements.txt
β β β βββ app.py # API: /extract/entities
β β β βββ models/
β β β βββ bert_ner/ # ModΓ¨le BERT fine-tuned
β β β
β β βββ sentiment_service/
β β β βββ Dockerfile
β β β βββ requirements.txt
β β β βββ app.py # API: /extract/sentiment
β β β βββ models/
β β β βββ distilbert/ # ModΓ¨le DistilBERT
β β β
β β βββ coherence_service/
β β βββ Dockerfile
β β βββ requirements.txt
β β βββ app.py # API: /extract/coherence
β β
β βββ bridge/ # π Grounding Layer
β β βββ Dockerfile
β β βββ requirements.txt
β β βββ grounding.py # Neural β Symbolic mapping
β β βββ embeddings/
β β βββ entity_mapper.pkl # Embeddings β OWL instances
β β
β βββ s2_symbolic/ # π£ Couche Symbolique (S2)
β β βββ knowledge_graph/
β β β βββ Dockerfile
β β β βββ requirements.txt
β β β βββ app.py # API: /graph/query
β β β βββ neo4j/
β β β βββ init.cypher # Scripts d'initialisation
β β β
β β βββ reasoner_service/
β β β βββ Dockerfile
β β β βββ requirements.txt
β β β βββ app.py # API: /reason/infer
β β β βββ lib/
β β β βββ hermit.jar # Reasoner HermiT
β β β βββ pellet.jar # Reasoner Pellet
β β β
β β βββ fact_check_service/
β β βββ Dockerfile
β β βββ requirements.txt
β β βββ app.py # API: /factcheck/verify
β β βββ config/
β β βββ api_keys.yml # Google Fact-Check API
β β
β βββ api_gateway/ # πͺ API Gateway (Orchestration)
β βββ Dockerfile
β βββ requirements.txt
β βββ gateway.py # API: /verify (main endpoint)
β βββ pipeline.py # Orchestration des 8 Γ©tapes
β βββ schemas/
β βββ input_schema.json
β βββ output_schema.json
β
βββ data/
β βββ sources/
β β βββ trusted_sources.csv # Liste sources fiables
β βββ blacklist/
β β βββ blacklisted_domains.csv # Domaines bloquΓ©s
β βββ training/
β βββ ner_dataset.json
β βββ sentiment_dataset.json
β
βββ tests/
β βββ test_s1_neural.py
β βββ test_s2_symbolic.py
β βββ test_bridge.py
β βββ test_integration.py
β
βββ docs/
β βββ architecture.md # Architecture dΓ©taillΓ©e
β βββ api_documentation.md # Documentation API
β βββ ontology_design.md # Design de l'ontologie
β βββ deployment.md # Guide de dΓ©ploiement
β
βββ scripts/
βββ setup.sh # Installation des dΓ©pendances
βββ start_services.sh # DΓ©marrage des conteneurs
βββ load_ontology.py # Chargement ontologie dans triplestore
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INPUT (User) β
β URL ou Texte β
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LAYER 1: Neural (S1) β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β NER β β Sentiment β β Coherence β β
β β (BERT) β β (DistilBERT) β β Analysis β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BRIDGE: Grounding β
β Neural Embeddings β OWL Instances β
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LAYER 2: Symbolic (S2) β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Knowledge β β Reasoner β β Fact-Check β β
β β Graph β β (HermiT) β β API β β
β β (Neo4j) β β β β β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SCORING & EXPLANATION β
β Credibility Score + Reasoning Trace β
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β OUTPUT (JSON) β
β Score, Level, Explanation, Confidence β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
---Set environment variables or edit 02_Code/v2_syscred/config.py:
# Optional: Google Fact Check API key
export SYSCRED_GOOGLE_API_KEY=your_key_here
# Server settings
export SYSCRED_PORT=5000
export SYSCRED_DEBUG=true
export SYSCRED_ENV=production # or development, testingThe system uses weighted factors to calculate credibility:
| Factor | Weight | Description |
|---|---|---|
| Source Reputation | 25% | Known credible sources database |
| Domain Age | 10% | WHOIS lookup for domain history |
| Sentiment Neutrality | 15% | Extreme sentiment = lower score |
| Entity Presence | 15% | Named entities (ORG, PER) |
| Text Coherence | 15% | Vocabulary diversity |
| Fact Check | 20% | Google Fact Check API results |
Thresholds:
- HIGH: Score β₯ 0.7
- MEDIUM: 0.4 β€ Score < 0.7
- LOW: Score < 0.4
- Modeling and Hybrid System for Verification of Sources Credibility (PDF)
- Ontology of a Verification System (PDF)
- Beamer Presentation - (PDF)
MIT License - See LICENSE for details.
| Version | Date | Changes |
|---|---|---|
| v2.0 | Jan 2026 | Complete rewrite with modular architecture, Kaggle/Colab support, REST API |
| v1.0 | Apr 2025 | Initial prototype with basic credibility scoring |




