Commit ·
2fe50b2
1
Parent(s): 2e93420
aggiornato file readme.md
Browse files
README.md
CHANGED
|
@@ -17,7 +17,7 @@ short_description: Neurosymbolic prototype for automatic semantic discovery
|
|
| 17 |

|
| 18 |

|
| 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 |
-
-
|
| 46 |
-
-
|
|
|
|
| 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 |
-
│ └──
|
| 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
|
| 171 |
|
| 172 |
## Possibili estensioni future
|
| 173 |
|
|
|
|
| 17 |

|
| 18 |

|
| 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 |
|