摘要提取实践-基于依存句法和语义角色标注的三元组抽取

本篇文章主要介绍摘要提取的方法。
本项目完整源码地址:
链接: https://pan.baidu.com/s/1yymEHofUoFzjbN_mdThsKw 提取码: yd3z

项目博客地址:
https://blog.csdn.net/qq_29153321/article/details/104037335

一、背景介绍

目前自动摘要(Automatic Summarization)的方法主要有两种:
Extraction 是抽取式自动文摘方法,通过提取文档中已存在的关键词,句子形成摘要;
Abstraction 是生成式自动文摘方法,通过建立抽象的语意表示,使用自然语言生成技术,形成摘要。
这两种方法都有一定的局限性,第一种抽取式摘要提取的结果普遍太冗长,并且不一定能完全概括文章中心思想;第二种生成式摘要提取的方法主要基于seq2seq模型进行改进的,目前还不太成熟。

二、基于依存句法和语义角色标注的事件三元组抽取

句法分析是自然语言中关键技术之一,其主要任务时确定句法结构、句子中的词汇之间的依存关系;因而主要包括两方面的内容:一、确定语言的语法体系,即对句子结构给与形式化定义;二、句法分析技术,根据语法体系,推导出句子的句法结构,以及句法单位与句法单位之间的关系。

语义依存分析是分析句子中的各语言单位的关联,并将语义关联以依存的结构进行展示;语义依存分析目标是跨越句子表层句法结构的束缚,直接获取深层的语义信息。浅层语义分析是依赖于句法分析的结果,而深层的语义分析并不都跟句法分析结果产生影响,这就是语义分析与句法分析的不同之处。

语义角色与语义分析之间存在着关联性,语义角色只关注的是谓词的论元以及谓词与论元之间的关系;语义分析不仅关注谓词与论元的关系,还关注谓词与谓词、论元与论元、论元内部的语义关系。其语义分析更加的全面。

语义依存关系主要分为三类:1、主要语义角色,每一种语义角色对应存在一个嵌套关系和反关系;2、事件关系,描述两个事件的关系;3、语义依附标记,标记说话者语气等依附信息。

目前哈工大的分词pyltp提供了相应的模块,pyltp包的主要功能为:分句(SentenceSplitter)、分词(cws.model)、词性标注(pos.model)、实体命名(ner.model…)、依存句法分析(parser.model)、语义角色分析(srl)、语义依存分析(暂不提供这个功能)

基于依存句法的三元组抽取

1、对于每个词生成一个该词的依存句法的儿子节点,主要存储关系和对应儿子词的位置;

2、对没歌词生成一个该词的父子数组的依存结构,主要是记录该词的词性、父节点的词性以及他们之间的关系;

3、循环每个词,找到具有动宾关系、定语后置动宾关系、介宾的主谓动补关系,并进行提取;

4、对于提取主宾中的词,需要在里面寻找具有相关依存结构的词,剔除不需要的词;

基于语义角色标注的三元组抽取

利用ltp的语义角色对句子进行标注,统计是否存在svo的结构,如果存在,则提取,否则,换依存句法进行提取。
https://blog.csdn.net/Zh823275484/article/details/88037951

二、摘要提取实践部分

本文提出了一种新的提取摘要的方法,基于三元组抽取
依存分析

1 主谓关系  SBV subject-verb  我送她一束花 (我 <-- 送)
2 动宾关系  VOB 直接宾语,verb-object  我送她一束花 (送 --> 花)
3 间宾关系  IOB 间接宾语,indirect-object  我送她一束花 (送 --> 她)
4 前置宾语  FOB 前置宾语,fronting-object  他什么书都读 (书 <-- 读)
5 兼语  DBL double  他请我吃饭 (请 --> 我)
6 定中关系  ATT attribute 红苹果 (红 <-- 苹果)
7 状中结构  ADV adverbial 非常美丽 (非常 <-- 美丽)
8 动补结构  CMP complement  做完了作业 (做 --> 完)
9 并列关系  COO coordinate  大山和大海 (大山 --> 大海)
10  介宾关系  POB preposition-object  在贸易区内 (在 --> 内)
11  左附加关系 LAD left adjunct  大山和大海 (和 <-- 大海)
12  右附加关系 RAD right adjunct 孩子们 (孩子 --> 们)
13  独立结构  IS  independent structure 两个单句在结构上彼此独立
14  核心关系  HED head  指整个句子的核心

本文使用哈工大LTP进行三元组提取,具体参考
https://blog.csdn.net/weixin_44243926/article/details/90263582

代码参考,感谢这位大牛的代码,如有侵权立马相告
https://github.com/liuhuanyong/EventTriplesExtraction
主要对后面进行了改写:
提取摘要部分(满足app显示,摘要不超过9字):
1.运用标题
标题不超过9字(不去停用词/去停用词)

# title
# 不用停用词
titlelen = title_extract(title)
if len(titlelen) <= 9:
    return "title", titlelen

# 用停用词
titlelen = title_extract(title, True)
if len(titlelen) <= 9:
    return "title", titlelen

# title extract
result = extract(title)
if result != None and len(result) > 0:
    return "title extract", result

return None

2.三元组提取

    # title extract
    svos = extractor.triples_main(title)
    # 三元组
    for svo in svos:
        newtitle = ''.join(svo)
        if len(newtitle) <= 9:
            return newtitle

    # 三元组去停用词
    for svo in svos:
        newtitle = ''.join(svo)
        newtitle = title_extract(newtitle, stopword=True)
        if len(newtitle) <= 9:
            return newtitle

    # 三元组中的词语(大于4小于9的最长词)
    result = []
    for svo in svos:
        svo = [i for i in svo if len(i) >= 4 and len(i) <= 9]
        if svo != []:
            result.extend(svo)
    if result != []:
        return max(result, key=len)

最后还可以加上关键词提取的方法提取文章摘要,关键词提取的方法暂时未列出,主要依靠tfidf、词长、位置、实体词加权的方法实现,找出大于4小于9的最长词。

结果评估:
人工评估结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值