Cómo construir gráficos de conocimiento a partir de fuentes de datos no estructuradas.
Advertencia: este repositorio proporciona el código fuente y los cuadernos que acompañan un tutorial de instrucción; No se pretende como una biblioteca o producto de paquetes.
python3 -m venv venv
source venv/bin/activate
python3 -m pip install -U pip wheel
python3 -m pip install -r requirements.txt La aplicación de demostración completa está en demo.py :
python3 demo.py Esta demostración raspa las fuentes de texto de los artículos sobre el enlace entre la demencia y la alimentación regularmente de carne roja procesada, luego produce un gráfico usando NetworkX , una base de datos vectorial de incrustaciones de la fragmentación de texto utilizando LanceDB y un modelo de incrustación de entidad usando gensim.Word2Vec , donde los resultados son:
data/kg.json - Serialización del gráfico NetworkXdata/lancedb - tablas de base de datos vectorialesdata/entity.w2v - modelo de incrustación de entidadkg.html - Visualización de gráficos interactivos en PyVis Una colección de cuadernos Jupyter ilustran pasos importantes dentro de este flujo de trabajo:
./venv/bin/jupyter-labconstruct.ipynb - construcción detallada de kg utilizando un gráfico léxicochunk.ipynb - Ejemplo simple de cómo raspar y fragmentar el textovector.ipynb - Consulta LancedB Tabla para incrustaciones de la fragmentos de texto (después de ejecutar demo.py )embed.ipynb : consulte el modelo de incrustación de entidad (después de ejecutar demo.py ) Objetivo: Construya un gráfico de conocimiento (kg) utilizando bibliotecas de código abierto donde los modelos de aprendizaje profundo proporcionan soluciones de punto centradas de manera estrecha para generar componentes para un gráfico: nodos, bordes, propiedades.
Estos pasos definen un proceso generalizado, donde este tutorial se acelera en el gráfico léxico :
Superposición semántica:
Gráfico de datos:
Gráfico léxico:
Este enfoque contrasta con el uso de un modelo de lenguaje grande (LLM) ya que un enfoque de "caja negra" de talla única para generar todo el gráfico automáticamente. Los enfoques de caja negra no funcionan bien para las prácticas de KG en entornos regulados, donde se requieren auditorías, explicaciones, evidencia, procedencia de datos, etc.
Mejor aún, revise los resultados intermedios después de cada paso de inferencia para recopilar comentarios humanos para curar los componentes de KG, por ejemplo, usando Argilla .
Los KG utilizados en aplicaciones de misión crítica, como las investigaciones, generalmente dependen de las actualizaciones, no en un proceso de construcción de un solo paso. Al producir un KG basado en los pasos anteriores, las actualizaciones se pueden manejar de manera más efectiva. Las aplicaciones aguas abajo, como Graph Rag para la base, los resultados de LLM también se beneficiarán de una mejor calidad de datos.
spaCy : https://spacy.io/GLiNER : https://github.com/urchade/glinerGLiREL : https://github.com/jackboyla/glirelOpenNRE : https://github.com/thunlp/opennreNetworkX : https://networkx.org/PyVis : https://github.com/westhealth/pyvisLanceDB : https://github.com/lancedb/lancedbgensim : https://github.com/piskvorky/gensimpandas : https://pandas.pydata.org/Pydantic : https://github.com/pydantic/pydanticPyinstrument : https://github.com/joerick/pyinstrument Nota: debe usar el script nre.sh para cargar modelos pre-entrenados OpenNRE antes de ejecutar el cuaderno opennre.ipynb .