余弦相似度(Cosine Similarity的 c语言实现
时间: 2024-09-02 21:02:39 浏览: 211
cos.zip_-baijiahao_python 实现计算余弦相似度_text similarity_travel5we_相似
余弦相似度是衡量两个非零向量之间相似度的度量方法,它是通过计算两个向量在方向上的相似度来进行的,其值介于-1和1之间。两个向量的余弦相似度越高,表示它们之间的夹角越小,方向越相似。在文本分析、推荐系统等领域有广泛应用。
余弦相似度的计算公式为两个向量的点积除以它们各自模长的乘积。假设我们有两个向量A和B,则它们之间的余弦相似度可以表示为:
cos(θ) = (A · B) / (||A|| * ||B||)
其中,A · B表示向量A和B的点积,||A||和||B||分别表示向量A和B的模长。
以下是一个简单的C语言实现示例:
```c
#include <stdio.h>
#include <math.h>
// 计算向量的模长
double vector_magnitude(double *vector, int size) {
double sum = 0.0;
for (int i = 0; i < size; i++) {
sum += vector[i] * vector[i];
}
return sqrt(sum);
}
// 计算两个向量的点积
double dot_product(double *vectorA, double *vectorB, int size) {
double sum = 0.0;
for (int i = 0; i < size; i++) {
sum += vectorA[i] * vectorB[i];
}
return sum;
}
// 计算余弦相似度
double cosine_similarity(double *vectorA, double *vectorB, int size) {
double dot = dot_product(vectorA, vectorB, size);
double magnitudeA = vector_magnitude(vectorA, size);
double magnitudeB = vector_magnitude(vectorB, size);
return dot / (magnitudeA * magnitudeB);
}
int main() {
double vectorA[] = {1, 2, 3};
double vectorB[] = {4, 5, 6};
int size = 3;
double similarity = cosine_similarity(vectorA, vectorB, size);
printf("Cosine Similarity: %f\n", similarity);
return 0;
}
```
阅读全文