【论文笔记】Bridging Hierarchical and Sequential Context Modeling

论文目录

  • Abstract
  • 1. Introduction
  • 2. Method
    • 2.1 Word-level compare-Aggregate
    • 2.2 Sentence-level compare-Aggregate
    • 2.3 Question-aware Sequential Extractor
  • 3. Experiment
    • 3.2 Experimental Results
    • 3.3 Analusis
      • 3.3.1 Ablation Study
  • 4. Conclusions
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


论文题目:

Bridging Hierarchical and Sequential Context Modeling for Question-driven Extractive Answer Summarization

Abstract

基于检索的问答是目前最广泛但最具挑战性的应用和研究领域之一。非事实类问题的答案往往是冗长且繁琐的,这也给答案总结这项任务带来了很大的挑战。问答对之间的多层次交互和不同answer之间的相互关系通常是在现有的答案总结研究的基础上分别建立起来的。在本论文中,我们提出了一个统一模型,通过问题驱动的多层次架桥和顺序上下文模型来进行答案摘要的抽取。
特别的,设计了一个分层compare-aggregate方法在word和sentence的基础上去整合QA对之间的信息。然后,我们使用问题感知的顺序提取器为冗长的答案生成摘要。实验结果表明,基于层次和顺序的上下文建模方法都能有效地对答案进行总结,并且该方法在WikiHowQA和PubMedQA上都取得了优异的性能。

1. Introduction

近年来,很多非事实问答的研究已经被应用到了很多领域,比如CQA、EQA等。然而,原始答案通常都是由用户或者从长文本中获取的,包含大量不相关的多余信息。而这些答案通常会给用户来带阅读难度和误解。
文本摘要可以有效解决答案冗余的问题。在过去的研究中,答案总结大多通过传统的信息检索方法或者基于查询的总结模型来实现的。根据分类方法的类型,大概可以分为抽取式的和摘要生成式的两大类。在这项工作中,我们重点研究答案摘要的生成,因为它能产生更多的语法和连贯的摘要。

对于非事实性问答,答案摘要与所对应的问题高度相关,而问题和答案中所包含信息量的不平衡性也导致难以区分答案与问题之间的语义关联。目前存在的答案摘要生成并没有充分利用问题和答案之间的相关信息,或者高度依赖于特征。在这种情况下,就需要一种新的模型去充分处理答案和问题之间信息的不平衡。
答案选句是一种从一组候选句子中选择句子来回答问题的方法,可以作为答案总结的另一种方法。Compare-Aggregata的框架,主要通过将低级元素的比较结果聚合到高级表示中,来为QA对之间的交互建模。受此启发,我们提出对QA对之间的word和sentence两个不同层面的相关信息进行层次化建模,从而为相关的答案总结任务获得合适的句子表示。
另一方面,现有的基于查询的摘要方法和答案句子选择方法在获取原始答案中不同句子之间的相关性方面都存在不足,这在提取摘要设置中是非常重要的。顺序建模成功地克服了这一问题,它既考虑了当前句子的突出性,又考虑了来自前一个句子的信息。
在这项工作中,我们在层次和顺序上下文之间架起了桥梁,提出了问题驱动的抽取答案摘要模型(HSCM)。具体地说,我们提出了一种层次比较-聚合方法,将字词级和句子级的问题-答案对之间的层次交互信息集成为一个序列提取摘要模型。

2. Method

给定问题 Q Q Q、答案 A A A,由一列句子 [ s 1 , s 2 , . . . , s l ] [s_1,s_2,...,s_l] [s1,s2,...,sl]组成。
目标:从 A A A中提取出句子,组成答案摘要 Y Y Y
总体框架图如下:
【论文笔记】Bridging Hierarchical and Sequential Context Modeling_第1张图片

2.1 Word-level compare-Aggregate

word embedding的输入:
question: Q = q 1 , q 2 , . . . , q n Q={q_1,q_2,...,q_n} Q=q1,q2,...,qn
Answer: A = s 1 , s 2 , . . . , s l A={s_1,s_2,...,s_l} A=s1,s2,...,sl
A A A中的第 l l l个句子为: s l = a 1 , a 2 , . . . , a m s_l={a_1,a_2,...,a_m} sl=a1,a2,...,am
首先进行注意操作,将问题和答案句之间的词级信息进行匹配,得到问题和回答中每个词的注意权重向量。
【论文笔记】Bridging Hierarchical and Sequential Context Modeling_第2张图片
最后采用element-wise乘法作为比较函数来计算word-level的结果
l
最后用CNN进行聚合
在这里插入图片描述
注意,每个句子表示都有一个唯一的问题表示 Q l Q_l Ql和答案中的 S l S_l Sl,这是每个答案句子的单词级比较结果整合到了问题表征中。

2.2 Sentence-level compare-Aggregate

这一部分和word-level的处理方式一样,只是输入替换成了问题和答案中的句子级别的representation.
【论文笔记】Bridging Hierarchical and Sequential Context Modeling_第3张图片
关于第四五个公式,我觉得可能是作者笔误,写错了,应该是分别乘以 S j S_j Sj Q j Q_j Qj

最后经过一个LSTM层去聚合sentence-level的比较结果
在这里插入图片描述

2.3 Question-aware Sequential Extractor

下面就是通过问题驱动下的顺序提取进行答案摘要的生成。我们采用RNN作为解码器,按顺序对每句话进行标记,下一个被解码的标签同时考虑已编码的文档和前一个被解码的标签。
在这里插入图片描述

此外,由于问题在决定是否要提取句子时非常重要,因此编码后的问题也被集成到标签预测中
在这里插入图片描述
下面就是计算loss,用cross-entropy loss函数
在这里插入图片描述
p p p是softmax层的输出

3. Experiment

在两个非事实QA数据集上进行了实验
【论文笔记】Bridging Hierarchical and Sequential Context Modeling_第4张图片
实验设置:
word embedding: GLOVE 100_dim
lr = 0.001
dropout = 0.5
LSTM的hidden unit = 150
batch_size = 32

3.2 Experimental Results

【论文笔记】Bridging Hierarchical and Sequential Context Modeling_第5张图片
对于摘要生成的方法,主要分为三大类:
传统的摘要生成方法:没有利用问题中的相关信息,传统的文本摘要方法提取摘要
答案句子查找的方法:通过衡量问题与每个回答句子之间的关联程度,从原始答案中选择句子作为总结
问题驱动的摘要生成方法:
最后还有五种无特征的基于查询的总结方法:前两种属于抽取式的,后三种属于摘要生成式。这些方法考虑到问题信息来指导答案总结过程。
从表中可以看出,传统的摘要生成方法在WikiHow上的效果要比在PubMedQA上的好,猜想是由于前者着重于上下文信息,后者着重于相似度信息

3.3 Analusis

3.3.1 Ablation Study

【论文笔记】Bridging Hierarchical and Sequential Context Modeling_第6张图片

-sequential decoder: 将LSTM解码器分开,只进行分层的句子对建模
-compare-aggregate: 没有比较聚合层,只保留问题感知的顺序提取器模型
-word-leve: 移除单词级别的compare-aggregate层
-sentence-level: 移除句子级别的compare-aggregate层

4. Conclusions

本文桥接分层建模和顺序上下文建模,对答案照耀进行提取,以便解决非事实QA中答案的冗余问题。提出了一种分层比较聚类的方法来编码问题与答案之间的多层次交互信息,然后在问题的驱动下利用顺序学习来提取答案句子,进而构建答案摘要。

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(论文笔记,NLP,python)