大模型助力高效创建知识图谱( 二 )

  • 然后,定义了一个sentences列表 , 包含三个待处理的句子 。
  • 使用for循环遍历这些句子 。
  • 使用SnowNLP对每个句子进行自然语言处理 。
  • 通过s.tags获取词性标注 , 并抽取出名词('n')和人名('nr')以及动词('v') 。
  • 如果一个句子中包含至少三个这样的词(两个实体和一个关系) , 则形成一个三元组并添加到triplets列表中 。
  • 上述代码结果如下:
    [('是', '邻居', '小明'), ('小明', '篮球队', '是')]
    • 1.
    通过结果可以看出自然语言处理(NLP)任务存在的问题:
    1. 三元组的构造不准确:例如第一个三元组`('是', '邻居', '小明')`,其中“是”并不是一个实体,而应该是一个关系 。
    2. 丢失了一些关键信息:例如第三个句子"我和小明是篮球队的队友"并没有正确抽取为三元组 。
    这些问题揭示了一般NLP任务(尤其是基于规则或浅层NLP工具的任务)存在的一些局限性:
    1. 词性标注和句法分析的不准确性:依赖于词性标注和句法分析工具的准确性 , 一旦工具出错,后续的信息抽取也会受到影响 。
    2. 缺乏深度语义理解:仅仅通过词性标注和浅层句法分析,难以准确地抽取复杂或模糊的关系 。
    3. 泛化能力差:对于不同类型或结构的句子 , 可能需要不断地调整规则或模型 。
    4. 对上下文信息的利用不足:这种方法通常只考虑单个句子内的信息,而忽视了上下文信息,这在复杂文本中是非常重要的 。
    大语言模型如何助力知识图谱大语言模型 , 如GPT或BERT,是基于深度学习的自然语言处理模型,具有出色的文本理解和生成能力 。它们能够理解自然语言,从而使复杂的查询和推理变得更加简单 。相比于传统方法,大模型有以下几点优势:
    • 文本理解能力:可以准确地抽取和理解更复杂、模糊或多义的实体和关系 。
    • 上下文敏感性:大模型能够理解词语在不同上下文中的不同含义 , 这对于精准抽取实体和关系至关重要 。这种上下文敏感性让模型能够理解复杂和模糊的句子结构 。
    • 强大的泛化能力:由于在大量多样化数据上进行了训练,这些模型能够很好地泛化到新的、未见过的数据 。这意味着即使面对具有复杂结构或不常见表达方式的文本,它们也能准确地进行实体和关系抽取 。
    同样的例子,我们看看大模型是如何做的 。代码如下:
    from snownlp import SnowNLP# 初始化三元组列表triplets = []# 待处理的文本列表from langchAIn.llms import OpenAIllm = OpenAI(model_name="gpt-3.5-turbo")texts = '''小红是我的同学 。小红是小明的邻居 。小明是我的篮球队队友 。'''#知识图谱索引创建from langchain.indexes import GraphIndexCreator#知识图谱问答的chainfrom langchain.chains import GraphQAChain#知识图谱三元素的一个类 。三元素:主 谓 宾 。from langchain.graphs.NETworkx_graph import KnowledgeTriple#创建图谱的索引,解析文本内容index_creator = GraphIndexCreator(llm=llm)#创建图谱的索引,显示对象之间的关系f_index_creator = GraphIndexCreator(llm=llm)final_graph = f_index_creator.from_text('')#对文本进行切割for text in texts.split("."):#将切割以后的文本生成三元组triples = index_creator.from_text(text)for (node1, node2, relation) in triples.get_triples():#将三元组的信息放到final_graph中用以显示final_graph.add_triple(KnowledgeTriple(node1, node2,relation ))print("=================")print(node1)print(relation)print(node2)
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
    • 18.
    • 19.
    • 20.
    • 21.
    • 22.
    • 23.
    • 24.
    • 25.
    • 26.
    • 27.
    • 28.
    • 29.
    • 30.
    • 31.
    • 32.
    • 33.
    • 34.
    上面这段代码用于构建知识图谱 。它用到了三个主要的模块:`OpenAI`、`GraphIndexCreator` 和 `GraphQAChain`,以及一个辅助类:`KnowledgeTriple` 。主要内容包括:


    推荐阅读