每天给你送来NLP技术干货!


来自:老刘说NLP

传统的NLP任务中,通常将文本作为一个序列进行处理,而随着GNN图神经网络的兴起,将文本转换为图结构,并且使用GNN等模型进行建模的想法也逐渐被提出,并取得了一定的效果。

例如,利用句法依存分析Dependency parser、句法语义分析Sytantic parser、句法句子成分分析Constituency parser、抽象语义图分析AMR,可以建模文本序列中的句子依存信息、结构信息以及语义信息,这些图结构的数据可以编码实体tokens之间复杂的成对关系,学习更多句法上的特征。

本文主要介绍常见的文本图结构化方法,并分别从文本分类任务、实体识别任务中的构图案例进行举例说明,增强理解。

一、常见的文本图结构化方法

下面主要参考参考文献1,对Dependency Graph、Constituency Graph、AMR Graph、Information Extraction Graph等代表性的方法进行介绍。

1、Dependency Graph

依存句法分析树是描述一个句子词汇之间依存关系的结构化知识。可以使用Standfordparser、LTP、DDparser等分析器进行处理得到,词语的依依存关系,并将其转换成图依赖关系图。

在具体实现上:

例如对于are there ada jobs outside austin这一句话:

首先,获取依存关系数据。将依存关系树中的依赖关系表示为 (wi; relij; wj),其中wi, wj是由边类型relij连接的词节点(如其中词语are、there、ada等)。

从概念上讲,一条边表示一个依赖关系 "wi依赖于wj,关系为relij",并定义依存关系集合为Rdep。如上图中的:<are,aux,ada>、<there,expl,ada>等。

此外,为了考虑词语之间的相邻关系,可以在互为相邻的节点间构建一条双向边(如图中的双向箭头)。

其次,构建依存关系图G(V; E)。给定段落对于每个关系(wi; reli;j; wj)Rdep,添加节点vi (代表词wi)和vj(代表词wj),以及一条从节点vi到节点vj的有向边,边的类型为relij。

2、Constituency Graph

句子成分分析,能够捕捉一个或多个句子中基于短语的句法关系,只关注单个词之间一对一对应关系的依存分析不同,构成分析法对一个或几个对应的词的组合进行建模。

在实现上:

首先,由于经过成分分析后,得到的句法分析树是一颗层级树,有内部节点Vnt和叶子节点Vwords两种。

叶子节点通常为单个的词语,也称为终端节点,如上图中的词语集合。

内部节点指的是对应的成分块,如S、NP、VP、PP等,也称为非终端节点。

节点之间的关系可以通过节点之间在句法树上是否存在关联边来确定。

其次,构建一个句法组合图G(V;E)。其中节点V由非终端节点 Vnt和终端节点Vwords构成,E表示节点之间的关联关系。对于每个构成组合关系(wi; relij; wj)的词语,添加节点vi(代表单词wi)和 vj(代表单词wj),以及一条从节点vi到节点vj的有向边。

同样的,为了考虑顺序信息,对于每个词的节点对 (vi; vj)为原始文本中相邻的词,在它们之间添加一条具有特定顺序类型的无向边(如图中的双向箭头)。

3、AMR Graph

AMR图是有根的、有标签的、有方向的、无环的图,广泛用于表示抽象概念之间的高级语义关系,不同于句法上的特异性,AMR是高层语义的抽象化。

不同的句子如果在语义上相似的不同句子可以共享相同的AMR解析结果,例如,"保罗描述自己是一个战士 "和 "保罗对自己的描述:一个战士"。

在实现上:

首先,通过AMR分析后得到解析树。中包括名称和概念两种节点。其中名称(例如 "Paul")是节点实例的具体数值,概念是指英语单词(如 "boy")、PropBank框架集(如 "want-01")或特殊的关键词,两者的区别在于名字节点是唯一的身份,而概念节点是由不同的实例共享的。连接节点的边被称为关系(如图中:ARG0和:name),可以从带有边的节点对中提取这些AMR关系,表示为(ni; rij; nj)。

其次,在构图上,对于每个关系(ni; rij; nj) ,可以添加节点vi(对于AMR节点ni)和vj(对于AMR节点nj),并添加一条从节点vi到节点vj的有向边,边类型为rij,完成AMR图的构建。

4、Information Extraction Graph

信息抽取图的目的是抽取结构信息来表示自然句子中的高级信息。

在实现上:

