• 大小: 71KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: Java
  • 标签:

资源简介

余弦相似性获取文章相似度的java实现,tf-idf算法实现

资源截图

代码片段和文件信息

package cn.com.trueway.platform.util;

import java.util.ArrayList;
import java.util.linkedHashMap;
import java.util.List;
import java.util.Map;

import cn.com.trueway.biz.cms.util.FileUploadUtils;

/**
 * 
 * @ClassName: CosineSimilarAlgorithm 
 * @Description: TODO(余弦相似性获取文章相似度的java实现) 
 * @author haoyx 
 * @date 2015-7-14 下午05:32:11 
 *
 */
public class CosineSimilarAlgorithm {

/**
 * 
 * @title: cosSimilarityByFile
 * @Description: 获取两个文件相似性
 * @param @param firstFile
 * @param @param secondFile
 * @param @return
 * @return Double
 * @throws
 */
public static Double cosSimilarityByFile(String firstFile String secondFile) {
try {
Map> firstTfMap = TfIdfAlgorithm
.wordSegCount(firstFile);
Map> secondTfMap = TfIdfAlgorithm
.wordSegCount(secondFile);
if (firstTfMap == null || firstTfMap.size() == 0) {
throw new IllegalArgumentException(
“firstFile not found or firstFile is empty! “);
}
if (secondTfMap == null || secondTfMap.size() == 0) {
throw new IllegalArgumentException(
“secondFile not found or secondFile is empty! “);
}
Map firstWords = firstTfMap.get(firstFile);
Map secondWords = secondTfMap.get(secondFile);
if (firstWords.size() < secondWords.size()) {
Map temp = firstWords;
firstWords = secondWords;
secondWords = temp;
}
return calculateCos((linkedHashMap) firstWords
(linkedHashMap) secondWords);

} catch (Exception e) {
e.printStackTrace();
}
return 0d;
}

/**
 * 
 * @title: cosSimilarityByString
 * @Description: 得到两个字符串的相似性
 * @param @param first
 * @param @param second
 * @param @return
 * @return Double
 * @throws
 */
public static Double cosSimilarityByString(String first String second) {
try {
Map firstTfMap = TfIdfAlgorithm.segStr(first);
Map secondTfMap = TfIdfAlgorithm.segStr(second);
if (firstTfMap.size() < secondTfMap.size()) {
Map temp = firstTfMap;
firstTfMap = secondTfMap;
secondTfMap = temp;
}
return calculateCos((linkedHashMap) firstTfMap
(linkedHashMap) secondTfMap);

} catch (Exception e) {
e.printStackTrace();
}
return 0d;
}

/**
 * 
 * @title: calculateCos
 * @Description: 计算余弦相似性
 * @param @param first
 * @param @param second
 * @param @return
 * @return Double
 * @throws
 */
private static Double calculateCos(linkedHashMap first
linkedHashMap second) {

List> firstList = new ArrayList>(
first.entrySet());
List> secondList = new ArrayList>(
second.entrySet());
// 计算

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      74085  2015-07-14 17:26  文件内容相似度\jcseg-core-1.9.4.jar

     文件       2050  2015-07-14 17:21  文件内容相似度\jcseg.properties

     文件       4218  2015-07-14 17:32  文件内容相似度\代码\CosineSimilarAlgorithm.java

     文件      12577  2015-07-14 17:32  文件内容相似度\代码\TfIdfAlgorithm.java

     文件        288  2015-07-14 17:31  文件内容相似度\比较文件内容相似度.txt

     目录          0  2015-07-14 17:32  文件内容相似度\代码

     目录          0  2015-07-14 17:32  文件内容相似度

----------- ---------  ---------- -----  ----

                93218                    7


评论

共有 条评论

相关资源