方法总结

可以初步划分为两类,基于词频的方法,通常是一些较为传统的方法,以及基于语义的方法,通常是基于机器学习的方法。

1、基于词频的方法

在机器学习出现之前,传统文本匹配方法通常是根据句子中的词频信息进行检索的,如信息检索中的TF-IDF,BM25,语言模型等方法,主要解决字面相似度问题。这些方法由于计算简单,适用范围广,到现在依旧是很多场景下的优秀基准模型。

1.1 TF-IDF介绍

TF-IDF(term frequency–inverse document frequency 是一种用于资讯检索与文本挖掘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文档集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
TF:在一份给定的文件里,词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的次数。对于在某一特定文件里的词语ti来说,它的TF可表示为:


TF = 某个词在文档中的出现次数/文档中的总词数

IDF :逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到:


IDF = log(语料库中的总文档数/语料库中出现该词的文档数)

最终,TF-IDF=TF * IDF

1.2 BM25介绍

BM25算法是一种应用广泛的对TF-IDF的改进算法,解决了TF-IDF偏向于长文档的问题。传统的TF值理论上是可以无限大的。而BM25与之不同,它在TF计算方法中增加了一个常量k,用来限制TF值的增长极限。
BM25还引入了平均文档长度的概念,单个文档长度对相关性的影响力与它和平均长度的比值有关系引入另外两个参数:L和b。L是文档长度与平均长度的比值。如果文档长度是平均长度的2倍,则L=2。b是一个常数,它的作用是规定L对评分的影响有多大。加了L和b的TF计算公式变为:


TF = ((k + 1) * tf) / (k * (1.0 - b + b * L) + tf)

IDF部分计算方法与TF-IDF中相同。 最终,BM25=TF * IDF

1.3 统计语言模型

统计语言模型用于计算给定一个问题,另一个问题由其生成的概率。通过引入马尔可夫假设,我们可以认为一句话中每个单词出现的概率只与它前面n个词有关,整句的概率就是各个词出现概率的乘积。该模型被称为ngram语言模型。
统计语言模型通常对语料库的大小有着较强的要求,通常来说,随着n-gram模型中n的增加,模型对于概率的估计会更加准确,但是需要的数据量也会成大大增加,所以,常用的统计语言模型通常为2-gram模型或者one-gram模型。

2、基于语义的方法

目前,深度学习模型已经在社区问答领域得到了广泛的应用,由于深度模型考虑了问题与问题之间的语义信息,通常比传统的基于词频的模型能取得更好的效果。

2.1 基于表示的方法

基于表示的方法已被用于文本匹配任务,包括语义相似性,重复问题检测,自然语言推理。下图显示了基于表示的方法的一般架构。

  • 输入句子的向量表示由编码器分别构建。两个输入句子对彼此表示的计算没有影响。
  • 计算出句子的向量表示后,使用余弦相似度,逐元素运算或基于神经网络的组合等方法对编码的向量进行比较。

这种体系结构的优势在于,将相同的编码器应用于每个输入语句会使模型更小。另外,句子向量可以用于可视化,句子聚类和许多其他目的。

下面介绍来自《LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION》文章中一种基于表示的方法QA-LSTM。 QA-LSTM模型采用双向长期短期记忆(biLSTM)网络和池化层来独立构建输入句子的分布式矢量表示。然后,该模型利用余弦相似度来衡量句子表示的距离。 主要可以分为单词表示层,句子表示层,相似度计算层三部分:

1. 单词表示层: 该层的目标是将原始每个词的one-hot编码转换为d维的词向量编码,通常使用word2vec或者glove词向量

2. 句子表示层: 模型采用双向长期短期记忆(biLSTM)网络和池化层来独立构建输入句子的向量表示。之后文章尝试了三种不同的方式来得到最终的句子向量表示:(1)最大池化(2)平均池化(3)两个方向上最后一个词的向量表示的拼接。通过试验,文章最终采用了最大池化的方法得到句子的向量表示

3. 相似度计算层: 利用两个句子向量的cosine相似度来得到最终的相似度得分
训练方法:loss的计算公式如下

L = max{0, M − cosine(q, a+) + cosine(q, a−)} 其中a+为正确答案,a-为错误答案

nlp智能问答系统的特点 智能问答技术_人工智能

2.2基于比较的方法

基于比较的方法通常比较输入句子的较小单位(例如单词),然后将比较结果汇总(例如,通过CNN或RNN),以做出最终决定。与基于表示的方法相比,基于比较的方法可以捕获输入句子之间的更多交互功能,因此在对TrecQA等公共数据集进行评估时,通常具有更好的性能。下图显示了来自《Bilateral Multi-Perspective Matching for Natural Language Sentences》一个典型的基于比较的方法的模型。该模型包括以下五层。

1. 单词表示层(Word Representation Layer)

该层的目标是用d维向量表示输入句子中的每个单词。BiMPM构造具有两个分量的d维向量:一个字符组成的嵌入和一个预先用GloVe或word2vec训练的词嵌入。

2. 上下文表示层(Contex Representation Layer)

该层的目标是为输入句子中的每个位置获取一个新的表示形式,该表示形式除了捕获该位置的单词以外,还捕获一些上下文信息。 BiMPM使用biLSTM生成上下文表示。

3.匹配层(Matching Layer)

该层的目标是将一个句子的每个上下文表示与另一句子的所有上下文表示进行比较。该层的输出是两个匹配向量序列,其中每个匹配向量对应于一个句子的一个位置与另一个句子的所有位置的比较结果。

4.聚合层(Aggregation Layer)

该层的目标是汇总来自上一层的比较结果。 BiMPM使用另一个BiLSTM将匹配向量的两个序列聚合为固定长度向量。

5.预测层(Prediction Layer)

该层的目标是做出最终预测。 BiMPM使用两层前馈神经网络来消耗前一层的固定长度矢量,并应用softmax函数获得最终分数

nlp智能问答系统的特点 智能问答技术_人工智能_02

2.3基于预训练的方法

近年来,随着Bert等预训练模型的出现,由于其在大规模的语料库上进行过训练,所以能捕捉到更多的语义信息。近期社区问答领域效果最好的模型通常都采用了基于预训练的方法。这种方法通常将社区问答任务作为一个二分类任务(相似/不相似)来解决,通过[cls]标记将两个句子拼接作为模型的输入,输出为两者为相似的概率。

下面介绍《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中解决社区问答任务的方法:
1.问题的拼接:

首先将查询和每一个候选文档一起作为Bert模型的输入,开始加入[CLS]标记。查询和文档之间加入[SEP]标记。利用BPE算法等进行分词,得到Bert模型的输入特征向量。

2.相似度计算:

将特征向量输入Bert后,经计算将得到BERT的输出(句子中每个词的向量表示),取[CLS] 标记的向量表示,通过一个单层或多层的线性神经网络,得到两个文档的相似度得分(相似的概率)。

nlp智能问答系统的特点 智能问答技术_nlp智能问答系统的特点_03