首先,通过Openie等工具识别出句子中的实体、实体之间的共指关系三元组(如上图中名字 "Pual"、名词 "He "和 "一位著名的计算机科学家 指的是同一个对象),以及主谓宾三元组(如图中的paul,grew up in seatle),一同作为关系三元组数据(ni; rij; nj)。

其次,在构图环节。图G(V; E)IE节点和IE关系组成。对于每个关系 (ni; ri;j; nj) ,添加节点vi(代表主语ni)和vj(代表宾语nj),添加一条从节点vi到节点vj的有向边,并添加相应的谓词类型作为节点,然后将具有共指信息的实体之间建立关系边,实体之间存在其他主谓宾三元组关系的也建立关系边。

5、Discourse Graph

Discourse Graph,即话语图,描述了两个句子在逻辑上的描述关系,用于解决长文本之间的依赖。

在实现上:

首先,通过话语分析,识别一组句子上的句子关系,例如给定两个句子senti 和sentj,可以将话语关系定义为(senti; sentj),它表示话语关系 "句子sentj可以放在句子senti之后"。具体的,给定一个文档doc,首先将doc分割成句子集 V = sent1; sent2; …;sentm,使用话语分析,得到成对的话语关系集,表示为Rdis⊆V×V。

其次,构建话语图。话语图G(V;E)由句子节点和话语关系组成。给出文档doc和话语关系集Rdis,对于每一个关系,添加节点vi(代表句子senti)和vj(代表 句子sentj),并添加一条从节点vi到节点vj的有向边。

6、Knowledge Graph

知识图谱可以有效捕捉实体和关系,给定一个句子后,通过识别实体三元组,可以分别以头尾实体作为节点,实体之间的关系作为关系边,形成一个网络图结构。

在实现上:

将三重(e1;rel;e2)定义为知识库中的基本元素,其中e1是源实体,e2是目标实体,rel是关系类型。然后,我们添加两个结点v1(头实体e1)和v2(尾实体e2),并在KG中添加一条有向的 从节点v1到节点v2添加一条边类型为rel的有向边。

7、Topic Graph

Topic Graph主题图,是建立于多个文档之上,目的是在不同的主题之间建立模型不同主题之间的高层语义关系。

在实现上:

给定一组文档D = {doc1; doc2; ::;docm},首利用LDA等模型学习潜在的话题表示为T,然后构建话题图G(V; E),其中节点由文档与主题构成,vi(代表一个文档)和节点vj(代表一个主题),在该文档具有该主题的情况下,两个节点之间建立一个关系边。

8、Similarity Graph Construction

Similarity Graph相似性图, 目的是量化节点之间的相似性。给定一个语料库C,在相似性图G(V;E)中,图的节点可以可以被定义为不同的粒度级别,如实体、句子和文档。

在实现上:

首先,定义基本节点集为V,不考虑具体的节点类型,并可以通过各种机制来计算节点特征表示,如句子(或文档)的TF-IDF和实体的嵌入,并利用余弦相似度等方式计算节点对之间的相似性分数来表示节点对的边缘权重。

其次,删除权重小于一定阈值的边,完成图的构建。

二、文本分类任务中的构图案例

下面就其中几个代表性的工作进行介绍:

1、Text Level Graph Neural Network for Text Classification

该工作将文本中所有的words作为图中的节点 ,在相邻的words之间构建一条边 Graph 中节点,表示相邻words间的相邻关系。

2、Graph Convolutional Networks for Text Classification

该工作将 words 和 documents 作为构图中的节点,构建 word-document之间的关系边,并通过word在document中的TF-IDF值作为权重,构建word-word之间的关系边,并通过计算两个词语之间的点间互信息PMI作为权重。

3、Tensor Graph Convolutional Networks for Text Classification

该工作中的图由words和documents两类节点组成。首先,构建 word 与 document 之间的边,并将word在文档中的TF-IDF值作为权重;

其次,对于word-word之间的边,分成Semantic-based graph、Syntactic-based graph、Sequential-based Graph三种策略构图,其中:

Semantic-based graph通过LSTM得到每个word的表示,再利用余弦相似度计算两个word间的语义相似性,并将语义相似性达到一定阈值的words之间建立语义关系,并将该边在整个语料中的出现频率作为边的权重;

Syntactic-based graph通过句法依存分析Stanford CoreNLP parser得到词语之间的依存关系,构建words之间的边(虽然依存关系是有向的,但按照无向处理),并将该边在整个语料中的出现频率作为边的权重;

Sequential-based Graph通过滑动窗口的策略来构建词语之间的共现关系边,并将词语之间的点间互信息PMI作为边的权重。

实际上,BERT-GCN中也采用了类似的方法,将结点分为词结点与文档结点两种,则在词与词,词与文档之间建立关系边,并分别使用PPMI、TF-IDF赋予边的权重。

4、Aspect-Level Sentiment Analysis Via Convolution over Dependency Tree

句子的语义关系可以显著缩短aspect与对应的sentiment之间的距离,该文章将神经网络相与语义依存关系树相结合进行实体情感分类任务。

具体的,语义依存关系树可以看作是有n个结点的图,每个结点代表句子中的一个单词,图中每个边代表单词之间的语义依存关系。

而在构图环节,并不考虑句子之间的依存关系类型,而将句子的依存树G表示为一个 n×n 的邻接矩阵 A ,Aij 表示节点 i 到节点 j 的单向的连接关系,如果等于1,则说明有依赖关系,如果等于0,则没有依存关系。

三、实体识别任务中的构图案例

同样的,下面就其中几个代表性的工作进行介绍:

1、A Lexicon-Based Graph Neural Network for Chinese NER

受图结构能够打破 RNN 序列结构限制的启发,该工作提出了一种基于 lexicon信息图网络的识别方法,使 character 和 lexicon word 间有更充分的联系。

如上图所示,对于武汉市长江大桥这一句子,

该工作首先将每个句子被转化为一个有向图,每个字符被作为图中的一个节点。在边的构建上:

先每个lexicon words的第一个和最后一个字符间构建一条边,每条边代表了潜在的词语(lexicon word)特征。

然后,构建一个全局的中继节点,它与图中的每个边和点都相连, 用来汇聚所有边和再点的信息,从而消除词语之间的边界模糊(由于全局中继节点的存在,图中任意两个不邻接的节点之间都是彼此的二阶邻居,可以通过两次节点更新来接收彼此的非局部的信息);

最后,对以上的图结构进行转置,得到一个所有边都反向后的反向图,将反向图与原图中得到的字符表示进行拼接。

2、Leverage Lexical Knowledge for Chinese NER via Collaborative Graph Network

该工作构建了Containing-Graph(C-Graph)、Transition-Graph(T-Graph)以及Lattice-Graph(L-Graph)三种图,C-graph模拟了字符匹配词汇之间的联系,即词汇的语义信息和边界信息,用于整合自匹配词汇,T-graph在字符和最近的上下文匹配词之间建立直接连,L-graph通过多个跃点隐式地捕获自匹配词汇和最近的上下文词汇的部分信息。

在构建上,对于句子希尔顿离开北京机场了,以字符和成词词语lexicon words作为图中的顶点集合:{希 , 希尔,..., 希尔顿, , , ..., 北京机场},并在此基础上构建三种图:

Word-Character Containing graph:将Word和Character之间建立一条边,如希尔一词,分别与希、尔两个字符之间构建一条边。

Word-Character Transition graph:捕捉字符最近上下文的语义信息,建立lexicon words 与字符、lexion words与lexion words间的转移关系。如lexion word希尔与字符顿、字符顿和lexion word离开,lexion word希尔与lexion word离开之间建立一条边。

Word-Character Lattice graph:将 Lattice 的 LSTM 结构转变为图结构,具体的,对于每一个lexicon word与字符的首尾建立关系边,例如lexicon word希尔与字符希、尔,lexicon word休斯顿机场与字符休与场之间构建关系边。

3、A Neural Multi-digraph Model for Chinese NER with Gazetteers

该工作希望通过Gazetteer信息提高NER的性能,因此设计了一种多维图来完成NER任务。

在实现上,首先将语料中的每个字符作为一个节点在相邻的字符间构建一条有向边,然后根据 entity 所匹配的实体,在节点类型与对应entity的起始字符节点和结尾字符节点间建立边。

如上图所示,针对“张三在北京人民公园”,该图中有四种类型的词或字符,所以有四对节点。在构建边上,先按文本中词的顺序连接构成图中黑色的边(Vc1-Vc9),然后对文本中每一个匹配到的字典中的实体,如上图所示连接起包含起始和结束节点的对应词典类型的边(图中彩色的边)。

四、总结

本文主要介绍常见的文本图结构化方法,并分别从文本分类任务、实体识别任务中的构图案例进行举例说明,增强理解。

合理的根据具体任务,将文本进行图结构化,并使用GNN等图神经网络,具有很大的潜力,我们可以关注这方面的工作。

参考文献

1、https://mp.weixin.qq.com/s/nS5wasHw0nC58p2sHRBxDA

2、https://arxiv.org/abs/2106.06090

3、https://mp.weixin.qq.com/s/dYNe5itqz6hyM8tcxcdrLQ

4、https://www.aclweb.org/anthology/D19-1345/

5、https://github.com/kuoluo1995/text-classification

6、https://www.aclweb.org/anthology/D19-1396.pdf

7、https://arxiv.org/pdf/2001.05313.pdf

8、https://www.aclweb.org/anthology/P19-1141.pdf

9、https://www.aclweb.org/anthology/D19-1569.pdf


投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

GNN | 文本序列的常用构图方法与代表案例剖析相关推荐

  1. 这六大方法,如何让 Transformer 轻松应对高难度长文本序列?

    2020-06-08 05:24:09 编译 | Mr Bear 编辑 | 丛末 众所周知,多头注意力机制 (Multi-Head Self-Attention) 的计算开销很大.在处理长度为 n 的 ...

  2. 结合案件要素序列的罪名预测方法

    点击上方蓝字关注我们 结合案件要素序列的罪名预测方法 孙倩1, 秦永彬1,2, 黄瑞章1,2, 刘丽娟3, 陈艳平1,2 1 贵州大学计算机科学与技术学院,贵州 贵阳 550025 2 公共大数据国家 ...

  3. Deep-Learning-with-Python] 文本序列中的深度学习

    将文本数据处理成有用的数据表示 循环神经网络 使用1D卷积处理序列数据 深度学习模型可以处理文本序列.时间序列.一般性序列数据等等.处理序列数据的两个基本深度学习算法是循环神经网络和1D卷积(2D卷积 ...

  4. 文本数据的机器学习自动分类方法

    来源:http://blog.csdn.net/jdbc/article/details/50586042 本文为第一部分,着重介绍文本预处理以及特征抽取的方法. 随着互联网技术的迅速发展与普及,如何 ...

  5. 【GCN】在NLP中应用GCN的几种构图方法整理

    作者:Carrie GCN 的兴起为许多NLP问题的解决提供了新的思路.通过句法依赖树构建图结构,基于此通过GCN进行NLP问题的解决已经得到了广泛应用.那么除此之外,还有哪些方法可以用于在文本中建立 ...

  6. 在NLP中应用GCN的几种构图方法整理

    GCN 的的兴起为许多NLP问题的解决提供了新的思路.通过句法依赖树构建图结构,基于此通过GCN进行NLP问题的解决已经得到了广泛应用.那么除此之外,还有哪些方法可以用于在文本中建立图结构从而使用GC ...

  7. 【设计干货】那些优秀设计师在界面中必用的一些构图方法

    "人家设计得真好!"可是好在什么地方呢,却说不出来.这是阻挡你成为优秀设计师的一大障碍.设计是我们的本行,不会用设计语言来解构画面,是说不过去的. 移动互联网设计发展到今天,有很多 ...

  8. .net下的富文本编辑器FCKeditor的配置方法(图)原创

    .net下的富文本编辑器FCKeditor的配置方法(图)原创 FCKeditor是一款开源的富文本编辑器,几乎支持所有流行的Web开发语言,版本稳定,用户多,可配置性好. 以前做Java和php的时 ...

  9. java 中常用方法_java_中常用的方法总结

    8月1日 练习: 合理覆盖Cat数据类型的,equals()方法 Cat.java 1 覆盖hashCode() 返回的整型值是唯一的 int    hashCode() 用法: 一般使用String ...

最新文章

  1. Qt 获取文件夹下所有文件
  2. UML总结—时序图(Sequence Diagram)和协作图(Collaboration Diagram)
  3. 炸金花比牌规则java_陈陈来给你们炸金花的简易纸牌规则教学与心态指导
  4. 面试被问进线程的区别
  5. 微服务网关总结之 —— zuul
  6. YUV格式学习:YUV422P、YV16、NV16、NV61格式转换成RGB24
  7. ElasticSearch讲解
  8. 如何准备 Java 初级和高级的技术面试
  9. Unity RTS 策略游戏等建造系统仿照COC游戏的插件 - City Building Perfect Kit
  10. 使用Redis,QQ邮箱模拟验证码验证
  11. 家谱链-家谱族谱制作
  12. 国内云市场,腾讯云、阿里云、华为云,谁能更胜一筹呢?
  13. .net编程的十大技巧 转载之Jeffery.Sun
  14. matlab三角形外接圆
  15. 如何解决@RequestParam无法接收vue+axios传递json数据
  16. 使用 jquery.wordexport.js导出的Word排版
  17. 【黄啊码】七夕来了,用JQuery给你女票表白吧
  18. Chrome下如何复制禁止复制网页上的文字
  19. #2021,我们的浮生一日#
  20. Tick 数据在技术上究竟是什么东西?

热门文章

  1. 如何进行通达信交易接口连接?
  2. labview2019百度网盘安装(内附教程)
  3. 【HTML+CSS】元素垂直对齐-vertical-algin
  4. 学习多线程中的 Future 模式一篇文章就够了 !!!
  5. python分析数据结构_python 数据结构+数据处理
  6. 4.13日第12次作业,16章外包,17章需求,19章组织级与大型项目
  7. 【圣诞节】简单代码实现圣诞树|圣诞贺卡 | 快来为心爱的她送上专属的圣诞礼物叭~
  8. python实战演练(六)员工信息查询系统
  9. 计算机网络施工资质,弱电工程是什么?弱电工程施工资质级别标准
  10. android x86 wubi,Wubi