NLP_知识图谱_介绍、构建、问答知识

news2024/12/24 21:04:18

文章目录

  • 知识图谱的介绍
    • 图能做些什么任务
    • 基于图的推荐系统
    • 图的一些基本概念与表述
    • 有向图与无向图
    • 节点的度
      • 节点的边的数量
      • 有向图又分为入度和出度
    • 什么是知识图谱
    • 知识图谱属于异质图
    • 知识图谱的schema
    • 知识图谱的应用场景
  • 知识图谱的构建
    • 三元组
    • 如何构建知识图谱
      • 构建知识图谱通常有两种数据源:
      • 对于非结构化的三元组抽取,主要涉及到2个任务
    • 实体识别
    • 关系抽取
    • 三元组抽取
  • 问答
    • 图谱问答
      • 根据问题,解析出三元组中的其中两个元素,查询第三个元素
      • 大部分的问题还是以第一种情况为主,即查询object
    • Entity Linking
      • Candidate Entity Generation (CEG)
      • Entity Disambiguation (ED)
    • predicate预测
    • KBQA
    • CCKS2020
  • 知识图谱知识小结


知识图谱的介绍

图是描述和分析实体关系/交互的通用语言、结构
生活中很多类型的数据都是图的结构
在这里插入图片描述

图能做些什么任务

节点分类:预测某网站是否是诈骗网站
关系预测:判断图谱中两个节点的关系
图分类:分子性质预测
聚类:社交网络分析
图生成:药物探索

基于图的推荐系统

假设我们的图节点是由用户与商品信息构成,边表示的是用户与商品的交互操作
在这里插入图片描述

图的一些基本概念与表述

节点:nodes、vertices【N】
关系:edges【E】
图:network、graph【G(N,E)】
在这里插入图片描述

在这里插入图片描述
|N|=4
|E|=4

有向图与无向图

在这里插入图片描述

节点的度

节点的边的数量

在这里插入图片描述

有向图又分为入度和出度

在这里插入图片描述

什么是知识图谱

知识图谱,是通过将应用数学、图形学、信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、前沿领域以及整体知识架构达到多学科融合目的的现代理论。

知识图谱,最早起源于Google Knowledge Graph。知识图谱本质上是一种语义网络 。其结点代表实体(entity)或者概念(concept),边代表实体/概念之间的各种语义关系。

知识图谱属于异质图

图谱有三个重要的属性,实体、类型、关系

实体entity就是图中的节点
类型表示的是图中节点的标识
关系标识的是图中节点的边

其次实体又包括头实体与尾实体
在这里插入图片描述
通俗地讲,知识图谱就是把所有不同种类的信息连接在一起而得到的一个关系网络。

查看如下可视化网址加深印象及理解
https://www.ownthink.com/knowledge.html

知识图谱的schema

schame即有哪些类型的实体,实体之间的关系

例如下图是一个关于论文的图谱schame
在这里插入图片描述

一个生物知识图谱
在这里插入图片描述

知识图谱的应用场景

1、数据可视化
2、基于图谱的问答系统
3、基于图谱的关系推理
4、便捷的关系查询,给模型提供更多数据特征

知识图谱的构建

三元组

知识图谱的三元组,指的是 <subject, predicate/relation, object> 。同学们会发现很多人类的知识都可以用这样的三元组来表示。例如:<中国,首都,北京>,<美国,总统,特朗普> 等等。

所有图谱中的数据都是由三元组构成

工业场景通常把三元组存储在图数据库中如neo4j,图数据的优势在于能快捷查询数据。
学术界会采用RDF的格式存储数据,RDF的优点在于易于共享数据。

如何构建知识图谱

构建知识图谱通常有两种数据源:

1、结构化数据,存储在关系型数据库中的数据,通过定义好图谱的schema,然后按照schema的格式,把关系型数据转化为图数据。

2、非结构化数据,采用模板或者模型的方式,从文本中抽取出三元组再入库。

对于非结构化的三元组抽取,主要涉及到2个任务

1、实体识别
2、关系抽取

实体识别主要作用在于抽取subject和object,关系抽取主要作用在于抽取predicate

例如:
中国的首都是北京
<中国,首都,北京>

拜登成功当选2020年美国总统
<美国,总统,拜登>

姚明是中国男篮的主席,曾在NBA火箭队效力
<中国男篮,主席,姚明> <火箭队,队员,姚明>

实体识别

subject与object在一个句子中会对应多个实体,所以对于实体识别我们会采用BIO labeling

我们一般把命名实体识别当做一个sequence labeling的任务来实现。这里的label一般包含BIO labeling:
B-XXX: B-ORG, B-LOC,表示一个entity的开始
I-XXX: I-ORG,I-LOC, 表示一个entity的中间与结尾
O: 表示不是entity

