文本相似度——基于TF-IDF与余弦相似性
本篇博客,主要是描述一种计算文本相似度的算法,基于TF-IDF算法和余弦相似性。算法的描述请务必看阮一峰的博客,不然看不懂本篇博客,地址: http://www.ruanyifeng.com/blog/2013/03/tf-idf.html http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html 在这里,主要讨论具体的代码的实现。过程如下: 使用TF-IDF算法,找出两篇文章的关键词; 每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频); 生成两篇文章各自的词频向量; 计算两个向量的余弦相似度,值越大就表示越相似。 首先,请看此算法代码的文件结构: 接下来,是算法的实现步骤: 第一步:使用TF-IDF算法,找出两篇文章的关键词 /** * (1)使用TF-IDF算法,找出两篇文章的关键词; * * @param uri * 待比较的文本的路径 * @return 文本被分词后,词的ELementSet集合 * @throws IOException */ private static ElementSet getKeyTerms(String uri) throws IOException { // 分词后