Como construir gráficos de conhecimento a partir de fontes de dados não estruturadas.
Advertência: este repositório fornece o código -fonte e os notebooks que acompanham um tutorial instrucional; Não se destina a uma biblioteca ou produto de pacotes.
python3 -m venv venv
source venv/bin/activate
python3 -m pip install -U pip wheel
python3 -m pip install -r requirements.txt O aplicativo de demonstração completo está em demo.py :
python3 demo.py Essa demonstração elimina fontes de texto de artigos sobre a ligação entre demência e a ingestão de carne vermelha processada regularmente e produz um gráfico usando NetworkX , um banco de dados vetorial de incorporação de chunk de texto usando LanceDB e um modelo de incorporação de entidade usando gensim.Word2Vec , onde os resultados são:
data/kg.json - Serialização do Gráfico NetworkXdata/lancedb - Tabelas de banco de dados vetorialdata/entity.w2v - Modelo de incorporação de entidadekg.html - Visualização de gráficos interativos em PyVis Uma coleção de cadernos Jupyter ilustra etapas importantes neste fluxo de trabalho:
./venv/bin/jupyter-labconstruct.ipynb - Construção KG detalhada usando um gráfico lexicalchunk.ipynb - exemplo simples de como raspar e textos de pedaçosvector.ipynb - Tabela de consulta LanceDB para incorporação de pedaços de texto (depois de executar demo.py )embed.ipynb - consulta o modelo de incorporação da entidade (depois de executar demo.py ) Objetivo: Construa um gráfico de conhecimento (kg) usando bibliotecas de código aberto, onde os modelos de aprendizado profundo fornecem soluções de pontos com foco restrito para gerar componentes para um gráfico: nós, arestas, propriedades.
Essas etapas definem um processo generalizado, onde este tutorial pega no gráfico lexical :
Sobreposição semântica:
Gráfico de dados:
Gráfico lexical:
Essa abordagem contrasta com o uso de um modelo de idioma grande (LLM) como um tamanho único se encaixa em toda a abordagem "Black Box" para gerar todo o gráfico automaticamente. As abordagens da caixa preta não funcionam bem para práticas de kg em ambientes regulamentados, onde são necessárias auditorias, explicações, evidências, proveniência de dados etc.
Melhor ainda, revise os resultados intermediários após cada etapa de inferência para coletar feedback humano para curar os componentes de KG, por exemplo, usando Argilla .
Os KGs usados em aplicativos missionários, como investigações, geralmente dependem de atualizações, não de um processo de construção de uma etapa. Ao produzir um kg com base nas etapas acima, as atualizações podem ser tratadas com mais eficiência. Aplicativos a jusante, como o gráfico RAG para aterrar os resultados do LLM, também se beneficiará da melhoria da qualidade dos dados.
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: Você deve usar o script nre.sh para carregar modelos pré-treinados OpenNRE antes de executar o notebook opennre.ipynb .