- OpenAI 初始化:`llm = OpenAI(model_name="gpt-3.5-turbo")`。初始化了 `gpt-3.5-turbo` 的大型语言模型(LLM) 。
- 输入文本:`texts = '小红是我的同学 。小红是小明的邻居 。小明是我的篮球队队友 。'` 定义要处理的文本,其中包含多个句子 。
- 创建图谱索引:`index_creator = GraphIndexCreator(llm=llm)` 使用 `GraphIndexCreator` 类来创建一个图索引生成器 , 它会用到先前初始化的大型语言模型 。
- 初始化最终图:`final_graph = f_index_creator.from_text('')` 初始化了一个空的知识图谱,用于存放最终的三元组信息 。
- 文本切割和三元组生成: `for text in texts.split("."):`这个循环通过句号切割文本,然后对每一个非空句子生成三元组 。
- `triples = index_creator.from_text(text)`通过 `index_creator` 的 `from_text` 方法,为每个句子生成三元组 。
- 三元组存储和输出:`final_graph.add_triple(KnowledgeTriple(node1, node2,relation ))`将生成的三元组添加到 `final_graph` 知识图谱中 。
=================小红是我的同学=================小红是小明的邻居=================小明是我的篮球队队友
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
如果我们将texts变量进行修改:
texts = '''小鸟国,正式名称飞禽国度(ISO:飞禽国度),是位于新世界南部的国家 。它以领土面积而言是世界第七大国家;是人口最多的国家,一直是世界上人口最多的民主国家 。小鸟国南临翡翠海,西南濒临蓝色海洋,东南濒临碧玉海,与翼足国家在西部接壤;北部与巨翼国、鸣虫国和象牙国相邻;东部与彩虹国和翡翠国接壤 。在翡翠海中,小鸟国位于双岛国家和翡翠群岛,与彩虹国、碧玉国和绿洲国共享海上边界 。翡翠海是7大文明遗迹之一,在天门东边'''
- 1.
import networkx as nximport matplotlib.pyplot as plt#创建一个空的有向图G = nx.DiGraph()#将上面得到的三元组放到图像的边中#source - node1,target - node2,relation - relationG.add_edges_from((source, target, {'relation': relation}) for source, relation, target in final_graph.get_triples())#指定图像的大小和分辨率plt.figure(figsize=(8,3), dpi=500)#通过spring算法定义节点的布局pos = nx.spring_layout(G, k=3, seed=0)edge_labels = nx.get_edge_attributes(G, 'relation')nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_size=8,font_family='simhei')#定义显示中文字体nx.draw_networkx(G, font_family = 'simhei')#关闭坐标轴显示plt.axis('off')plt.show()
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
1. 创建空的有向图: `G = nx.DiGraph()`
2. 添加边到图中:
`G.add_edges_from((source, target, {'relation': relation}) for source, relation, target in final_graph.get_triples())`
把之前从文本中抽取出的三元组添加到图`G`中作为边 。每一条边都有一个起点(`source`),一个终点(`target`)以及一个表示两者关系的标签(`relation`) 。
3. 设置图像大小和分辨率:
`plt.figure(figsize=(8,3), dpi=500)`
设置了图像的大?。?x3)和分辨率(500 DPI) 。
4. 定义节点布局:
`pos = nx.spring_layout(G, k=3, seed=0)`
使用“spring”布局算法来确定图中每个节点的位置 。`k`是一个用于设置节点间距的参数 , `seed`是随机数生成器的种子 。
推荐阅读
- 使用Beacon API实现高效数据传输和用户行为分析
- 如何用Java实现B+树和跳表的高效存储?
- 如何构建基于大模型的App
- 人工智能大模型布局千行百业
- 数据标注员,困在大模型里
- 大模型可解释性你能理得清吗?综述已来,一文解你疑惑
- 多模态大模型最全综述来了!7位微软研究员大力合作,5大主题,成文119页
- Python构建高效安全的OTP验证系统!
- 国产大模型:创新为道 落地为王
- 搜狐科技实测腾讯混元大模型:能模仿鲁迅、林黛玉,还会玩梗换算“花西子币”