首页 > 其他分享 >论文阅读:基于长句简化的中文开放关系抽取

论文阅读:基于长句简化的中文开放关系抽取

时间:2024-05-09 17:24:15浏览次数:23  
标签:中文 抽取 模型 简化 序列 长句 句子

熊建华,韩永国,廖竞,寇露彦,吴昌述.基于长句简化的中文开放关系抽取[J].计算机技术与发展,2023,33(02):203-207+213.

目前中文开放关系抽取存在的问题:

  • 目前中文开放关系抽取的主要方法都是基于规则和模板的,这些方法需要以自然语言处理工具的处理结果为基础进行抽取。 然而自然语言处理工具在处理复杂长句时,分词、词性标注、句法分析的准确率都明显下降,严重影响关系抽取的质量。
  • 另一方面,在复杂长句中通常存在多个关系数据,现有的开放关系抽取模板很难做到全面覆盖。
  • 因此,该文借助序列到序列神经网络模型将复杂长句简化为多个结构简单的子句,然后,利用自然语言处理工具对每个子句分别进行处理,最后,通过词性、句法等约束实现开放关系抽取。

长句简化数据集构建

  目前中文领域暂时没有长句简化相关的数据集。该文使用手工标注和回译策略两种方法构建了一个中文长句简化语料库。

手工标注:

  采用2019年中文维基百科的数据,进行长句简化数据集的手工标注。在进行手工标注前,需要先对中文维基百科数据进行预处理。

  • 首先,对数据按句号进行分句;
  • 然后,使用哈工大的LTP(Language Technilogy Platform)工具对句子进行分词,筛选出词数大于30的句子;
  • 最后,利用LTP对句子进行实体识别,筛选出包含两个以上实体的句子,确保选出的句子包含关系数据。


  通过对筛选后的复杂长句分析发现,大多数句子都可以采用分解法和指称法进行手工简化。

  • 分解法是将长句中的复杂成分独立开来,与相应的成分构成若干短句。(并列的简单拆分)

原语句:“狐猴科是哺乳纲灵长目的一科,是树栖动物,主要分布于非洲的马达加斯加岛。”
分解后::“狐猴科属于哺乳纲灵长目”;“狐猴科是树栖动物”;“ 狐猴科主要分布于非洲的马达加斯加岛”

  • 指称法是指将长句中的复杂成分用一个词语来指代,与相应的成分构成“总说”的单句,再把复杂成分一一展开形成“分说”的单句,变成“总分句群”。

原语句:“龙卷风是在极不稳定天气下由空气强烈对流运动而产生的一种伴随着高速旋转的漏斗状云柱的强风涡旋。”
指称后:“龙卷风是一种强风涡旋”;“龙卷风由空气强烈对流运动产生”;“龙卷风伴随漏斗状云柱”。

  从预处理后的长句数据中随机抽取出4000条长度大于30的句子,并按照上述方法对筛选出的句子进行手工简化。

回译策略

  利用回译的方法,从英文的长句简化语料中获取原始数据,再从中筛选出2000条数据。这一部分语料来源于WikiSpilt[1]。WikiSpilt数据集是从英文维基百科编辑历史数据中收集而来的,包含100万条句子简化实例。

  • 首先,利用谷歌翻译接口对原始数据集进行翻译,删除翻译后词语缺失、重复、翻译错误的噪声数据;
  • 然后,利用LTP工具对句子进行分词和实体识别,筛选出实体数目大于2且原始句子长度大于30的句子及其简化子句,再从中随机挑选出2000条数据;
  • 最后,将两部分数据合并得到6000条长句简化数据。

基于长句简化的中文开放关系抽取

  关系抽取模型的大致工作流程如图2所示。分为长句简化和关系抽取两部分。

