Transformar un documento de texto en un grafo de conocimiento en Neo4j implica extraer entidades y relaciones del texto, y luego estructurarlas como nodos y aristas. Aquí te dejo los pasos:
Pasar de esto:
“Ada Lovelace nació en Londres en 1815. Fue hija de Lord Byron.”
A esto en Neo4j:
(:Persona {nombre: "Ada Lovelace"})
-[:NACIO_EN {año:1815}]->
(:Lugar {nombre: "Londres"})
(:Persona {nombre: "Ada Lovelace"})
-[:HIJA_DE]->
(:Persona {nombre: "Lord Byron"})
Primero, usa herramientas como:
- spaCy (muy usado con Neo4j)
- Hugging Face transformers
- LLM (como GPT o Claude) con ReAct para extraer triples
🔍 Extrae:
- Entidades (personas, lugares, fechas…)
- Relaciones (acciones o vínculos)
- Atributos
[
{"sujeto": "Ada Lovelace", "relacion": "nació_en", "objeto": "Londres", "año": 1815},
{"sujeto": "Ada Lovelace", "relacion": "hija_de", "objeto": "Lord Byron"}
]
MERGE (p:Persona {nombre: "Ada Lovelace"})
MERGE (l:Lugar {nombre: "Londres"})
MERGE (p)-[:NACIO_EN {año:1815}]->(l)
MERGE (b:Persona {nombre: "Lord Byron"})
MERGE (p)-[:HIJA_DE]->(b)
Con py2neo
o neo4j-driver
, puedes hacer un script para procesar muchos documentos.
- Agrega tipos (clases):
:Persona
,:Lugar
,:Evento
- Usa un vocabulario u ontología si deseas interoperabilidad
Herramienta | Uso principal |
---|---|
spaCy | NER, relaciones |
Neo4j + Cypher | Modelado y visualización |
Neosemantics (n10s) | Si usas RDF/OWL |
GPT / LLMs | Extracción de triples explicativos |
LangChain | Orquestar agentes para NLP + Neo4j |