有时候也会采取别的方法来实现,例如指针法,根据具体的问题具体分析。

sequence labeling问题的主要模型使用BiLSTM, BERT等模型作为encoder,把文本转化为向量形式。然后使用CRF等layer增加label间的dependency。最后对每个位置针对我们的输入和label做一个cross entropy loss作为训练标注
在这里插入图片描述

关系抽取

识别识别做完后,把抽取出来的实体和原文一起作为输入,判断属于什么关系,通常都会提供好固定的一些关系,因此该任务就是一个分类问题。

Semantic Relation Classification via Convolutional Neural Networks with Simple Negative Sampling
https://arxiv.org/pdf/1506.07650.pdf
在这里插入图片描述

三元组抽取

上述的方法可行,但是也存在缺点

1、两个模型,效率低下
2、多对实体,会造成关系预测错误

因此,也有同时抽取的方法,如右图的模型结构
在这里插入图片描述

End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures
https://www.aclweb.org/anthology/P16-1105.pdf
在这里插入图片描述

Span-based Joint Entity and Relation Extraction with Transformer Pre-training
https://arxiv.org/pdf/1909.07755.pdf
在这里插入图片描述

问答

图谱问答

根据问题,解析出三元组中的其中两个元素,查询第三个元素

例如:
<中国,首都,北京>

中国的首都是哪?
中国和北京是什么关系
北京是哪个国家的首都

大部分的问题还是以第一种情况为主,即查询object

挑战:
1、如何确定subject?
2、如何确定predicate?
3、使用subject和predicate去搜索KB,找到一系列三元组之后,如何确定哪个三元组是我们想要的。

例如:
<美国,总统,特朗普>
<美国,总统,拜登>

到底应该选择哪一个作为最终的答案

Entity Linking

Entity Linking指的是subject的识别,为了实现KBQA,我们要做的第一步是把问题中的subject实体(entity)给找出来,并且找到知识图谱中对应的entity,然后根据该entity的特征来回答问题。

Entity Linking非常有挑战性,主要有两个原因

Mention Variations:同一实体有不同的mention。(<科比>:小飞侠、黑曼巴、科铁、蜗壳、老科。)
Entity Ambiguity:同一mention对应不同的实体。(“苹果”:中关村苹果不错;山西苹果不错。)

针对上述两个问题,一般会用Candidate Entity Generation (CEG) 和Entity Disambiguation (ED) 两个模块来分别解决:
Candidate Entity Generation:从mention出发,找到KB中所有可能的实体,组成候选实体集 (candidate entities)
Entity Disambiguation:从candidate entities中,选择最可能的实体作为预测实体。

Candidate Entity Generation (CEG)

最重要的方法:Name Dictionary ( {mention: entity} )
哪些别名:首字母缩写、模糊匹配、昵称、拼写错误等。

CEG这部分,最主流也最有效的方法就是Name Dictionary,说白了就是配别名。虽然CEG很朴素,但作为EL任务中的第一道门槛,其重要性不言而喻。对于每一个entity,紧凑而充分地配置别名,才能保证生成的candidate entites没有遗漏掉ground truth entity。

具体的,要配置哪些别名,要用什么构建方法,往往取决于EL的使用场景。比如做百科问答或是通用文本的阅读增强,就很依赖于wikipedia和搜索引擎;但如果是某个具体的行业领域,就需要通过一些启发式的方法、用户日志、网页爬取,甚至人工标注的方法来构建Name Dictionary。
在这里插入图片描述
采用maximum matching的方法来做entity linking,具体可参考以下文章:Chinese Word Segmentation based on Maximum Matching and Word Binding Force 。

Entity Disambiguation (ED)

实体消歧时,不同场景的特征选取是非常重要的。总的来说,实体消歧的特征分为,context独立和context不独立的。

context独立:考虑mention到实体的LinkCount、实体自身的一些属性(比如热度、类型等等)。其中,LinkCount作为一个先验知识,在消歧时,往往很有用,比如当我们在问“姚明有多高?”时,大概率都是在问<篮球运动员姚明>,而不是其他不为人知的“姚明”。虽然context中完全没有包含篮球运动员这一信息,但LinkCount最高,选其作为实体进行查询,都会是一个不错的答案。

context不独立:我是实际上是在计算条件概率 P(e|m,c) ,其中 c 是输入文本,e 为实体, m 是mention,因此可以直接对该条件概率建模。也可加入一些先验知识,例如LinkCount信息

1、直接把mention和context作为输入,经过神经网络做一个分类
2、采用一些图算法,计算entity embedding,计算相似度

