GaetanoParente commited on
Commit
2fe50b2
·
1 Parent(s): 2e93420

aggiornato file readme.md

Browse files
Files changed (1) hide show
  1. README.md +7 -6
README.md CHANGED
@@ -17,7 +17,7 @@ short_description: Neurosymbolic prototype for automatic semantic discovery
17
  ![Neo4j](https://img.shields.io/badge/graphdb-Neo4j-green)
18
  ![Status](https://img.shields.io/badge/status-advanced%20prototype-orange)
19
 
20
- Questo repository contiene un **prototipo avanzato per la scoperta semantica automatica (Automated Semantic Discovery)**. Il sistema agisce come un microservizio finalizzato alla generazione di **ontologie leggere** e **vocabolari semantici** a partire da testo non strutturato.
21
 
22
  Il progetto è progettato con una doppia interfaccia:
23
  1. **API REST (Headless):** Ideale per l'integrazione asincrona e l'orchestrazione da parte di backend esterni ad alte prestazioni.
@@ -42,8 +42,9 @@ La pipeline elabora i dati esclusivamente in memoria ed è orchestrata in **modu
42
  - Segmentazione del testo basata su **similarità semantica vettoriale** (`sentence-transformers`), garantendo la coerenza tematica dei frammenti elaborati senza scritture su disco.
43
 
44
  ### 2. Neuro-Symbolic Extraction (`extractor.py`)
45
- - Estrazione dinamica (Dynamic Few-Shot) di entità e relazioni tramite **LLM (Llama 3 / Groq / HF)**.
46
- - Forzatura dell'output in strutture dati tipizzate tramite validazione **Pydantic**, con recupero di concetti isolati.
 
47
 
48
  ### 3. Stateful Entity Resolution & Linking (`entity_resolver.py`)
49
  - Deduplica locale in RAM tramite clustering spaziale (**DBSCAN** su embedding cosine-similarity).
@@ -51,7 +52,7 @@ La pipeline elabora i dati esclusivamente in memoria ed è orchestrata in **modu
51
  - **Entity Linking** asincrono tramite chiamate REST all'API di **Wikidata** per l'ancoraggio semantico (`owl:sameAs`).
52
 
53
  ### 4. Semantic Validation (`validator.py`)
54
- - Validazione topologica e qualitativa dei dati estratti applicando vincoli ontologici deterministici (**SHACL**) tramite `pyshacl`.
55
 
56
  ### 5. Knowledge Graph Persistence (`graph_loader.py`)
57
  - Salvataggio massivo e transazionale (`UNWIND` Cypher) su database a grafo **Neo4j**, includendo gli embedding vettoriali per le ricerche future.
@@ -65,7 +66,7 @@ prototipo/
65
  │ └── style.css
66
 
67
  ├── data/
68
- │ └── gold_standard/ # Esempi (JSON) per il prompt dinamico dell'LLM
69
 
70
  ├── src/
71
  │ ├── ingestion/
@@ -167,7 +168,7 @@ Il sistema produce una risposta JSON strutturata contenente:
167
  ## Limiti noti
168
 
169
  - **Rate Limiting Wikidata**: Le chiamate di Entity Linking dipendono dai tempi di risposta dell'API pubblica di Wikidata; per ingestion intensive è consigliato l'uso di cache locali stratificate.
170
- - **Dipendenza da LLM**: L'accuratezza dell'estrazione (confidence) fluttua in base al modello configurato e necessita di continui affinamenti del file `examples.json` (Gold Standard).
171
 
172
  ## Possibili estensioni future
173
 
 
17
  ![Neo4j](https://img.shields.io/badge/graphdb-Neo4j-green)
18
  ![Status](https://img.shields.io/badge/status-advanced%20prototype-orange)
19
 
20
+ Questo repository contiene un **prototipo avanzato per la scoperta semantica automatica (Automated Semantic Discovery)**. Il sistema agisce come un microservizio finalizzato alla generazione di **ontologie leggere** e **vocabolari semantici** a partire da testo non strutturato, ponendosi come strumento abilitante per l'estrazione dati su larga scala in scenari aziendali e di BPO.
21
 
22
  Il progetto è progettato con una doppia interfaccia:
23
  1. **API REST (Headless):** Ideale per l'integrazione asincrona e l'orchestrazione da parte di backend esterni ad alte prestazioni.
 
42
  - Segmentazione del testo basata su **similarità semantica vettoriale** (`sentence-transformers`), garantendo la coerenza tematica dei frammenti elaborati senza scritture su disco.
43
 
44
  ### 2. Neuro-Symbolic Extraction (`extractor.py`)
45
+ - Architettura **Schema-RAG**: iniezione dinamica nel prompt dell'LLM delle definizioni ontologiche (es. ArCo) più pertinenti al frammento di testo, recuperate tramite vector search.
46
+ - Implementazione di meccanismi di **Graceful Degradation** e fallback semantici per azzerare le allucinazioni ontologiche su entità orfane.
47
+ - Forzatura dell'output in strutture dati tipizzate tramite validazione **Pydantic**.
48
 
49
  ### 3. Stateful Entity Resolution & Linking (`entity_resolver.py`)
50
  - Deduplica locale in RAM tramite clustering spaziale (**DBSCAN** su embedding cosine-similarity).
 
52
  - **Entity Linking** asincrono tramite chiamate REST all'API di **Wikidata** per l'ancoraggio semantico (`owl:sameAs`).
53
 
54
  ### 4. Semantic Validation (`validator.py`)
55
+ - Validazione topologica e qualitativa dei dati estratti applicando vincoli ontologici deterministici (**SHACL**) tramite `pyshacl`, garantendo la coerenza del grafo prima della persistenza.
56
 
57
  ### 5. Knowledge Graph Persistence (`graph_loader.py`)
58
  - Salvataggio massivo e transazionale (`UNWIND` Cypher) su database a grafo **Neo4j**, includendo gli embedding vettoriali per le ricerche future.
 
66
  │ └── style.css
67
 
68
  ├── data/
69
+ │ └── arco_schema.json # Dizionario ontologico indicizzato per lo Schema-RAG
70
 
71
  ├── src/
72
  │ ├── ingestion/
 
168
  ## Limiti noti
169
 
170
  - **Rate Limiting Wikidata**: Le chiamate di Entity Linking dipendono dai tempi di risposta dell'API pubblica di Wikidata; per ingestion intensive è consigliato l'uso di cache locali stratificate.
171
+ - **Dipendenza da Vocabolari**: L'accuratezza dell'estrazione semantica tramite Schema-RAG fluttua in base alla ricchezza descrittiva del dizionario JSON ontologico fornito in ingresso.
172
 
173
  ## Possibili estensioni future
174