长句简化模型

  目前对中文长句的简化主要是利用符号分割,但它只能分割结构独立的子句,部分结构不独立的子句中仍然可能包含关系数据。

  本文借鉴英文长句简化的思路,直接利用机器翻译领域的序列到序列(seq2seq)神经网络模型对长句简化任务进行建模,将其作为单语言的翻译任务。

  现有的seq2seq模型通常采用RNN与LSTM神经网络,存在编码器结构过于简单以及编码阶段信息利用率低的问题,在语料资源较少的情况下,性能较差。

  BERT模型通过结合多维语义特征获取词向量,可以得到更细粒度的文本上下文表示,极大地提升了模型的特征提取能力。

  如图3所示,该文以BERT的双向Transformer结构作为基础,构建序列到序列模型。由于本身结构限制BERT模型通常只用于输入编码,并不能直接适用于文本生成任务。因此,采用UniLM的seq2seg Mask机制对BERT的Transformer结构进行改造,仅对输入部分的第二段文本进行下三角遮掩。这样当Mask字段处在第一段文本时,模型可以利用文本中的所有token信息进行预测。当Mask字段处在第二段文本时模型可以利用第一段文本的全部token信息,同时还可以利用Mask字段本身和它左侧的全部token信息。通过这种方式,可以实现序列到序列的效果。


  为了减少不必要的计算,对bert中的vocab.txt文件进行了精简,只保留预料中使用到的token。

  训练阶段,将复杂句S1和简单句子集S2连接成一个序列,以[SOS]s1[EOS]s2[EOS]的格式输入,S2中各个子句间使用“。”进行分割。

  根据词表获取序列的Token后,再对序列的词、位置、Segment(用于区分输入序列和目标序列)进行embedding计算,最后将三种embedding求和得到最终的文本向量。

  由于中文词语常由多个字词连接而成,原始的BERT模型在预训练过程中,采用的是以字粒度为基础的Mask方式,会分割原本完整的中文词语。因此,引入BERT-WWM预训练模型参数,BERT-WWM利用全词Mask方式进行训练,将同一词语进行整体遮掩,能更好地保证中文句子的语义完整性。

  在预测阶段,加载训练好的模型权重,输入待简化长句进行预测,在解码时利用beamSearch搜索算法优化预测序列得到简化句子集。

关系抽取

  对简化后的短句,利用词性、句法规则进行关系抽取。

(1)利用LTP工具处理简化后的句子,获取词性标注,依存句法分析的结果;
(2)获取句子的主语和宾语作为基础实体。将与句子核心词相连的实体词作为起点向前搜索,如果存在与实体词具有定中关系的名词、名词性动词等,则将其与起点的实体词组合成语义完整的实体;
(3)根据依存句法分析结果找到句子的核心词;
(4)以核心词为起点,对与之相连的词语进行判断。如果存在并列的动词或者动补结构的介词,则将其与核心词组合成新的关系词,如果不存在则直接将核心词作为关系词;
(5)将关系词与对应实体组成关系三元组输出;
(6)将各个子句中抽取出的关系数据进行合并成关系数组输出。

实验与分析

选用了如下三种基准模型进行长句简化对比实验:

(1)Seq2Seq+Attention: 该模型将序列到序列框架与注意力机制结合,是目前研究文本生成任务的标准结构模型;
(2)Pointer-Generator: 该模型在Seg2Seg模型的基础上,通过指针网络选择生成词,能有效解决生成过程中出现的未登录词的情况;
(3)BERT+LSTM:该模型采用Seq2Seq基础架构,将Encoder替换为双向Transformer编码,Decoder 采用LSTM。使用BERT模型对编码端参数进行初始化处理,解码端从初始状态训练。

SARI值:SARI是用于评估文本简化任务的一个指标,由Xu等人在2016年提出。它旨在评估生成的简化文本在保留原文信息、删除非必要信息以及添加必要信息方面的效果。
SARI分别计算生成文本中与原始文本和参考文本相比的n-gram的准确度、删除和添加的得分。
SARI得分是三者的平均值,分别针对添加、保留和删除操作进行评估。

BLUE值:BLEU是一种广泛使用的机器翻译评估指标,由IBM的研究人员在2002年提出。它主要通过比较机器生成的翻译和一个或多个人工参考翻译之间的相似度来评估翻译的质量。
BLEU计分通过测量机器翻译输出中的n-gram(连续n个单词的序列)与参考翻译中n-gram的匹配程度来工作。
计算包括多个n-gram长度(通常是1到4),每个长度的匹配得到一个精确率。
这些精确率的几何平均数然后与一个惩罚因子(brevity penalty)相乘,该惩罚因子用于惩罚过短的翻译输出,从而避免简单地通过省略输出中的词汇来提高得分。

选取了CORE、DSNFS系统进行开放关系抽取对比:

CORE利上下文信息及句法结构信息进行开放关系抽取。
DSNFS对中文中存在的特殊语言现象进行了总结,提出了一种基于依存语义范式的抽取方法,可以对网络文本进行无监督的灵活的抽取。
将在简化句子的实验结果表示为CORE-SS和DSNFS-SS。

最后,对抽取中的错误关系数据和未抽取出的关系数据进行了分析,分析结果如表3所示。

