作者声明:
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=Q7,QUSERID=U22 ,QTYPE=YES_NO ,QGOLD_YN=Yes:
惠新西街北口地铁站附近有没有银行?
Comment1:CID=Q7_C1, CUSERID=U23,CGOLD_YN=Unsure
你问的是哪个出口呢,不确定呀?
Comment2:CID=Q7_C2, CUSERID=U24,CGOLD_YN=Yes
yes,在A口附近有一个交通银行。
Comment3:CID=Q7_C3, CUSERID=U22,CGOLD_YN=Not Applicable
请问A口出来过天桥吗?
Comment4:CID=Q7_C4, CUSERID=U24,CGOLD_YN=Yes
不用过天桥,地铁站A口出来向右走50米就到银行了。
Comment5:CID=Q7_C5, CUSERID=U25,CGOLD_YN=Yes
yesssssssss,那附近还有一个建设银行呢。
对于判决yes_no_unsure的人或者机器来说,他并不容易通过其他知识来判断,它最终的依然是根据回答者的回答,来判断这个问题到底是yes ,no 还是unsure。
有了这个认识,我们就要设计特征了。第一,comment起码要和question说的是同一件事,所以,能表示comment和question相关性的特征是我们想要的。第二,确定每一条comment是yes倾向,no倾向,还是unsure倾向。大家结合起来判断question是yes倾向,no倾向,还是unsure倾向。所以我们设计了以下特征:
(一)表示comment和question说的是同一件事的特征,相似性特征:
词相似特征
1.Word cosine similarity: 我们假设问题和好的答案词相似,所以设计回答和问题的词的相似度特征。构建词典,以词典顺序作为向顺序,tfidf 作为权重 ,统计每个回答和问题的空间向量,然后计算对应的问题和回答之间的余弦相似度。
2.NE cosine similarity:关键词通常是名词实体,我们假设问题和好的回答的关键词相近,所以我们构建了问题与回答之间的名词实体余弦。识别名词实体,构建名词实体字典。以字典为顺序,tfidf为权重,构建每个问题和答案的名词实体向量,并计算相应的余弦值。
特殊符号特征:
经过统计发现,comment中有一些强特征符号:'??', ':-', '???'。这些符号出现,comment和question的判定往往是不同的。因此我们设计了这一维特征,出现定义为1,未出现定义为0。
主题相似度特征
1.Topic feature: 我们假设question的主题和comment的主题是相似的,所以这维特征计算question和comment的主题相似度分数。我们借助 gensim工具的 LDA 模型来训练主题模型。我们训练 10 个主题的主题模型,然后拿到每条comment和question的主题向量(每条记录属于每个主题的分数)。拿到每条记录(comment和question)的主题向量之后,计算对应的comment和question的余弦相似度。从而得到comment和question的主题相似度特征。
gensim 的LDA方法详见:https://radimrehurek.com/gensim/models/ldamodel.html
语义相似度特征
1.word2vector feature: 我们假设question和comment所用的词在语义上是相似的,comment与question的词越是相似的越有可能是靠谱的comment。我们借助 gensim具来训练 word2vec 特征。这样我们就得到每个词的词向量。然后借助以下公式拿到对应comment与question的词向相似度得分。
其中Wi是问题的第1个词,wj'是回答的第j个词。n是问题的词的个数,m是回答的词的个数。
gensim 的word2vec方法详见:https://radimrehurek.com/gensim/models/word2vec.html
(二)判断每条comment的yes_no_unsure倾向的特征:
特殊词特征:
经过统计yes no unsure的comment的用词,我们发现一些强特征词,为此我们设计了19维特征词特征:in_yes,in_no,in_unsure,nop_num,nooo_num,yes_num,yea_num,yesss_num,unsure_num,sure_num,have_prob_num,have_discus_num,have_harm_num,have_quest_num,have_argu_num,have_asum_num,have_cheat_num,have_joke_num,have_clear_num。
语义倾向特征:
判断comment的yes,no,unsure的倾向需要特殊词词频的特征,也需要语义特征。对全语料训练word2vec。使用以下公式拿到每条comment与yes ,no ,unsure的相似度,共三维:
其中label可取(yes,no,unsure),WV(wi)表示comment的第i个词的词向量,当label取yes时,WV(label)表示yes的词向量。
模型训练
我们采用了一下三种模型,均采用sklearn工具包的默认方法,未设置任何超参数
1.SVM
2.朴素贝叶斯
3.决策树
效果评估
(以下实验均未使用devel集)
第一次尝试实验结果:
第二次尝试实验结果:
第三次尝试(comment分类器效果,train数据集中,600做训练集,195做测试集)
各个模型错分各类样本个数:
svm:
nb:
DT:
结果分析:
第一次尝试训练时,我们使用了yes_no问题的全部comment,共1528条,其中有733条是Not Applicable。训练集噪音过大导致训练效果非常差。
第二次尝试训练时,首先去掉了Not Applicable的数据,然后我们面临了第二个问题:我们使用question的CGOLD_YN当作label,但是每个comment都有一个向量,所以我们决定对一个question的所有comment的向量取平均,合成一个向量去学习。决策树的效果相对比较好F1值达到54.575%,在官方的分数中可以达到第三名的效果,但是SVM和NB的效果依然步乐观,我们又进行了第三次尝试。
第三次尝试训练,我们使用comment 的CGOLD_YN当作label。训练使comment的向量预测label与真实label缩短差距,得到comment的yes_no_unsure模型。用这个模型取测试test集合的comment。然后使用comment加权投票决定每个question的yes_no_unsure值。
但是,当我们把comment分类器训练出来后发现,效果很一般,经过近一步分析发现,SVM对于Yes的错分样本个数居然为0,再分析得出,SVM把所有样本都分到Yes类中去了。究其原因,我们猜想是我们提的特征中反映comment的yes类的特征太强了,而另外两类的特征太弱,加上训练集分布上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.