当前位置:   article > 正文

Java实现余弦相似度算法_java余弦相似度算法

java余弦相似度算法

余弦相似度(Cosine Similarity)是一种衡量两个向量之间相似度的方法,它通过计算两个向量的夹角的余弦值来得到相似度。在推荐系统、文本相似度检测等领域中,余弦相似度算法被广泛应用。

以下是使用Java实现余弦相似度算法的示例代码:

  1. import java.util.Map;
  2. import java.util.HashMap;
  3. public class CosineSimilarity {
  4. // 计算两个向量的点积
  5. private static double dotProduct(Map<String, Double> vec1, Map<String, Double> vec2) {
  6. double dotProduct = 0.0;
  7. for (String key : vec1.keySet()) {
  8. if (vec2.containsKey(key)) {
  9. dotProduct += vec1.get(key) * vec2.get(key);
  10. }
  11. }
  12. return dotProduct;
  13. }
  14. // 计算向量的欧几里得长度(L2范数)
  15. private static double magnitude(Map<String, Double> vector) {
  16. double sum = 0.0;
  17. for (Double value : vector.values()) {
  18. sum += Math.pow(value, 2);
  19. }
  20. return Math.sqrt(sum);
  21. }
  22. // 计算两个向量的余弦相似度
  23. public static double cosineSimilarity(Map<String, Double> vec1, Map<String, Double> vec2) {
  24. double dotProduct = dotProduct(vec1, vec2);
  25. double magnitude1 = magnitude(vec1);
  26. double magnitude2 = magnitude(vec2);
  27. if (magnitude1 == 0 || magnitude2 == 0) {
  28. return 0; // 如果任一向量为零向量,则相似度为0
  29. }
  30. return dotProduct / (magnitude1 * magnitude2);
  31. }
  32. public static void main(String[] args) {
  33. // 示例向量
  34. Map<String, Double> vec1 = new HashMap<>();
  35. vec1.put("A", 1.0);
  36. vec1.put("B", 2.0);
  37. vec1.put("C", 3.0);
  38. Map<String, Double> vec2 = new HashMap<>();
  39. vec2.put("A", 1.0);
  40. vec2.put("B", 2.0);
  41. vec2.put("C", 4.0);
  42. // 计算余弦相似度
  43. double similarity = cosineSimilarity(vec1, vec2);
  44. System.out.println("Cosine Similarity: " + similarity);
  45. }
  46. }

在上面的代码中,我们定义了两个辅助方法dotProduct和magnitude,分别用于计算两个向量的点积和向量的欧几里得长度(L2范数)。cosineSimilarity方法则利用这两个辅助方法来计算两个向量的余弦相似度。

在main方法中,我们创建了两个示例向量vec1和vec2,然后调用cosineSimilarity方法来计算它们之间的余弦相似度,并将结果打印出来。

请注意,这只是一个简单的示例,用于说明余弦相似度算法的基本实现。在实际应用中,向量可能非常大,包含成千上万个维度,因此可能需要使用更高效的数据结构和算法来处理这些向量。此外,对于稀疏向量(即大多数元素为0的向量),可能需要使用特定的稀疏矩阵技术来优化性能。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/1008604
推荐阅读
相关标签
  

闽ICP备14008679号