当前位置: 首页 > article >正文

【大模型信息抽取】KnowLM:知识图谱 + 大模型,实现更有效的信息抽取和知识管理

KnowLM 知识图谱 + 大模型:实现信息抽取

    • KnowLM 原理
    • KnowLM 部署
    • KnowLM 应用
        • 1. 命名实体识别(NER)
        • 2. 关系抽取(RE)
        • 3. 事件抽取(EE)

 


KnowLM 原理

代码:https://github.com/zjunlp/KnowLM/blob/main/README_ZH.md

 
目前需要从大量文本中,抽取信息,构建知识图谱,加强和补足大模型的专业能力,避免胡说八道、宽泛模糊问题。

知识图谱 = 实体 + 关系 + 实体

  • 实体:现实世界存在的事物,如人名、地名

  • 关系:实体之间的关系,如朋友、家

  • 举例:小明-电话-xxx,小明-年龄-20,小明-朋友-小张

 
安利 浙大的开源项目 KnowLM:

KnowLM 的信息抽取模型,叫 能分

  • NER 是,实体命名识别(现实世界存在的事物,比如地名、人名)
  • Event Extraction 是,事件抽取(哪里发生了什么事情,如旅游)
  • Relation Extraction 是,关系抽取(对象之间的关系,如父亲、女儿、朋友)

 
这个项目是怎么实现的?

  • KnowLM 是使用知识图谱来增强大型语言模型的预训练推理可解释性

  • 用知识图谱的结构化数据来提高模型的专业知识和输出质量,同时也用大模型的能力来更新和维护知识图谱本身。

KnowLM 结构图:

左侧用于预训练的数据集,包括中文(红色)、英文(绿色)、代码(蓝色),以及这些数据的处理步骤,如分词、清洗等。

  • 预训练过程详细的数据处理代码和训练代码、完整的训练脚本、详细的训练情况:https://github.com/zjunlp/KnowLM/tree/main/pretrain

右侧更专注于指令数据集,包括实体识别(NER)、关系抽取(RE)、事件抽取(EE)等NLP任务,以及各种中文和英文的数据集。

  • 详细的指令微调训练参数、训练脚本:https://github.com/zjunlp/KnowLM/tree/main/finetune/lora

数据量:

在信息抽取(从文本中抽取信息,建立知识图谱),智析 对比 GPT:

在这里插入图片描述

在这个例子中,GPT在执行关系抽取任务时存在以下问题:

  1. 不准确的关系抽取:GPT未能正确识别和提取文本中的关系三元组。它提供的输出可能包含不正确的关系或实体,或者完全缺失了某些关系。

  2. 不完整的信息提取:GPT在输出结果时,可能未能包含所有相关的信息,导致提供的信息不全面或不具体。

  3. 不适用的格式:GPT可能没有遵循指定的结构化输出格式,这是关系抽取任务中一个重要的要求,以便于后续的信息整合和知识图谱构建。

与之相比,“智析”这个系统在以下方面显示出了改进:

  1. 更准确的关系识别:智析能够更准确地识别出文本中的实体和关系,提供更符合预期的关系三元组。

  2. 完整性:智析提供的输出更完整,覆盖了指令中要求识别的所有相关信息。

  3. 遵循格式:智析能够根据指定的{s_format}格式提供结构化输出,这对于后续自动化处理和知识图谱的构建是非常有用的。

智析 相比 通用的GPT模型,在准确性、完整性和遵循指定输出格式方面的优势。

 

KnowLM 应用框架:

1.知识提示 - EasyInstruct:基于知识图谱等结构化数据的知识提示生成和知识增强约束技术,解决知识抽取和推理问题

2.知识编辑 - EasyEdit:基于知识编辑技术对齐大模型内过时、错误及价值观不正确的知识,解决知识谬误问题 (英文版Tutorial)

3.知识交互 - EasyAgent:基于知识动态交互和反馈实现工具组合学习及多智能体协作,解决大模型具身认知问题 (英文版Tutorial)

 


KnowLM 部署

跟着教程部署就行:
在这里插入图片描述
遇到问题在 issues 提问即可:

  • https://github.com/zjunlp/KnowLM/issues

 


KnowLM 应用

模板用于构建模型输入的指令,包括三个部分:

  • 任务描述:明确定义模型的功能和需要完成的任务,如实体识别、关系抽取、事件抽取等。
  • 候选标签列表{s_schema}(可选):定义模型需要抽取的标签类别,如实体类型、关系类型、事件类型等。
  • 结构化输出格式{s_format}:指定模型应如何呈现它提取的结构化信息。

指定候选标签列表的模板:

命名实体识别(NER):您是专门从事实体抽取的专家。
请根据候选实体类型列表{s_schema},从下面的输入中提取可能的实体,
如果某个实体不存在,请输出NAN。请按照{s_format}格式回答。

