Diffbot
Diffbot 是一套基于机器学习的产品,旨在简化网页数据的结构化处理。
Diffbot 的 自然语言处理 API 允许从非结构化文本数据中提取实体、关系和语义信息。
用例
文本数据通常包含丰富的关系和 洞察,可用于各种分析、推荐引擎或知识管理应用。
通过将 Diffbot 的 NLP API
与 Neo4j
(图数据库)结合,您可以基于从文本中提取的信息创建强大且动态的图结构。这些图结构是完全可查询的,并且可以集成到各种应用中。
这种组合允许使用案例,例如:
- 从文本文件、网站或社交媒体源构建知识图谱(如 Diffbot 的知识图谱)。
- 基于数据中的语义关系生成推荐。
- 创建理解实体之间关系的高级搜索功能。
- 构建分析仪表板,允许用户探索数据中的隐藏关系。
概述
LangChain 提供与图数据库交互的工具:
使用图转换器和存储集成从文本构建知识图谱
使用链进行查询创建和执行查询图数据库
使用代理与图数据库交互,以实现强大而灵活的查询
设置
首先,获取所需的包并设置环境变量:
%pip install --upgrade --quiet langchain langchain-experimental langchain-openai neo4j wikipedia
Diffbot NLP API
Diffbot的NLP API
是一个用于从非结构化文本数据中提取实体、关系和语义上下文的工具。
提取的信息可以用于构建知识图谱。
要使用该API,您需要从Diffbot获取一个免费的API令牌。
<!--IMPORTS:[{"imported": "DiffbotGraphTransformer", "source": "langchain_experimental.graph_transformers.diffbot", "docs": "https://python.langchain.com/api_reference/experimental/graph_transformers/langchain_experimental.graph_transformers.diffbot.DiffbotGraphTransformer.html", "title": "Diffbot"}]-->
from langchain_experimental.graph_transformers.diffbot import DiffbotGraphTransformer
diffbot_api_key = "DIFFBOT_KEY"
diffbot_nlp = DiffbotGraphTransformer(diffbot_api_key=diffbot_api_key)
这段代码获取关于“沃伦·巴菲特”的维基百科文章,然后使用DiffbotGraphTransformer
提取实体和关系。
DiffbotGraphTransformer
输出一个结构化数据GraphDocument
,可以用于填充图数据库。
请注意,由于Diffbot的每个API请求的字符限制,避免了文本分块。
<!--IMPORTS:[{"imported": "WikipediaLoader", "source": "langchain_community.document_loaders", "docs": "https://python.langchain.com/api_reference/community/document_loaders/langchain_community.document_loaders.wikipedia.WikipediaLoader.html", "title": "Diffbot"}]-->
from langchain_community.document_loaders import WikipediaLoader
query = "Warren Buffett"
raw_documents = WikipediaLoader(query=query).load()
graph_documents = diffbot_nlp.convert_to_graph_documents(raw_documents)
将数据加载到知识图谱中
您需要有一个正在运行的Neo4j实例。一个选项是在他们的Aura云服务中创建一个免费的Neo4j数据库实例。您也可以使用Neo4j桌面应用程序在本地运行数据库,或者运行一个docker容器。您可以通过执行以下脚本来运行本地docker容器:
docker run \
--name neo4j \
-p 7474:7474 -p 7687:7687 \
-d \
-e NEO4J_AUTH=neo4j/password \
-e NEO4J_PLUGINS=\[\"apoc\"\] \
neo4j:latest
如果您使用docker容器,您需要等待几秒钟以便数据库启动。
<!--IMPORTS:[{"imported": "Neo4jGraph", "source": "langchain_community.graphs", "docs": "https://python.langchain.com/api_reference/community/graphs/langchain_community.graphs.neo4j_graph.Neo4jGraph.html", "title": "Diffbot"}]-->
from langchain_community.graphs import Neo4jGraph
url = "bolt://localhost:7687"
username = "neo4j"
password = "password"
graph = Neo4jGraph(url=url, username=username, password=password)
可以使用 add_graph_documents
方法将 GraphDocuments
加载到知识图中。
graph.add_graph_documents(graph_documents)
刷新图形模式信息
如果数据库的模式发生变化,可以刷新生成 Cypher 语句所需的模式信息。
graph.refresh_schema()