【NLP】NLP任务增强:通过引入外部知识来提供额外信息
作者 | 夜小白
整理 | NewBeeNLP
0、前言
NLP任务中,常见的做法是根据「当前输入」进行建模,进而设计出我们的模型,通常用到的信息只有「当前局部的信息」。
这和人类最大的区别就是我们在理解语言的时候,我们会用到我们之前学习到的知识,比如说到“自然语言处理”,我们就可以联想到“文本匹配”、“阅读理解”、“BERT”等等,而我们会利用这些外部知识来加强自己的理解,如果没有用额外的知识,比如接触到我们一个不熟悉的领域,我们也很难完全理解语义。而目前NLP常见做法只利用了输入信息,没用利用外部知识,理解层次偏低,举个例子,文本匹配任务中:
Query | Title |
---|---|
「新冠肺炎」可以通过完好的皮肤传播吗 | 「新型肺炎」会通过皮肤传播吗 |
「IPhone手机」多少钱 | 「IPhone手机壳」多少钱 |
一般的文本匹配模型很容易误判上面Query-title为匹配,因为上述Query-title文本字面组成非常相似,比如「新冠肺炎」和「新型肺炎」,「IPhone手机」和「IPhone手机壳」的embedding可能非常相似,导致模型计算出来的相似度很高,其中一个原因就是因为模型没有先验知识,并不知道「IPhone手机」和「IPhone手机壳」是两个不同的东西,如果能在模型中引入外部知识,让模型提前了解「IPhone手机」和「IPhone手机壳」的概念,那么就提高的模型的理解层次,也能提高任务效果。
现在知识图谱,图卷积神经网络也是非常热门,知识图谱作为一个常用的外部知识库,有很多工作都在研究如何将其引入各种NLP任务进行知识增强,最近也是看了几篇论文,在这里做一下总结。
1、当推荐系统遇上知识图谱
「(RippleNet)」 RippleNet: Propagating User Preferences on the Knowledge Graph for Recommender Systems. Proceedings of the 27th ACM International Conference on Information and Knowledge Management..[PDF][1]
这篇论文在推荐系统的排序任务上引入了知识图谱的信息进行任务增强,主要是从下面三个方面考虑:
知识图谱可以引入各个Item之间的语义相关性,有助于找到潜在的联系,从而提高推荐的准确性
知识图谱还可以通过类型关系,来合理扩展用户的兴趣,增加推荐项目的多样性
知识图谱还可以连接用户的历史记录和推荐记录,从而解决推荐系统冷启动问题,并且可解释性好
从上面可以看出,通过知识图谱我们可以推理出用户看过电影的导演、或者类型,并且可以进一步得到同导演或者同类型的电影,从而对用户进行推荐。
模型结构
论文中提出的RippleNet结构如上图所示,之所以叫Ripple
是因为信息在知识图谱上的传播就像雨滴落在水面形成的Ripple
,每次都会往外传播一层,并且越外部的信息作用越小。整个模型输入为用户
和物品 ,输出为用户点击该物品的概率。
RippleNet运算过程如下:
选取用户点击历史为「知识图谱中的种子」,作为知识图谱的初始三元组集合Ripple Set,这一步主要是利用用户历史信息来进行任务增强
每一步(Hop)会先根据Item embedding
和Ripple Set(其实就是知识图谱中的三元组集合)来计算得到这一部的隐层表示输出 ,计算方法类似于attention(加权平均),通过这种方式相当于在知识图谱上进行了知识推理,比如从用户历史The Green Mile
我们推理到了导演为Steven Spielberg
,进而推理出同样导演的电影Raiders of the Lost Ark
,这样的话我们就利用到了外部知识,通过三元组之间的关系来增强任务最后就是信息的融合,将每步推理得到的隐层输出表示
相加,作为用户最终 embedding ,然后与物品 embedding 计算得到最终的点击概率(比如说余弦相似度)
引入知识方法
从上面的分析可以看出,RippleNet中引入外部知识的做法主要「通过用户历史信息建立Ripple Set,也就是对应到知识图谱中的节点,并且在每一步都会传播到相邻节点并计算隐层表示输出」 ,计算方法类似于attention(其中query为上一层的输出,key和value为当前的Ripple Set中的实体embedding ),具体的计算公式有兴趣的话可以看论文。
2、当文本匹配遇上知识图谱
Entity-Duet Neural Ranking: Understanding the Role of Knowledge Graph Semantics in Neural Information Retrieval. ACL. [PDF][2]
从前言的例子可以看出,文本匹配中如果我们能够引入实体的外部信息,就能够很好的帮助模型实现更高层次的语义理解,而这篇论文正是将CN-DBpedia构建的知识图谱作为外部知识库,为模型引入额外的实体特征从而进行任务增强。
模型结构
图中的Enriched-entity Embedding
即是引入的外部实体信息,通过原始的word embedding
与引入的Enriched-entity Embedding
矩阵进行交互从而计算出最后的score。Enriched-entity Embedding
则由Entity Embedding
、Description Embedding
以及Type Embedding
信息融合得到,计算方法如下:
「Entity Embedding」:
,从预训练好的知识图谱embedding获取(比如TransE)「Description Embedding」:从实体的描述信息中获取embedding,首先用CNN对实体描述进行n-gram卷积:
之后使用max-pool获得 Description Embedding
:
「Type Embedding」:每个实体可以是多种种类,论文中采用了attention的方式来获得
Type Embedding
,首先是通过type embedding
层获得各个种类embedding
之后通过attention计算得到最后的Type Embedding
attention score 计算方式如下:
最后
Enriched-entity Embedding
则由Entity Embedding
、Description Embedding
以及Type Embedding
进行信息融合计算得到:
引入知识方法
Entity-Duet Neural Ranking Model 引入外部知识的方式是将文本匹配任务中的输入Query和Document实体在知识图谱中的embedding作为额外的监督信息添加到模型中,不仅用到了实体自身embedding,还用到了实体描述(description)的embedding信息,以及实体种类(Type)的embedding信息,这样的话模型可以理解实体的具体含义,而不是停留在字面上的理解,比如「IPhone手机」和「IPhone手机壳」这样的概念,通过引入知识图谱信息就可以很好解决。
3、当预训练模型遇上知识图谱
ERNIE: Enhanced Language Representation with Informative Entities. ArXiv, abs/1905.07129.[PDF][3]
最后要介绍的是在BERT预训练中引入外部知识库,ERNIE这篇论文中使用维基百科语料库进行预训练,并且使用语料中的 Anchor Link 来获取实体,通过 Wikidata 训练出的 TransE向量作为实体的特征,输入BERT模型中预训练作为额外的监督,通过这种方式可以大大提高在 Entity Typing 和 Relation Classification 任务上的效果。
模型结构
ERNIE中修改了BERT中的Encoder为Knowledge-Encoder,从图上可以看出,输入除了原始的句子tokens之外,还有实体tokens,简单说下每个K-Encoder的计算步骤:
首先是input token 和 entity token自己的multi-head self-attentions(就是标准的MH-ATTs)
之后进行aggregate操作,将input tokens与entity tokens进行信息融合,得到这一层的embedding输入,也是下一层的embedding输入
引入知识方法
ERNIE中修改的BERT原始Encoder结构,额外加入了entity embedding输入,并且使用了TransE作为初始输入,通过这种方式,就可以在预训练中引入大量的外部知识,提高下游任务的效果。实验表明在Entity Typing和Relation Classification上取的了很好的效果。
总结
在NLP任务中引入外部知识是一个很好的任务增强方式,带着先验知识进行推理,也正符合人类思考的习惯,从上面总结可以看出,目前利用外部知识库的主要方式都是引入知识图谱中的实体信息。更具体一点,引入实体各种embedding 信息作为模型的额外输入,我在想知识图谱作为一个有结构的图,是不是可以用上知识库中的结构信息呢?我下面说下自己的几点思考:
将文字表达转换为图结构,然后在知识图谱中进行匹配,这样的话可以更好地利用图的结构信息,比如推理路径,也可以使模型更具有可解释性
引入GNN,在图上进行推理,提高语义理解的层次
目前只是将自己学到的引入外部知识的方法做了个小结,应该已经有很多研究尝试将各种知识库引入NLP任务来提供额外信息,以后有机会再详细总结一下啦~
一起交流
想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定要备注信息才能通过)
本文参考资料
[1]
[PDF]: http://dl.acm.org/doi/10.1145/3269206.3271739
[2]
[PDF]: https://arxiv.org/pdf/1805.07591.pdf
[3]
[PDF]: https://arxiv.org/pdf/1905.07129.pdf
- END -
往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑温州大学《机器学习课程》视频
本站qq群851320808,加入微信群请扫码:
【NLP】NLP任务增强:通过引入外部知识来提供额外信息相关推荐
- NLP任务增强:通过引入外部知识来提供额外信息
作者 | 夜小白 整理 | NewBeeNLP 0.前言 NLP任务中,常见的做法是根据「当前输入」进行建模,进而设计出我们的模型,通常用到的信息只有「当前局部的信息」. 这和人类最大的区别就是我们在 ...
- 引入外部知识的社交平台立场检测模型
摘要 针对社交平台的用户评论进行立场检测,旨在对某一特定话题下的用户评论进行立场分类.现有立场检测研究只关注评论文本的内部语义特征,而忽略了与评论文本相关的外部知识.通过将评论的关键信息映射到知识图谱 ...
- 论文浅尝 | 如何利用外部知识提高预训练模型在阅读理解任务中的性能
论文笔记整理:吴桐桐,东南大学博士生,研究方向为自然语言处理. 链接:https://www.aclweb.org/anthology/P19-1226/ 近年来,机器阅读理解已经逐渐发展为自然语言理 ...
- nlp文本数据增强_如何使用Texthero为您的NLP项目准备基于文本的数据集
nlp文本数据增强 Natural Language Processing (NLP) is one of the most important fields of study and researc ...
- 论文浅尝 | 在生成式多跳机器阅读任务中引入外部常识知识
Commonsense for Generative Multi-Hop Question Answering Tasks 链接: https://arxiv.org/abs/1809.06309 背 ...
- NLP:数据增强/Data Argumentation【词汇替换、随机Mask、回译、添加噪声】
数据增强技术在计算机视觉中应用的比较广泛,但是在 NLP 中却很少能得到有效的应用.本质原因在于图像中的一些数据增强方法,比如将图像旋转几度或将其色度转换为灰度,在增强数据的同时并不会改变图像本身的含 ...
- NLP文本数据增强热门技术
NLP文本数据增强热门技术 背景 word替换 同义词替换 词向量替换 掩码语言模型(Masked Language Model,MLM) 基于tfidf的词替换 反向翻译 文本表面转换 随机噪声 注 ...
- 利用外部知识增加QA答案自然程度,这是阿里的问答模型新思路丨EMNLP
宋恒宇 发自 凹非寺 量子位 报道 | 公众号 QbitAI 自然语言处理曾被认为是人工智能皇冠上的璀璨明珠,现如今再随着图像识别等技术的长足进步,这颗明珠似乎也显得有些暗淡无光了. 但是,一篇来自阿 ...
- 将外部知识整合到群体智能中,以获得更具体的知识
Incorporating External Knowledge into Crowd Intelligence for More Specific Knowledge Acquisition 关键知 ...
最新文章
- Sublime Text3 自定义快速生成代码
- Zookeeper_zkClientAPI讲解
- mysql008where.or.in查询
- SSM:web目录下有的jsp和图片不能显示,有的可以显示的解决方法
- 打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...
- 数据库的四大特性和事务隔离级别
- TIT 数据库实验一 在SQL Server中创建数据库(SQL入门教学一 从0到1)
- 多路IO复用与异步IO
- Android adb 常用命令
- Swing 主题 - FlatLaf
- 创建脚本的步骤整理(转发)
- 十大淘宝搜索作弊行为
- 百度地图LV1.5实践项目开发工具类bmap.util.jsV1.0
- 如何从程序员升级到架构师?
- 【珍藏版】 2012Java开发工程师必备精品资料(115个)
- 【Java】使用smtp和pop3协议,实现邮件收发
- 京东11.11:京东中间件如何支撑起每一场大促
- 程序员下班后都忙些啥?| 程序员有话说
- python gps_学习日志-0004:python 模拟 GPS, $GPRMC $GPRMC
- 工业智能网关BL110详解之2:实现三菱 PLC FX1S 接入OPC UA 云平台