结束语

  该文提出了一种基于长句简化的中文开放关系抽取方法。首先,利用序列到序列模型对复杂长句进行化简,然后,针对化简后的句子进行开放关系抽取。实验结果表明,该方法能有效提高开放关系抽取对复杂长句抽取的准确率和召回率。此外,对实验结果中的错误进行了归纳总结,为之后的研究提供了参考。

参考文献:
[1] Botha J A, Faruqui M, Alex J, et al. Learning to split and rephrase from Wikipedia edit history[J]. arXiv preprint arXiv:1808.09468, 2018.

标签:中文,抽取,模型,简化,序列,长句,句子
From: https://www.cnblogs.com/zinger/p/18182741

相关文章

  • Windows程序读取不了中文路径问题
    问题描述今天调试发现win32接口GetFileAttributesW居然不支持中文路径,于是寻找解决方案,找了半天,尝试用boost的fileystem库发现能用,而且boost能跨平台!不支持中文win32接口获取文件属性,当传入参数带有中文字符时,它获取的属性就会异常DWORDGetFileAttributesW([in]LPCWSTRlpFi......
  • 常见中文乱码类型及其转换脚本
    forfin"$@"doif[[-f$f]];thenfileName=$(basename${f})filePath=$(dirname${f})iconv-fGB18030-tUTF-8$f>${filePath}/.${fileName}.tmpmv${filePath}/.${fileName}.tmp$ffidoneforfin......
  • 界面组件DevExpress Reporting中文教程 - 如何按条件显示页面水印?
    DevExpressReporting是.NETFramework下功能完善的报表平台,它附带了易于使用的VisualStudio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。从防止未经授权的使用到建立所有权和真实性,文本和图像水印可以作为数字指纹。在最近的更......
  • 中文语料库 没有类似https://www.english-corpora.org/里的 A/B compare的好用的
    BCC一旦用~,统计,就查不全CCL有个“搭配查询”但是很不好用,必须指明词性和词长/距离,coca里任意1-4距离,词性也是任意 搭配查询,用于查询(对比)不同动词前后的共现名词的频次差异。例如:查询表达式“刷(n,=2)|擦(n,=2)”,表示查询“刷”和“擦”后面的词长为2的名词。两个动词......
  • linux系统中文件夹和目录的区别
    *linux系统中目录和文件夹的区别:*Linux系统目录结构是一种层次化的文件系统结构,它定义了Linux操作系统中各个目录的作用和存放内容的规范。在Linux系统中,目录和文件的底层数据结构都是通过inode(索引节点)来进行管理的。inodes存储有关文件系统对象(如文件和目录)的元数据,比......
  • Nginx配置中文详解
    Nginx配置文件nginx.conf中文详解参考:Nginx入门指南https://www.w3cschool.cn/nginx/######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组userwwwwww;#nginx进程数,建议设置为等于CPU总核心数。worker_processes8;#全局错误日志定义类......
  • golang生成二维码图片,支持图片下方增加多行居中文本
    golang生成二维码图片,支持图片下方增加多行居中文本效果工具类代码packageUtilsimport( "bytes" "fmt" "github.com/golang/freetype/truetype" "github.com/skip2/go-qrcode" "golang.org/x/image/font" "golang.org/x/image/math......
  • Markdown和Latex中文字上下标的方法
    技术背景在Markdown和Latex中,如果只是写公式,不论是行内公式还是行间公式,都可以直接使用^和_这两个符号实现上下标。但有个问题是,如果只是使用公式来做上下标,出来的字体是斜着的。例如这样的语法:$$P_{OK}$$输出结果是这样的:\[P_{OK}\]但是有些时候想要的字符不能使用斜体,这......
  • c++中文编码问题
    std::string或者constchar*,本质上都是二进制,不包含编码属性,其编码信息来源于赋值语句,QString以utf16编码,默认构造或赋值的字面量假定为utf8,若是其它编码比如ansi,可以调用QString::fromLocal8bit一、字面量的编码取决于文件,即如果在c++源文件中有直接赋值1)、constchar*s="......
  • 中文破折号,连接号如何区分,如何用?
    论文写作中常常会涉及破折号,连接号,因为它们很相似,作者在写作过程中不进行区分,抓住一个就用。显然破折号,连接号是不同的。下面截取了《标点符号用法(GB/T15834—2011)》中的部分内容供大家参考。 01破折号定义:标号的一种,标示语段中某些成分的注释、补充说明或语音、意义的变化......