文本相似度计算方法发展
2018-03-21曾云泽
曾云泽
(中国民航大学,天津 300300)
1 引言
在信息爆炸时代,人们迫切希望从海量信息中获取与自身需要和兴趣吻合度高的内容。为了满足此需求,出现了多种应用,如搜索引擎、自动问答系统、文档分类与聚类、文献查重、文献精准推送等,而这些应用场景的关键技术之一就是文本相似度计算技术[1]。例如给定两个句子:“今天天气很糟糕,已经开始下雨了。”、“今天风雨交加、电闪雷鸣。”,尽管两个句子描述的都是今天天气很糟糕,但是使用不同的句子相似度计算算法得出的结论会大相径庭。下文将从传统方法开始,详细描述句子相似度计算技术的发展状况。
2 基于词匹配的方法
基于词匹配的方法是自然语言处理任务中最经典、最直观的方法。给定两个存在多个用词相同的文本,通过相同词语的出现频率来度量该两个文本间的相似度。但是这种方法有个致命的缺点,如果两个文本存在多个相似词语但不存在多个相同词语,则该方法计算的结果为这两个文本不相似。这种方法不能正确理解到词语的语义信息,例如“高兴”进而“开心”语义上是相同的,但是用词不同。因此为了解决这个问题,提出了基于分布式词向量方法。
3 基于词向量的方法
分布式词向量的概念最早由Hinton提出,首先将每个词映射为一个固定长度的向量,每个词向量可以视为高纬词向量空间的一个点,则词汇间的相似性可以由向量间的距离进行度量[2]。通过word2vec中的CBOW和Skip-Gram模型[3],语义相似但用词不同的词语对应的词向量距离非常相近,反之语义不相似的词向量距离较远。常用的向量距离度量方式有余弦相似度、欧几里得距离、马氏距离等。但是基于词向量的方法也有其不足,例如“我购买不了这项服务”和“我要开通服务”,由于这两个句子存在相似的词语“购买”-“开通”,且存在相同用词“服务”,因此基于词向量的方法判断这两个句子相似度极高。但是这两个句子明显语义不同,造成这种荒谬的结果的原因在于该方法没有结合两个句子间的上下文信息,不同综合考虑两个句子的语言环境信息,为了解决这个问题,提出了神经网络的方法。
4 基于神经网络的方法
现在主流的神经网络结构主要有卷积神经网络CNN、循环神经网络RNN[4]。基于神经网络的方法最大的优点就是可以在考虑两个文本之间的上下文信息,充分考虑在不同语言环境下,相同或相似用词实际的语义信息[4]。例如上文提及的两个句子:“今天天气很糟糕,已经开始下雨了”、“今天风雨交加、电闪雷鸣”,使用基于神经网络的方法,可以很容易地得到这两个句子语义相同的结果。而且基于神经网络的方法拓展性、泛化能力可以简单地通过增加隐藏层的数量得到逐步提高,因此基于神经网络的方法是现在文本相似度计算的主流研究方向。