智能问答系统实践——答案选择

日期: 2018-11-21 15:00:06 / 人气: 1681

问题描述

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

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

这个Task包含两个Subtasks:

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

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

这里主要讨论subtask1。详见:http://alt.qcri.org/semeval2015/task3/

实现框架

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

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

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

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

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

4.实验评估:构建测试集,对比各模型效果。
具体实现框架如下图所示:



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


预处理

个人认为,特征选择在实现上发生在预处理之后,但实则发生在预处理前后。

根据上述问题描述,和自己的先验知识,先对该问题做了一定的假设:

假设问题和答案是有相关性的。

假设问题和好的答案相关性更大,和不好的答案相关性更小。

假设问题和各种类别(good/potential/bad)的答案在“词”的特征上,是有一定规律的。

假设问题和各种类别(good/potential/bad)的答案在语义上,是有一定规律的。
。。。(一堆假设)

特征选择

词相似特征

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

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

特殊词特征

1.Special symbol feature: 我们将训练数据各个类别的答案所出现的符号经过统计分析发现,有些特殊符号比如“>..<,!:(,:(,:-(”只出现在了bad类别的答案中,而“>,<”只出现在good类别的答案中,因此我们将此作为一维特征。定义:3表示出现good类符号;2表示不出现good和bad类符号;1表示出现bad类符号。

2.Bad words feature: 我们假设某些词倾向出现在坏的答案里或者好的答案里,根据经验,这样的特征对识别坏的词有帮助。所以我们统计仅出现在 bad 的回答的词。问题中若是出现 bad的词,则这维特征记为 1,否则记为 0.
 

主题特征

1.Topic feature: 我们假设问题的主题和回答的主题是相似的,所以这维特征计算问题和答案的主题相似度分数。我们借助 gensim工具的 LDA 模型来训练主题模型。

我们训练  10 个主题的主题模型,然后拿到每条答案或者问题的主题向量(每条记录属于每个主题的分数)。拿到每条记录的主题向量之后,计算对应的问题和答案的余弦相似度。从而得到问题与答案的主题相似度特征。

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

语义特征

1.Word alignment feature: 这一维特征是通过Meteor工具来计算得到的,Meteor工具是用来评估两句话在翻译层面上的相似度。我们假定问题和对应的好的答案之间应该具有更高的相似度。因此我们将Meteor工具计算出来的问题与答案之间的score做为一维特征。

Meteor详见:http://www.cs.cmu.edu/~alavie/METEOR/

word2vector feature: 我们假设问题和回答所用的词在语义上是相似的,与问题的词越是相似的越有可能是好的回答。我们借助gensim具来训练 word2vec 特征。 这样我们就得到每个词的词向量。然后借助以下公式拿到对应问题与答案的词向相似度得分。


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

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

非文本特征

1.QA author feature: 通过分析训练数据发现,如果答案和问题来自同一个用户,在很多情况下不是一个好的答案,因此我们将此作为一维特征。定义:0表示答案和问题来自不同用户;1表示答案和问题来自同一用户。

2.User posts feature:这个特征和知乎的大V原理有点类似,我们认为,一个用户回答的问题越多,他(她)的答案越有可能是一个好的答案。因此我们将用户提问和回答问题的数量作为一维特征。


模型训练

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

1.SVM

2.朴素贝叶斯

3.决策树


数据分布

TRAINING:

QUESTIONS:
TOTAL: 2,600
GENERAL: 2,376 (91.38%)
YES_NO: 224 (8.62%)
COMMENTS:
TOTAL: 16,541
MIN: 1
MAX: 143
AVG: 6.36
CGOLD VALUES:
Good: 8,069 (48.78%)
Bad: 2,981 (18.02%)
Potential: 1,659 (10.03%)
Dialogue: 3,755 (22.70%)
Not English: 74 ( 0.45%)
Other: 3 ( 0.02%)
CGOLD_YN COMMENT VALUES (excluding "Not Applicable"):
yes: 346 (43.52%)
no: 236 (29.69%)
unsure: 213 (26.79%)
QGOLD_YN VALUES (excluding "Not Applicable"):
yes: 87 (38.84%)
no: 47 (20.98%)
unsure: 90 (40.18%)
 

DEVELOPMENT:

QUESTIONS:
TOTAL: 300
GENERAL: 266 (88.67%)
YES_NO:  34 (11.33%)
COMMENTS:
TOTAL: 1645
MIN: 1
MAX: 32
AVG: 5.48
CGOLD VALUES:
Good: 875 (53.19%)
Bad: 269 (16.35%)
Potential: 187 (11.37%)
Dialogue: 312 (18.97%)
Not English: 2 ( 0.12%)
Other: 0 ( 0.00%)
CGOLD_YN COMMENT VALUES (excluding "Not Applicable"):
yes: 62 (53.91%)
no: 32 (27.83%)
unsure: 21 (18.26%)
QGOLD_YN VALUES (excluding "Not Applicable"):
yes: 16 (47.06%)
no: 8 (23.53%)
unsure: 10 (29.41%)
测试集:

QUESTIONS:

         TOTAL: 329

         GENERAL: 300(91.19%)

         YES_NO:29(8.81%)
 

COMMENTS:

         TOTAL: 1976

         MIN: 1

         MAX: 66

         AVG: 6.01
 

CGOLDVALUES:

         TOTAL: 1976

         Good: 997(50.46%)

         Bad: 362(18.32%)

         Potential: 167(8.45%)

         Not English: 15(0.76%)

         Other: 0(0.00%)


QGOLD_YNVALUES:

         yes: 18(62.07%)

         no: 4(13.79%)

         unsure: 7(24.14%)


效果评估

训练集:train,测试集:dev



训练集:train,测试集:test



训练集:train+dev,测试集:test



总体上看,效果一般般吧。

代码实现



参考文献

[1]毛先领, 李晓明. 问答系统研究综述[J]. 计算机科学与探索, 2012, 6(3):193-207.

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

[3]Quan H T, Tran V, Tu V, et al. JAIST: Combining multiple features for AnswerSelection in Community Question Answering[C] International Workshop on SemanticEvaluation. 2015:215-219.

[4] Matthew Hoffman, David M Blei, Francis Bach.Advancesin Neural Information Processing Systems.2010/1/2:856-864.

[5]MikolovT, Chen K, Corrado G, et al. Efficient Estimation of Word Representations inVector Space[J]. Computer Science, 2013.

[6]Goldberg Y, Levy O. word2vec Explained: deriving Mikolov et al.'snegative-sampling word-embedding method[J]. Eprint Arxiv, 2014.
--------------------- 
作者:Index_gz 
来源:CSDN 
原文:blog.csdn.net/Index_gz/article/details/69524747