资源简介
余弦相似性获取文章相似度的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
- 上一篇:eclipse4.4版本fatJar
- 下一篇:JavaWeb项目生成验证码
评论
共有 条评论