predicate预测

Predicate的预测有两种方法
1、和图谱构建很类似,做一个分类
2、把predicate和问题进行对比,找出最相似的那个predicate

KBQA

A Chinese Question Answering System for Single-Relation Factoid Questions
http://tcci.ccf.org.cn/conference/2017/papers/2003.pdf 在NLPCC 2017的比赛中获得了KBQA的第一名

http://tcci.ccf.org.cn/conference/2019/papers/183.pdf
同时使用QA和QA模型来解决Knowledge Base QA问题。

2018年NLPCC
http://tcci.ccf.org.cn/conference/2018/dldoc/CFPtaskr1.pdf

CCKS2020

http://sigkg.cn/ccks2020/?page_id=700

知识图谱知识小结

1.知识图谱就是把所有不同种类的信息连接在一起而得到的一个关系网络。
2.常见应用场景:基于图谱问答
3.知识图谱的三元组,指的是 <subject, predicate/relation, object>,所有图谱中的数据都是由三元组构成
4.构建知识图谱通常有两种数据源
(1).构化数据,存储在关系型数据库中的数据,通过定义好图谱的schema,然后按照schema的格式,把关系型数据转化为图数据。
(2).非结构化数据,采用模板或者模型的方式,从文本中抽取出三元组再入库。
5.对于非结构化的三元组抽取,主要涉及到2个任务:实体识别、关系抽取。
实体识别主要作用在于抽取subject和object,关系抽取主要作用在于抽取predicate。
6.图谱问答,根据问题,解析出三元组中的其中两个元素,查询第三个元素。
7.Entity Linking,主要有两个挑战:
Mention Variations:同一实体有不同的mention。(<科比>:小飞侠、黑曼巴、科铁、蜗壳、老科。)
Entity Ambiguity:同一mention对应不同的实体。(“苹果”:中关村苹果不错;山西苹果不错。)
一般会用这两个模块来分别解决:
Candidate Entity Generation:从mention出发,找到KB中所有可能的实体,组成候选实体集 (candidate entities)
Entity Disambiguation:从candidate entities中,选择最可能的实体作为预测实体。


学习的参考资料:
七月在线NLP高级班

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1591862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+vue+Mysql的简历系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

C语言输出不同颜色的字体

本文章在Linux进行演示&#xff01;&#xff01;&#xff01; 使用C语言输出不同颜色字体和背景 格式&#xff1a; printf("\033[字体背景颜色;字体颜色m字符串\033[0m"); 上边的 \033 也可以用 \e 来代替。 字体颜色与字符的对应关系 字符颜色30黑色31红…

小白学视觉 | 各种各样神奇的自注意力机制(Self-attention) 建议收藏!

本文来源公众号“小白学视觉”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;收藏&#xff01;各种各样神奇的自注意力机制&#xff08;Self-attention&#xff09; 编者荐语 文章总结了关于李宏毅老师在 2022 年春季机器学习课…

MAC(M1芯片)编译Java项目慢且发热严重问题解决方案

目录 一、背景二、排查三、解决四、效果以及结果展示五、总结 一、背景 使用idea编译项目等操作&#xff0c;经常性发热严重&#xff0c;并且时间慢。直到昨天编译一个项目用时30分钟&#xff0c;电脑温度很高&#xff0c;并且有烧灼的味道&#xff0c;于是有了此篇文章。 二、…

关于Jar包提示找不到主类 找不到或无法加载主类

关于Jar包提示找不到主类 找不到或无法加载主类 当时看到教程打包一个正常的小型增删改查为50MB&#xff0c;也就是几十MB&#xff0c;可我打包得到的Jar包只有几MB&#xff0c;一直提示找不到主类application。经检查 根据方法&#xff0c;只需使用mvn clean 和 mvn packa…

大米自动化生产线设备:现代粮食加工的核心力量

随着科技的不断进步和粮食加工行业的快速发展&#xff0c;大米自动化生产线设备在现代粮食加工中的地位愈发重要。这些设备不仅大大提高了生产效率&#xff0c;还保证了产品的质量和安全&#xff0c;成为了现代粮食加工行业不可或缺的核心力量。 一、自动化生产线设备助力效率提…

厂房起火3D消防灭火安全救援模拟演练

深圳VR公司华锐视点依托前沿的VR虚拟现实制作、三维仿真和图形图像渲染技术&#xff0c;将参训者带入栩栩如生的火灾现场。佩戴VR头盔&#xff0c;参训者将真切体验火势蔓延的紧张与危机&#xff0c;身临其境地感受火灾的恐怖。 并且消防安全VR虚拟现实演练系统精心模拟了住宅、…

