因工作需要比较两个两个字符串的相似度比较,由于最短编辑距离算法不符合需求,就又找其他算法,在网上看到了另一个算法:余弦相似度算法。于是学习了一下,并写篇博客保存,以便学习以及日后用到。
代码如下:
import java.util.HashMap
import java.util.Map;
import java.util.Set;
/*
* 计算两个字符串(英文字符)的相似度,简单的余弦计算,未添权重
*/
public class AnotherCompare {
Map<Character, int[]> vectorMap = new HashMap<Character, int[]>();
int[] tempArray = null;
public AnotherCompare(String string1, String string2) {
for (Character character1 : string1.toCharArray()) { //拆解为向量
if (vectorMap.containsKey(character1)) { //该字符是否已经存在map中
vectorMap.get(character1)[0]++; //key对应的值是一个数组,第一个字符串的字符出现次数存储在数组第一个位置
} else {
tempArray = new int[2];
tempArray[0] = 1; //如果字符没有出现过,就添加到map中,数组第一个位置设为1
tempArray[1] = 0;
vectorMap.put(character1, tempArray);
}
}
for (Character