问题描述
这个问题来自于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为权重,构建每个问题和答案的名词实体向量,并计算相应的余弦值。
特殊词特征