问答系统实践——判定问题

来源:互联网 发布:王凯 知乎 编辑:程序博客网 时间:2024/06/16 00:31

作者声明:

SemEval-2015 Task3任务是由我和Index_gz共同合作完成,他编写了SemEval-2015 Task3的任务一的博客,我来写SemEval-2015 Task3的任务二的博客。

问题描述

这个问题来自于SemEval-2015 Task3: Answer Selection in Community Question Answering.

简单的说就是从一堆问题和答案中找出他们之间的相关性。

这个Task包含两个Subtasks

Subtask1.给定一个问题和一些答案,将答案进行为3类:good/potential/bad。

Subtask2.给定一个判定问题(Yes/No/Unsure)和一些答案,判定该问题是Yes/No/Unsure

这里主要讨论Subtask2

详见http://alt.qcri.org/semeval2015/task3/

 

实现框架

整体实现框架如下图所示:


简单来说,分为一下几个步骤:

1.预处理:通过一些基本的“词”级别的处理,为特征提取准备规范数据。

2.特征提取:通过对原始数据和预处理后的数据进行分析,并基于一定的假设,确定选取特征,提取特征。

3.模型构建:根据问题描述,选择学习模型,构建训练集,训练模型。

4.实验评估:构建测试集,对比各模型效果。

5.实验结果分析

接下来详细描述整个过程。

 

预处理

预处理阶段我们做了词性标注,词干还原和去停词。详情可见Index_gz写的《问答系统实战——答案选择》的预处理。http://blog.csdn.net/Index_gz/article/details/69524747

 

特征提取

为了方便理解yes_no_unsure问题的训练关键,我们先来举一个中文的例子:

Question QID=Q7QUSERID=U22QTYPE=YES_NOQGOLD_YN=Yes

惠新西街北口地铁站附近有没有银行?

Comment1CID=Q7_C1CUSERID=U23CGOLD_YN=Unsure

你问的是哪个出口呢,不确定呀?

Comment2CID=Q7_C2CUSERID=U24CGOLD_YN=Yes

yes,A口附近有一个交通银行。

Comment3CID=Q7_C3CUSERID=U22CGOLD_YN=Not Applicable

请问A口出来过天桥吗?

Comment4CID=Q7_C4CUSERID=U24CGOLD_YN=Yes

不用过天桥,地铁站A口出来向右走50米就到银行了。

Comment5CID=Q7_C5CUSERID=U25CGOLD_YN=Yes

yesssssssss,那附近还有一个建设银行呢。

 

对于判决yes_no_unsure的人或者机器来说,他并不容易通过其他知识来判断,它最终的依然是根据回答者的回答,来判断这个问题到底是yesno 还是unsure

有了这个认识,我们就要设计特征了。第一,comment起码要和question说的是同一件事,所以,能表示commentquestion相关性的特征是我们想要的。第二,确定每一条commentyes倾向,no倾向,还是unsure倾向。大家结合起来判断questionyes倾向,no倾向,还是unsure倾向。所以我们设计了以下特征:

 

(一)表示commentquestion说的是同一件事的特征,相似性特征:

词相似特征

1.Word cosine similarity: 我们假设问题和好的答案词相似,所以设计回答和问题的词的相似度特征。构建词典,以词典顺序作为向顺序tfidf为权重 ,统计每个回答和问题的空间向量,然后计算对应的问题和回答之间的余弦相似度。

2.NE cosine similarity:关键词通常是名词实体,我们假设问题和好的回答的关键词相近,所以我们构建了问题与回答之间的名词实体余弦。识别名词实体,构建名词实体字典。以字典为顺序,tfidf为权重,构建每个问题和答案的名词实体向量,并计算相应的余弦值。

特殊符号特征:

经过统计发现,comment中有一些强特征符号:'??', ':-', '???'。这些符号出现,commentquestion的判定往往是不同的。因此我们设计了这一维特征,出现定义为1,未出现定义为0

主题相似度特征

1.Topic feature: 我们假设question的主题和comment的主题是相似的,所以这维特征计算questioncomment的主题相似度分数。我们借助 gensim工具的LDA 模型来训练主题模型。我们训练  10个主题的主题模型,然后拿到每条commentquestion的主题向量(每条记录属于每个主题的分数)。拿到每条记录(commentquestion)的主题向量之后,计算对应的commentquestion的余弦相似度。从而得到commentquestion的主题相似度特征。

