文章相似度检索工具
开发环境
基于Windows操作系统,使用vs进行开发。
项目介绍
功能介绍
本项目实现的是一个根据词频获取两篇文章相似度的工具。文本相似度检索经常使用在文本聚类,文本分类,文本挖掘,信息检索上,像是常见的论文查重工具也都是基于文本相似度进行检索分析的。
本项目分别利用相对词频,tf-idf计算两篇文章的相似度,计算结果较为可靠。
检索原理
基于词频进行文本相似度的检索需要统计词频,构建词频特征向量,利用特征向量夹角余弦来表示文本相似度。步骤可以概括为:分词->统计词频->词频向量->相似度计算。
分词是中文检索要加上的特殊的环节,中文不像英文词之间有空格作为间隔,中文是连贯的,为了词频统计我们需要将其按照语义进行分词。
分词的原理也较为复杂,这里给出一篇讲解分词原理的博客。
https://www.cnblogs.com/BaiYiShaoNian/p/5071802.html
接下来统计词频。但在统计次品的时候要注意不计算停用词的词频。停用词是指没有什么实际含义的词,例如:数字,标点,代词,语气助词,副词,介词,连接词等。我们要先去除文章中的停用词,再统计词频。词频即为单词在文章中出现的次数,词频越大一般可认为该词越重要。
构建词频向量需要对词进行编码,确定统计出来的向量的每一维都该表示相同的词的词频,这样构建出来的向量才有意义。把两个文本中的所有有效词全部编码,对于长文本可以按词频从大到小排序,取前n个关键词,再按照编码构建词频向量。
最后计算向量相似度。这里可以使用欧几里得距离,余弦相似度,曼哈顿距离等来计算。我这里通过余弦相似度来进行计算。公式为:cos(θ) = (A * B) / (||A|| * ||B||)
。