对于面向具体任务的问答系统,目前市面上的系统维护成本较高,大部分由手写规则构成,扩展能力较差,少部分较为先进的系统采用了检索式方案,其本质是对用户问题进行分类再针对性回答,因此其核心算法是基于问句语义相似度的计算,这些方法大多使用数据驱动的方式代替传统的特征工程与手写模板。对于面向具体任务的问答系统,其设计的核心目标是专注做好一件事情,因此需要保证答句语法正确、内容准确。大部分面向具体任务的问答系统采用了检索的思想,核心主要是对用户的问句与已有的问句-答句库中的所有候选问句计算语义相似度并排序选出最相似的问句,再使用这句问句的对应答句回答用户问句。在具体实现上,主要有以下几种方法:
1.1编辑距离
编辑距离是一种用于计算两个字符串相似度的常用算法,也常被用于计算文本之间的语义相似度[22],主要指两个字符串之间由一个转换为另一个的最小编辑操作次数。编辑操作包括将一个字符串里的一个字符替换成另一个字符,或新插入一个字符,以及删除一个字符。
编辑距离类语义相似度计算方法是一种基于动态规划的非机器学习算法,因此其计算复杂度较髙,对于较大的问句库计算速度极慢。另外,由于其没有刻画问句的语义信息,因此其对于较为复杂的句式和上下文情形下的问句语义相似度识别表现较差。
1.2TF-IDF
TF-IDF(TermFrequency-InverseDocumentFrequency)是一种用于信息检索与文本挖掘的常用技术,用于评价一个单词对于一个语料库中每一份文档的重要程度。因此TF-IDF经过简单的改造可以用来做短句语义相似度算法。
对于基于TF-IDF的语义相似度算法而言,其缺点与编辑距离类似,主要是缺乏对语义信息的刻画与上下文的理解,对含有同义词、多义词、反义词的问句理解较差。
1.3SVM支持向量机
对于SVM类方法而言,其最大的问题是在自然语言处理背景下需要较为复杂的特征工程支持;另外,通过大量的实验发现,自然语言文本数据集大多线性不可分或近似线性可分,为了解决这类问题我们需要引入各种核函数,但这种方法治标不治本,并不能有效刻画上下文的隐含语义,对于噪音较大的数据集效果较差。
1.4文档向量
QuocLe和TomasMikolov在提出Word2Vec[13]模型后,将分布式向量表达推广到了句子建模与文档建模中[26],提出了文档向量(D〇C2VeC)这一模型。其原理与Word2Vec极为相似,其算法同样分为分布式记忆(DistributedMemory,DM)与分布式词袋(DistributedBagofWords,DBoW)两种。Doc2Vec模型将Word2Vec模型中的词向量替换成了句子向量,对于DM模型,其试图在给定的上下文和文档向量的情况下预测下一个单词的概率,在一个句子或文档的训练过程中,句子或文档的序号保持不变,共享着同一个句子文档向量。而DBoW模型则在仅给定文档向量的情况下预测文档中的一个连续窗口大小的单词出现的概率。如图2.2和图2.3,分别展示了PV-DM与PV-DBoW模型的模型结构。
对于面向任务的检索式问答系统,我们可以利用文档向量并对其进行简单改造,由于其可将文档和句子转化向量表示,问句之间的语义相似度可以通过计算句子的文档向量之间的向量夹角实现,由此我们得到了基于文档向量的问句语义相似度算法。
对于采用了文档向量问句语义相似度算法的系统而言,其主要缺点在于文档向量的构建方式其实是对词向量的加权拼接与平均,在拼接或求平均的过程中丢失了原句中的部分语义,导致其对短问句和句式复杂的问句实际效果较差。
补充开放式问答系统:
对于开放领域的问答系统,市面上的系统大多是一些回答较为笼统的通用问答机器人,比如“小黄鸡[21]”,大部分只能与用户聊上两句,而其回答大多牛头不对马嘴,用户体验较差。