gensim LDA方法详见:https://radimrehurek.com/gensim/models/ldamodel.html

语义相似度特征

1.word2vector feature: 我们假设questioncomment所用的词在语义上是相似的,commentquestion的词越是相似的越有可能是靠谱的comment。我们借 gensim具来训练 word2vec特征。这样我们就得到每个词的词向量。然后借助以下公式拿到对应commentquestion的词向相似度得分。

                (公式一)

                  (公式二)

    其中是问题的第1个词,是回答的第j个词。n是问题的词的个数,m是回答的词的个数。

gensim word2vec方法详见:https://radimrehurek.com/gensim/models/word2vec.html

 

 

(二)判断每条commentyes_no_unsure倾向的特征:

特殊词特征:

经过统计yes no unsurecomment的用词,我们发现一些强特征词,为此我们设计了19维特征词特征:in_yesin_noin_unsurenop_numnooo_numyes_numyea_numyesss_numunsure_numsure_numhave_prob_numhave_discus_numhave_harm_numhave_quest_numhave_argu_numhave_asum_numhave_cheat_numhave_joke_numhave_clear_num

 

语义倾向特征:

判断commentyesnounsure的倾向需要特殊词词频的特征,也需要语义特征。对全语料训练word2vec。使用以下公式拿到每条commentyes ,no ,unsure的相似度,共三维:

(公式三)

其中label可取(yes,no,unsure),WVwi)表示comment的第i个词的词向量,当labelyes时,WVlabel)表示yes的词向量。

模型训练

我们采用了一下三种模型,均采用sklearn工具包的默认方法,未设置任何超参数

1.SVM

2.朴素贝叶斯

3.决策树

效果评估

以下实验均未使用devel

第一次尝试实验结果:


第二次尝试实验结果


第三次尝试(comment分类器效果,train数据集中,600做训练集,195做测试集)


各个模型错分各类样本个数:

svm


nb


DT


结果分析:

第一次尝试训练时,我们使用了yes_no问题的全部comment,共1528条,其中有733条是Not Applicable。训练集噪音过大导致训练效果非常差。

第二次尝试训练时,首先去掉了Not Applicable的数据,然后我们面临了第二个问题:我们使用questionCGOLD_YN当作label,但是每个comment都有一个向量,所以我们决定对一个question的所有comment的向量取平均,合成一个向量去学习。决策树的效果相对比较好F1值达到54.575%,在官方的分数中可以达到第三名的效果,但是SVMNB的效果依然步乐观,我们又进行了第三次尝试。

第三次尝试训练,我们使用comment CGOLD_YN当作label。训练使comment的向量预测label与真实label缩短差距,得到commentyes_no_unsure模型。用这个模型取测试test集合的comment。然后使用comment加权投票决定每个questionyes_no_unsure值。

但是,当我们把comment分类器训练出来后发现,效果很一般,经过近一步分析发现,SVM对于Yes的错分样本个数居然为0,再分析得出,SVM把所有样本都分到Yes类中去了究其原因,我们猜想是我们提的特征中反映commentyes类的特征太强了,而另外两类的特征太弱,加上训练集分布上yes数量最多,再加上没有对每个问题的每类特征进行加和平均操作,放大了强的特征的影响而缩小的弱的特征的影响,最终使的SVM分类失败。

总而言之,拿到问题,需要深入了解问题的根本和数据分布,从而挖掘出什么特征能影响分类效果。

参考文献

[1] Denkowski M, Lavie A. Meteor 1.3: automatic metric for reliable optimization and evaluation of machine translation systems[C]// The Workshop on Statistical Machine Translation. Association for Computational Linguistics, 2011:85-91.

[2] Quan H T, Tran V, Tu V, et al. JAIST: Combining multiple features for Answer Selection in Community Question Answering[C] International Workshop on Semantic Evaluation. 2015:215-219.

[3] Mikolov T, Chen K, Corrado G, et al. Efficient Estimation of Word Representations in Vector Space[J]. Computer Science, 2013.

[4]Goldberg Y, Levy O. word2vec Explained: deriving Mikolov et al.'s negative-sampling word-embedding method[J]. Eprint Arxiv, 2014.

 

0 0
原创粉丝点击