1. 引言
社区问答平台是社会媒体的重要组成部分,其中蕴含大量与人们生活息息相关的提问及回答文本。从这些社区问答QA对中提取人们对问题的观点立场倾向性是一个有意思的问题,用自动化方法挖掘某一问题下所有回答针对该问题的立场倾向性,能为人们提供合理、整体的参考信息。
在现有的研究立场分析的大部分工作中,立场表达针对的对象(target)要么是实体(entity),要么是声明(claim)。不同于以往的立场分析任务,在我们研究的答案立场分析任务中,立场针对的对象是整个问题,需要先理解问题中提问者关心的内容的语义。相比之前的研究问题,更难去建模依赖问题的(target-dependent)回答句表示。
为此,我们提出一种循环条件注意力结构(Recurrent Conditional Attention, RCA)。它包含:
问题句、回答句的建模网络,我们使用基于GRU结构的循环神经网络分别建模问题句和回答句的语义信息;
依赖于问题句信息的回答句表示网络,我们利用注意力机制(Attention)从回答句中提纯与问题句有关的表示,降低不相关词的权重;
通过循环阅读问答对迭代更新真实立场倾向性表示的推敲网络。在循环阅读问题对的过程中,RCA模型交错提炼问题句、回答句语义表示,挖掘问题句-回答句之间的相互依赖关系,逐步推理获得回答对于问题真实的观点倾向情况。
我们人工收集标注了一个13000多条的社区问答立场倾向性数据集。在该数据集上,我们将RCA与多个性能优异的现有立场分析模型进行对比。相比四个强基线模型,我们的RCA模型在macro-f1值平均提高2.90%,在micro-f1值上平均提高2.66%,在Accuracy指标上也显著优于所有基线模型,证明了我们的模型循环阅读和交错更新结构的有效性。
2. 问题定义
这里,我们给出AnswerStance classification(回答立场分类)的任务定义,我们把它当做一个target-dependent任务来处理。
给定含N个词的问题句和含M个词的回答句,AnswerStance任务旨在判别回答句对于问题句的立场标签。例如,在图1的第2个例子中,回答句通过肯定“iPad 2018的定价”来表达favor立场。
在之前的立场分类工作中,一般将形如Donald Trump的实体或者整个tweet文本定义为target,判别评论对于target的立场倾向性。在AnswerStance任务上,我们并未给定这种形式的target,取而代之的是整个问题句。事实上,我们也可以类比之前工作,把问题句中涉及的实体或者观点申明作为target。由于把整个问题句作为target不会带来语义的歧义,也省去了人工标注问题句实体、观点片段的环节,因而在下文中,我们把整个问题句作为target。
3. 模型
模型主要包含3个模块,与模型图对应关系如下:
问题句和回答建模网络
依赖于问题句信息的回答句表示网络
立场倾向性表示迭代更新网络
3.1 问题句和回答句建模
给定一个问题句和一个回答句,我们首先将其中每一个词转为低维稠密的词嵌入表示,具体地我们使用了一个在百科语料上使用word2vec训练得到的100维词向量。然后我们使用GRU(Gated Recurrent Unit)循环神经网络分别建模问题句和回答句,得到问题句和回答句中每个词在上下文中的特征表示。对于给定的一句话 ,在时刻t,GRU按如下公式更新其状态:
我们使用双向GRU兼顾上下文,对于句子中的第 i 个词,我们将双向GRU的隐层输出进行拼接,用表示问题句中的词的双向隐层表示,用表示回答句中的词的双向隐层表示。
3.2 条件注意力网络
显而易见,判别最终的立场应该同时考虑回答句和问题句的内容,需要利用二者的互相关系,发掘文本中与立场倾向相关的语义内容。下面介绍如何从问题句和回答句的表示中,构建立场倾向性的特征表示。
我们假定,模型在阅读问答对前不持有立场,即初始立场特征表示为0。
3.2.1 问题句注意力网络
首先,CA模块阅读问题句内容。由于问题句中不同词对于理解问题句的语义重要性不同,像“了”、“的”、“呢”、“怎样”就不如“德国队”、“牛奶”这些词在本任务中来得重要,所以CA模块利用注意机制来筛选问题句对于立场分析比较重要的词,得到立场相关的问题句表示向量。具体地,我们使用已经累积的立场特征向量去attend问题句,得到问题句:
其中是本次阅读问题句得到的第 i 个词的权重归一化结果。问题句的表示是问题句所有词隐层向量的加权平均。
3.2.2 回答句注意力网络
同样地,回答句中不同词对于判断其立场倾向的贡献也存在差异。我们用类似的方法有侧重地学习回答句的表示。这里,CA模块先使用新的问题句信息更新立场状态向量,得到临时的立场表示:
因为中融合了最新获取的问题句语义,接着CA模块通过Attention机制来构建考虑问题句信息的回答句表示。
其中是本次阅读回答句得到的第 i 个词的权重归一化结果。回答句的表示是回答句所有词隐层向量的加权平均。
3.3 立场表示迭代更新网络
显然,最终的立场类别直接依赖于最新的回答句内容,我们需要将融入我们的立场状态。为此,我们应用另一步GRU更新:
到此为止,我们完成了RCA模型对问答对的一次阅读过程。注意,这里的一次阅读过程对应两个GRU时刻更新。
但对于语义较为复杂的问题对,只对问答对进行一次阅读往往难以正确推断其立场倾向性。借鉴前人的工作,我们重复上述阅读过程k次。这里,我们根据实验结果将k设为3。
在多步阅读过程中,立场状态向量 作为桥梁,构建了间接依赖于回答句的问题句表示和间接依赖问题句的回答句表示,挖掘了立场分类时问答对之间的依赖关系,这样的交互模式使得RCA模型能从问答对中逐步推理出真实立场倾向情况。
4. 实验设置
4.1 数据集
我们从百度知道、搜狗问问、明医等网站爬取、清洗并标注数据,最终得到的13591条问答对语料,语料主要涉及怀孕、食品、安全、疾病等话题。语料的统计信息如下表:
表1 社区问答中带标注的回答立场数据统计
4.2 评价方法
参考SemEval2016上的立场分析任务,我们不考虑neutral类别的结果。我们采用favor和against两类的宏平均和微平均F1值作为评价指标。另外我们也提供了所有标签的accuracy作为各模型对比的参考指标。
4.3 对比模型
实验中,我们对比了基础的词袋模型、双向LSTM模型、CNN模型,以及近年来在立场分类和QA等任务上取得较好成绩的TAN(IJCAI2017)、BiCond(EMNLP2016)、AoA(ACL2017)和RAM(EMNLP2017)模型。
5. 实验结果
从实验结果来看,我们的RCA模型在宏平均、微平均以及Accuracy等指标上,取得了优于所有基线模型的效果,证明了RCA模型的有效性。
表2 测试集上不同立场检测模型的性能比较
另外通过对Attention权重的可视化,我们可以看到不同模型在提取问题句和回答句语义的差别。这个例子中,只有RCA模型在判断立场类别时,能同时给问题句和回答句词合适的权重。
图3 四个模型的注意力权重的可视化图。注意,只有RCA和AoA会在问题上产生注意力,而且我们只会在RAM和RCA模型的最后读取步骤中表示注意力。更深的颜色意味着更大的概率。
为了分析RCA模型各部分结构对于模型性能的影响,我们做了结构抹除测试。从表格中我们可以看出,问题句的表示对于模型性能影响很大;使用问题句信息从回答句中寻找重要的语义信息比用回答句从问题句提取信息来得更重要。
表3 RCA模型在测试集上的消融测试。呈现宏观和微观平均F1分数。
在下面的两个例子中,我们发现RCA模型的确能在多次阅读过程中,逐步调整问题句和回答句中词的权重,改变其对应的特征表示,并最终做出正确的立场倾向性判断。
图4 通过softmax分类器和针对示例的每个问题和答案词的注意权重在每个读取步骤中的立场状态的可视化。更深的颜色意味着更大的概率。具有3个读取步骤的RCA模型用于说明。
6. 结论
在本文中,我们针对社区问答中的立场分析任务(AnswerStance),开发了RCA模型,它通过建模问题句和回答句之间的相互表示,在多次阅读过程中不断提炼问答对的语义表示,逐步更新立场状态,并最终做出更准确的立场判断。
在未来的工作中,RCA模型既可以应用到句对作为输入的任务上,如文本蕴含、句子匹配等任务;也可以结合强化学习方法,根据句对输入的语义复杂程度,动态决定阅读次数。