java 余弦相似度算法
时间: 2023-11-25 18:49:29 浏览: 137
余弦相似度算法计算方法
余弦相似度是一种常用的相似度计算方法,可以用于文本分类、信息检索等领域。在Java中,可以通过以下步骤实现余弦相似度算法:
1. 首先将文本转换为向量表示,可以使用词袋模型或TF-IDF模型等方法。
2. 计算两个向量的点积,即将两个向量对应位置的元素相乘并求和。
3. 计算两个向量的模长,即将向量中每个元素的平方相加并开方。
4. 将步骤2和步骤3的结果相除,即可得到两个向量的余弦相似度。
下面是Java代码示例:
```java
import java.util.HashMap;
import java.util.Map;
public class CosineSimilarity {
public static double cosineSimilarity(Map<String, Integer> vector1, Map<String, Integer> vector2) {
double dotProduct = 0.0;
double norm1 = 0.0;
double norm2 = 0.0;
for (String key : vector1.keySet()) {
if (vector2.containsKey(key)) {
dotProduct += vector1.get(key) * vector2.get(key);
}
norm1 += Math.pow(vector1.get(key), 2);
}
for (String key : vector2.keySet()) {
norm2 += Math.pow(vector2.get(key), 2);
}
return dotProduct / (Math.sqrt(norm1) * Math.sqrt(norm2));
}
public static void main(String[] args) {
Map<String, Integer> vector1 = new HashMap<>();
vector1.put("apple", 1);
vector1.put("banana", 2);
vector1.put("orange", 3);
Map<String, Integer> vector2 = new HashMap<>();
vector2.put("apple", 2);
vector2.put("banana", 1); vector2.put("peach", 3);
double similarity = cosineSimilarity(vector1, vector2);
System.out.println("Cosine similarity: " + similarity);
}
}
```
阅读全文