文档相似度算法

本篇博客主要是针对于199801的语料库,进行两两文章之间相似度的计算,最后输出文档相似度的三角矩阵。

文档相似度计算,用到的相似度算法有很多选择,相似度余弦可以说是最常用的算法之一。下面我用到的就是相似度余弦。

对于原始语料库的相似度计算,主要分为以下几个步骤:

1、数据清洗:语料库是分好词的了,所以不需要进行分词处理,只需要去除其中的词性标注信息、特殊符号和停用词等等。

2、建立索引:包括每篇文档索引ArrayList<HashMap<Integer,Float>>docList、文档倒排索引HashMap<Integer,List<WordDoc>>inverseDoc,从inverseDoc中很轻松就能得到每个词的tfidf

3、矩阵运算:运用的是余弦值,将倒排文档HashMap<Integer,List<WordDoc>>inverseDoc,循环变量每个词,计算List<WordDoc>中文档的两两乘机,这个乘机是这个词对于这两篇文档相似度的一个分量,将其加到保存相似度矩阵数组matrix的相应位置。所有计算完成,只是计算出了余弦值的分子,还需要对于每个位置除以相应的余弦值分母,这个通过一次遍历ArrayList<HashMap<Integer,Float>>docList就能算出,保存在ArrayList<Float>fmList中,便于运用。

4、输出矩阵到文本output.txt中:直接循环遍历矩阵数组matrix,将其逐个输出。


Java实现源码下载链接:http://down.51cto.com/data/902686



你可能感兴趣的:(java,相似度计算,199801语料库)