作者: 哈工大SCIR硕士生 齐乐
1、引言
社区问答系统(Community Question Answering,CQA)以其灵活的用户交互特性,能够满足人们获取和分享知识的需求,成为广受用户喜爱的只是知识共享平台[1]。与其他社会媒体相比,CQA提供了一种特有的交互方式。首先,提问者将其信息需求以问题的方式提交给系统,并等待其他用户给出答案。回答者根据其个人兴趣、知识水平,选择适当的未解决问题来回答,以分享自己的知识[1]。
在社区问答中,问题相似度计算有着很重要的意义。针对用户提出的新的查询,我们可以通过判断问题相似,在历史纪录中检索与之相似的已解决问题,并将这些问题的答案推荐给用户,从而避免用户的重复提问,也方便用户更快速地获取问题答案[1]。
社区问答中的问题通常包括两个部分,一是问题的主题或标题,二是问题的详细描述。这两部分对于判断问题相似都有很重要的作用。然而,用户的提问长短不一,而且由于需求和背景不同,问题描述中可能包含大量对判断问题相似无意义的背景信息。若将全部文本作为神经网络的输入会引入大量噪声,干扰对两者相似程度的判断。同时,问题主题是问题全部信息的高度概括,相似问题往往拥有相似的主题,主题不同但问题相似的概率很低。因此问题主题也是判断问题相似的重要依据。
针对上述问题,本文提出了一种基于关键词和问题主题的相似度计算模型(KT-CNN)。该模型在文本间相似及相异信息的CNN模型[2]基础上引入了关键词抽取技术并融入了问题主题间的相似度作为特征。
2、模型
我们提出的模型包括关键词抽取、基于关键词相似及相异信息的问句建模、计算主题相似度、问题相似度计算四个模块。对于输入的问题S和T,我们先进行一系列的预处理操作,再通过关键词抽取模块抽取S和T的关键词序列Ks和Kt。第二步我们利用Ks和Kt间相似及相异信息对问题S和T建模得到和的特征向量Fs和Ft。第三步,我们对问题S和T的主题Ts和Tt计算相似度Simtopic。第四步,我们基于S和T的特征向量Fs和Ft以及问题主题间的相似度Simtopic计算问题S和T的相似度Simq。模型的结构如图2-1所示。下面我们将对每一个模块进行详细介绍。
图2-1 模型结构
2.1 关键词抽取
我们对问题S和T的主题及描述抽取关键词Ks和Kt。由于问题的主题及描述可能包含多个句子,因此我们对问题的每个子句都抽取关键词。以问题S为例,我们将其子句Si的关键词按照得分进行排序,得到KSi=[k0i, ,...,knii],然后再按照子句出现的顺序对所有的关键词进行排序,得到问题的关键词序列Ks=KS0…U KSm=[k00, ,…,kn00,k01, ,…,kn11,…,k0m, ,…,knmm]。
对于每个子句,我们使用了一种无监督的基于依存排序的关键词提取算法。该算法由王煦祥[3]等人提出,我们在该算法的基础上进行了一些改进。对于给定的问句,该算法利用统计信息、词向量信息以及词语间的依存句法信息,通过构建依存关系图来计算词语之间的关联强度,利用TextRank算法[4]迭代计算出词语的重要度得分。
算法流程如图2-2所示,主要步骤包括构建无向有全图、图排序以及选取关键词。
图2-2 基于依存分析排序的问句关键词提取流程图
首先,我们根据句子的依存句法分析结果对所有非停用词构造无向图。依存句法分析的结果为树结构,只要去掉根节点并忽略弧的指向便可以得到无向的依存关系图
其中wi表示词语,ej表示两个词语之间的无向关系。
接着,我们利用词语之间的引力值以及依存关联度计算求得边的权重。
词引力值得概念由Wang[5]等人提出。作者认为两个词之间的语义相似度无法准确衡量词语的重要程度,只有当两个词中至少有一个在文本中出现的频率很高,才能证明两个词很重要。其受到万有引力定律的启发,将词频看作质量,将两个词的词向量间的欧式距离视为距离,根据万有引力公式来计算两个词之间的引力。然而在社区问答的环境中,仅利用词频来衡量文本中某个词的重要程度太过片面,因此我们引入了IDF值,将词频替换为TF-IDF值,从而考虑到更全局性的信息。于是我们得到了新的词引力值公式。文本词语wi和wj的引力f由公式(2-1)计算获得。其中tfidf(w)是词语w的TF-IDF值,是词语和的词向量之间的欧氏距离。
依存关联度的概念由张伟男[6]等人提出。无向的依存关系图保证了问句中的任意两个词之间都有一条依存路径,而依存路径的长短反映了依存关系的强弱。因此,该算法根据依存路径的长度,计算依存关联度,如公式(2-2)所示。其中,len(wi, wj)表示词语wi和wj之间的依存路径长度,b是超参数。
综上,两个词语之间的关联度,即边的权重值是两个词的引力与依存关联度的乘积,如公式(2-3)所示。
最后,我们使用有权重TextRank算法进行图排序。在无向图G=(V, E)中,V是顶点的集合,E是边的集合,顶点vi的得分由公式(2-4)计算得出,其中w(vi, vj)由公式(2-3)计算得出,C(vi)是与顶点vi有边连接的顶点集合,d为阻尼系数。我们选取得分最高的t个词语作为句子的关键词。
2.2基于关键词间相似及相异特征的CNN模型
由于文本间相似信息和相异信息对判断两段文本是否相似均有着重要的作用,因此我们使用了一种基于文本间相似及相异信息的CNN模型对问题的关键词序列进行建模[2],并在原模型的基础上进行了改进。
以问题S的关键词序列Ks为例,首先我们将Ks中的每一个关键词Ksi都转化为向量表示。接着我们用问题T的关键词序列Kt计算Ksi的语义匹配向量Ksi’,即用Kt中的部分关键词表示Ksi。第三步,基于Ksi’对Ksi进行分解,得到Ksi与Kt间相似向量Ki+s以及相异向量Ki-s。对Ks中每一个词都进行上述操作,便将Ks分解成同Kt间的相似矩阵Ki+s和相异矩阵Ki-s。第四步,我们用Ki+s和Ki-s进行合并得到问题S的特征向量F。
2.2.1词向量表示
我们使用基于Jeffray等人提出的GloVe模型[7]预训练的词向量来表示关键词。对于关键词序列Ks和Kt,我们将其表示为矩阵
其中Kis和Kjt是关键词的维词向量,m和n是Ks和Kt中包含的关键词数量。
2.2.2语义匹配
为了判断关键词序列Ks和Kt间的相似度,我们需要检查一个关键词序列中的关键词在语义上能否被另一个关键词序列中的某些关键词覆盖。在我们的模型中,我们通过组合Kt中部分词向量来计算Ks中的每个关键词Kis的语义匹配向量Ksi’。同理,我们也可以获得Ksj'。
为了计算语义匹配向量,我们先计算Ks和Kt的相似矩阵Amxn。原论文使用余弦相似度计算词汇间的相似程度,我们将其替换为皮尔森相关系数,即Amxn中的每个元素aij是Kis和Kjt的皮尔森相关系数。相对于余弦相似度,皮尔森相关系数考虑了对均值的修正操作,对向量进行了去中心化,其计算公式如公式(2-6)所示
通过Amxn我们可以找到Kt中同Kis最相关的词汇Kjt,我们用Kjt及其上下文的词向量的加权平均来表示Kis。其中,权值为相应向量与Kis的相似度。因此利用Amxn可以定义计算语义匹配向量的函数fmatch:
其中,k = argmaxj aij,w是以k为中心的窗口大小。
2.2.3矩阵分解
在语义匹配模块之后,我们得到了语义匹配向量Ki's和Kj't。以Kis为例,我们认为Ki's是Kt对于Kis的语义覆盖。然而,Ki's和Kis在语义上一定有所不同,因此我们要将两者相同部分以及相异部分提取出来。
为此,我们选择了一种线性分解的方式。若Ki's和Kis语义越相似,则越大比例的Kis被分解到相似向量Ki+s。与原论文的余弦相似度不同,我们使用Ki's和Kis的皮尔森相关系数a作为线性分解的权值。接着,我们根据a对Kis进行分解。公式(2-8)给出了相关的定义:
2.2.4矩阵合并
通过对Ks和Kt分解,我们得到相似矩阵
和相异矩阵
这一步的目标是利用这些信息对问题S和T进行建模。由于相似矩阵和相异矩阵间有很深的联系,因此我们使用双通道的CNN模型对K+s和K-s进行建模,得到问题S和T的特征向量Fs和Ft。
CNN模型包括两个连续的层:卷积层和最大池层。我们在卷积层设置了一组过滤器{w0, w1},分别应用在相似通道和相异通道上,来生成一组特征。每个过滤器的规模是d x h,d是词向量的维数,h是窗口的大小。公式(2-9)表示了这个过程:
其中操作A*B将B中所有元素按A中相应的权重加权求和。K+s[i:i+h]和K-s[i:i+h]表示将K+s和K-s分片,bc是偏移项,f是非线性函数(我们使用函数)。通过卷积层我们得到一组特征
特征的数量取决于过滤器的规模以及输入关键词序列的长度。为了解决特征数量不固定的问题,我们对进行最大池化的操作。我们选取中最大的值作为输出,即
因此,经过池化操作后,每组过滤器生成一个特征。最后特征向量的维数将取决于过滤器的数量。
2.3问题主题间的相似度计算
由于提取的关键词无法保证完全正确,基于关键词的CNN模型会不可避免地遗漏一些信息。而主题信息是判断问题相似的重要依据,因此我们利用主题间相似度来辅助模型进行判断。对于问题S的主题Ts,我们用词向量Ts表示中的每个词汇,即Ts = [Ts0, …,Tsn ]。我们将Ts中所有词的词向量求和作为Ts的向量表示
同理,我们也得到了Tt的向量表示。我们用皮尔森相关系数来表示两者的相似度。
2.4问句相似度计算
我们依靠基于关键词间相似及相异特征的CNN模型生成的问题和的特征向量和以及问题主题间的相似度计算问题和的相似度Simtopic。如公式(2-11)所示,我们使用一个线性模型将所有的特征加权相加,其中w0, w1, w2是相应的权重向量,bsig是偏移项。最后我们用sigmod函数将计算结果限制在[0, 1]的区间内。
3、实验
为了证明我们提出的模型的有效性,我们在SemEval2017[8]的评测语料上进行了实验。SemEval2017的任务三子任务B[8]的主题是社区问答中问题相似度计算。给定一个新提出的问题和10个由搜索引擎确定的相关问题,我们要依据问题间的相似度对相关问题进行重排序。该任务对相关问题设置了三个标签,分别为:PerfectMatch,Relevant和Irrelevant。我们认为标记为PerfectMatch和Relevant的是正例(不区分PerfectMatch和Relevant),标记为Irrelevant的是负例。我们需要将标记为正例的问题排在标记为负例的问题的前面。最后依据MAP值对系统进行评价。
我们将我们提出的模型同SemEval2017的评测结果进行比较,实验结果如表3-1所示:
从表中我们可以看出,我们的模型要优于评测中最好的模型,更远远优于基于IR的基础模型。但是,我们的模型仍有一些不足。首先,由于关键词提取技术的准确度不够,我们无法保证是否有关键信息遗漏。同时以关键词序列作为神经网络的输入破坏了问题的结构,我们无法利用问题结构上的信息来判断问题相似性。第三点,我们使用用户提供的问题主题间的相似度作为辅助判断的依据,但用户提供的主题可能太过简略,无法帮助甚至会阻碍我们判断问题相似。
4 结论及下一步展望
我们提出了一种基于关键词间相似及相异信息的CNN模型去计算社区问答中问题相似度。同时,我们将问题主题间的相似度特征融入到模型中,以辅助模型进行判断。我们在SemEval2017的评测语料上进行了实验,并超过了现有的结果。下一步我们将尝试更多不同的关键词抽取算法以及不同的神经网络模型。同时,我们还会尝试在模型中融入主题模型来替代问题主题相似度。
Reference
[1]. 张中峰,李秋丹. 社区问答系统研究综述[J]. 计算机科学,2010,(11):19-23+54.
[2]. Wang Z, Mi H, Ittycheriah A. Sentence Similarity Learning by Lexical Decomposition and Compos-ition[J]. 2016.
[3]. 王煦祥. 面向问答的问句关键词提取技术研究[D].哈尔滨工业大学,2016.
[4]. Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Proceedings of EMNLP, 2004. 4(4): 275.
[5]. Wang R, Liu W, McDonald C. Corpus-independent Generic Keyphrase Extraction Using Word Embedding Vectors[C]. Software Engineering Research Conference. 2014: 39.
[6]. Zhang W, Ming Z, Zhang Y, et al. The Use of Dependency Relation Graph to Enhance the Term Weighting in Question Retrieval[C]. COLING. 2012: 3105-3120.
[7]. Pennington J, Socher R, Manning C. Glove: Global Vectors for Word Representation[C]// Conference on Empirical Methods in Natural Language Processing. 2014:1532-1543.
[8]. Preslav Nakov, Doris Hoogeveen, Llu´ ıs Marquez,`Alessandro Moschitti, Hamdy Mubarak, Timothy Baldwin, and Karin Verspoor. 2017. SemEval-2017 task 3: Community question answering. In Proceedings of the 11th International Workshop on Semantic Evaluation. Association for Computational Linguistics, Vancouver, Canada, SemEval ’17.
本文来源于哈工大SCIR