基于单链表实现通讯管理系统!(有完整源码!)

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;C语言实战项目 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、前言 友友们&#xff0c;这篇文章是基于单链…

005Node.js模块URL的使用

引入 URL 模块 要使用 URL 模块&#xff0c;首先需要在代码中引入它。可以使用以下代码将 URL 模块导入到你的脚本中&#xff1a; const url require(url);实例代码 const urlrequire(url); var apihttp://www.baidu.com?nameshixiaobin&age20; console.log(url.parse(…

Android应用和开发环境

&#x1f308;个人主页&#xff1a;小新_- &#x1f388;个人座右铭&#xff1a;“成功者不是从不失败的人&#xff0c;而是从不放弃的人&#xff01;”&#x1f388; &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f3c6;所属专栏&#xff1…

70 个常用的GIS Python 库

由于其多功能性、广泛的库生态系统和用户友好的语法&#xff0c;Python 已成为地理信息系统 (GIS) 和遥感领域的主导语言。这个 70 个地理空间 Python 库的汇编展示了可用于 GIS 和遥感数据处理和分析的丰富工具包。 Python 在 GIS 中的重要性源于它处理复杂地理空间数据的能力…

rancher踩坑日志:prometheus访问kubelet 10250端口提示鉴权失败

该原因是因为kubectl禁止了非授权用户访问10250端口来获取node的数据。 解决思路&#xff1a; 添加prometheus访问kubelet时带上证书进行验证匹配 --> 由于我的prometheus是rancher安装的&#xff0c;不知道要怎么修改所以研究了一会没研究明白就放弃了。设置prometheus访问…

运动听歌哪款耳机靠谱?精选五款热门开放式耳机

随着人们对运动健康的重视&#xff0c;越来越多的运动爱好者开始关注如何在运动中享受音乐。开放式蓝牙耳机凭借其独特的设计&#xff0c;成为了户外运动的理想选择。它不仅让你在运动时能够清晰听到周围环境的声音&#xff0c;保持警觉&#xff0c;还能让你在需要时与他人轻松…

gym界面修改

资料&#xff1a;https://blog.csdn.net/weixin_46178278/article/details/135962782 在gym环境中使用mujoco的时候&#xff0c;有一个很难受的地方&#xff0c;界面上没有实时显示动作空间和状态空间状态的地方。 gym自己原始带的环境是用pygame画的图&#xff0c;所以在定义…

【爬虫+数据清洗+可视化分析】Python文本分析《狂飙》电视剧的哔哩哔哩评论

一、背景介绍 把《狂飙》换成其他影视剧&#xff0c;套用代码即可得分析结论&#xff01; 2023《狂飙》热播剧引发全民追剧&#xff0c;不仅全员演技在线&#xff0c;且符合主旋律&#xff0c;创下多个收视记录&#xff01; 基于此热门事件&#xff0c;我用python抓取了B站上千…

【SpringBoot】获取参数

获取参数 传递单个参数传递多个参数传递对象后端参数重命名传递数组传递 json 数据获取 URL 中参数上传文件获取 cookie 和 session获取cookie获取session 传递单个参数 RequestMapping("/user") RestController public class UserController {// 传递单个参数Reque…

力扣 | 160. 相交链表

import ListNodeInfo.ListNode;import java.util.HashSet; import java.util.Set;public class Problem_160_IntersectionOfTwoLinkedList {//双指针方法 public ListNode getIntersectionListNode(ListNode headA, ListNode headB){if(headA null || headB null) return nul…

S32K324 CANFD报文接收超限分析

文章目录 前言问题描述原因分析问题处理总结 前言 随着汽车软件复杂度越来越高&#xff0c;传输的数据越来越多&#xff0c;CAN总线到CANFD总线已经是发展的必然了。CANFD总线中单个报文ID可以传递至多64byte数据&#xff0c;对CAN Driver来说&#xff0c;所需的MCU资源也将变…

数据集学习

1&#xff0c;CIFAR-10数据集 CIFAR-10数据集由10个类的60000个32x32彩色图像组成&#xff0c;每个类有6000个图像。有50000个训练图像和10000个测试图像。 数据集分为五个训练批次和一个测试批次&#xff0c;每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机…

Ubuntu桌面系统安装成功后的简单配置

目录 更换软件源设置系统时间同步 更换软件源 本文使用的换源方法仅限于桌面版 前提有网络连接&#xff0c;能够访问互联网 在Ubuntu18.04桌面版中&#xff0c;点击左下角“显示应用程序”&#xff0c;搜索“软件更新器”&#xff0c;点击进入。 暂时不要点击立即安装&#xff…