本篇文章是我在读期间,对自然语言处理中的文本相似度问题研究取得的一点小成果。如果你对自然语言处理 (natural language processing, NLP) 和卷积神经网络(convolutional neural network, CNN)有一定的了解,可以直接看摘要和LSF-SCNN创新与技术实现部分。如果能启发灵感,应用于更多的现实场景中带来效果提升,那才是这篇文章闪光的时刻。如果你没有接触过NLP和CNN,也不在担心,可以从头到尾听我娓娓道来。有任何问题,欢迎交流。
1. 摘要LSF-SCNN,即基于词汇语义特征的跳跃卷积模型 (Lexical Semantic Feature based Skip Convolution neural network ),基于卷积神经网络模型引入三种优化策略:词汇语义特征 (Lexical Semantic Feature, LSF)、跳跃卷积 (Skip Convolution, SC)和K-Max均值采样 (K-Max Average Pooling, KMA) ,分别在词汇粒度、短语粒度、句子粒度上抽取更加丰富的语义特征,从而更好的在向量空间构建短文本语义表达模型,并广泛的适用于问答系统 (question answering)、释义识别 (paraphrase identification) 和文本蕴含 (textual entailment)等计算成对儿出现的短文本的相似度的任务中。
2. 从词向量到文本向量人类的语言,是人类独有的进化千百万年后形成的信息表达方式。相比于具有原始信号输入的图像(像素)和语音(声谱),符号化的自然语言属于更加高层认知的抽象实体。因此,自然语言处理的第一步也是至关重要的一步就是怎样将符号化的自然语言表示成计算机可以理解的数值形式。
对于自然语言的理解,在语言粒度上遵循着自底向上从字、词、句、段落最后到篇章的研究思路。在对最小粒度的字的符号化表达上,基本可以分为两种:one-hot representation和word distributed representation。
one-hot representation是将所有的词构建成一个词典,每个词对应一个索引,该词对应的索引位为1,其他位为0。例如,词典为{welcome to taobao},那么welcome就可以表示为[1,0,0],taobao就表示成[0,0,1]。这种方式有两个缺点:一是维数灾难;二是语义鸿沟,任意两个单词都是正交且孤立的,无法表征词语间的相似性。即便如此,配合传统的最大熵、SVM等算法也很好的实现了NLP中各种主流任务。
word distributed representation在深度学习 (Deep Learning)方法中较常用,通常中文翻译成词向量,或者词嵌入 (word embedding)。它用低维实数变量(常用的有50维,100维,300维)来表示词典中的每一个词。这种方式相比于one-hot representation最大的优点是在向量空间上,可以将词语之间的语义相关关系映射成如欧式距离等距离量度上的大小关系。现有的词向量训练的方法都是在用神经网络训练语言模型的同时,顺便得到了词向量。如果对词向量非常感兴趣,可以参考[1]
在大多数NLP的任务中,如情感分类、机器翻译、问答系统等,都需要以自然语句作为输入。那么,怎样以词向量为基础,表达一个短语或一句话的语义呢?短语或者句子能否也通过向量的形式表达?答案是肯定的。在深度学习框架下,有许多神经网络,如卷积神经网络CNN[2]、递归神经网络Recursive NN[3]、循环神经网络Recurrent NN[4]等,都可以将词向量序列有效的编码成短语或句子向量。
Recursive NN通常自底向上地基于语法解析树的结构逐层生成短语、句子的向量表达,同时受限于生成语法解析树的准确率。
Recurrent NN通常应用于具有时序关系的序列问题,并假设一个序列当前的输出与之前的输出有关,神经网络会对前面的信息进行记忆并应用于当前输出的计算中。
CNN在多种NLP任务中,被证实在同时从语法和语义两个层面学习句子向量表达上表现突出,独有的卷积操作使其可以学习到在文本长序列中具有稳定表达方式的短序列的特征,而与其出现位置无关。
3. 短文本相似度计算的现有解决方案通过神经网络学习到的短语或句子向量就可以进一步应用于以短文本相似度计算为核心的多种任务中,如问答系统中的答案选择问题 (Answer Selection,AS),即从输入问题的特定候选答案列表中,筛选可以回答问题的正确答案,本质是一个二分类问题(预测为正确的答案标记为1,错误的答案标记为0。)再如,释义识别任务,即判断两句话是否表达同一种语义。
目前,基于CNN模型的短文本相似度的计算方法可以大致分为两类:一类是基于Siamese结构的神经网络模型,先分别学习输入的文本对儿的句子向量表达,再基于句子向量计算相似度;另一类是直接以词语粒度的相似度矩阵作为输入,学习并计算文本相似度。下面将分别展开介绍。
3.1 基于Siamese结构的神经网络模型这里列举最近两年比较有代表性的两篇文章。