关系抽取(RE):您是抽取关系三元组的专家。
请根据候选关系列表{s_schema},从下面的输入中提取可能的头实体和尾实体,并提供相应的关系三元组。
如果关系不存在,请输出NAN。请以{s_format}格式回答。

事件抽取(EE):您是事件抽取的专家。根据候选事件字典{s_schema},请从下面的输入中提取任何可能的事件。
如果事件不存在,请输出NAN。请以{s_format}格式回答。

事件类型抽取(EET):作为事件分析专家,您需要审查输入并根据事件类型目录{s_schema}确定可能的事件。
所有答案应基于{s_format}格式。如果事件类型不匹配,请标记为NAN。

事件论元抽取(EEA):您是事件论元抽取的专家。
鉴于事件字典{s_schema1},以及事件类型和触发词{s_schema2},请从以下输入中提取可能的论元。
如果事件论元不存在,请输出NAN。请以{s_format}格式回答。

举例:

  • 信息抽取 Prompt:https://github.com/zjunlp/KnowLM/blob/main/examples/ie_prompt.py

应用:

要使用这些模板构建知识图谱,我们需要从文本中抽取实体、关系和事件。以下是一个如何应用这些模板的例子:

示例输入文本:

小明和小红是同学,他们都在北京大学读书。
小明的专业是计算机科学,而小红的专业是金融学。
他们经常一起在图书馆学习。
上周,小明和小红参加了学校的编程比赛并获得了第一名。
1. 命名实体识别(NER)

使用NER模板识别文本中的实体。
候选实体类型列表(s_schema)可能包括:人名、地点、学校、专业等。
结构化输出格式(s_format)可以选择为:“(实体类型: 实体)”。

示例输出(NER):

  • (人名: 小明)
  • (人名: 小红)
  • (地点: 北京大学)
  • (专业: 计算机科学)
  • (专业: 金融学)
  • (事件: 编程比赛)
2. 关系抽取(RE)

接下来使用RE模板抽取实体间的关系。
候选关系列表(s_schema)可能包括:同学、读书于、专业是、一起学习、参加比赛、获得名次等。
结构化输出格式(s_format)可以为:“{‘head’: ‘头实体’, ‘relation’: ‘关系’, ‘tail’: ‘尾实体’}”。

示例输出(RE):

  • {‘head’: ‘小明’, ‘relation’: ‘同学’, ‘tail’: ‘小红’}
  • {‘head’: ‘小明’, ‘relation’: ‘读书于’, ‘tail’: ‘北京大学’}
  • {‘head’: ‘小明’, ‘relation’: ‘专业是’, ‘tail’: ‘计算机科学’}
  • {‘head’: ‘小红’, ‘relation’: ‘专业是’, ‘tail’: ‘金融学’}
  • {‘head’: ‘小明’, ‘relation’: ‘参加比赛’, ‘tail’: ‘编程比赛’}
  • {‘head’: ‘小明’, ‘relation’: ‘获得名次’, ‘tail’: ‘第一名’}
3. 事件抽取(EE)

使用EE模板抽取文本中的事件。
候选事件字典(s_schema)可能包括:学习、比赛等。
结构化输出格式(s_format)可以为:“事件: {事件类型}”。

示例输出(EE):

  • 事件: 学习
  • 事件: 比赛

通过这样的过程,我们可以从文本中抽取出实体、关系和事件,构建成一个知识图谱。


http://www.kler.cn/a/229896.html

相关文章:

  • vue实现滚动条滑动到底部分页调取后端接口加载数据
  • 深入浅出UART驱动开发与调试:从基础调试到虚拟驱动实现
  • 极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【三】
  • Python语法基础(三)
  • 英语知识网站开发:Spring Boot框架应用
  • fiddler抓包工具与requests库构建自动化报告
  • linux下 Make 和 Makefile构建你的项目
  • curl命令忽略不受信任的https安全限制
  • 构建高效可靠的数据血缘技术架构-文字解说
  • Vue3 中的各种ref
  • 30道前端基础知识快问快答
  • Redis——高级主题
  • Objective-C中对象与对象之间的关系
  • 基于DFS、BFS解决迷宫问题
  • 【Java数据结构】单向 不带头 非循环 链表实现
  • Langchain ZERO_SHOT_REACT_DESCRIPTION的使用
  • springboot war包部署 和jar包部署
  • Linux中共享内存(mmap函数的使用)
  • 【技术预研】StarRocks官方文档浅析(4)
  • Linux命令:traceroute命令
  • re:从0开始的CSS学习之路 3. CSS三大特性
  • 计算机网络自顶向下Wireshark labs-HTTP
  • AD高速板常见问题和过流自锁
  • c语言游戏实战(3):三子棋
  • 私有化部署一个吃豆人小游戏
  • 深度学习的进展:人工智能时代的里程碑