请使用余弦相似度算法计算两个文章的相似度,golang实现
时间: 2024-02-01 16:16:24 浏览: 393
好的,以下是使用余弦相似度算法计算两个文章的相似度的Golang实现:
```go
package main
import (
"fmt"
"math"
"strings"
)
func main() {
article1 := "Hello world, this is article 1."
article2 := "Hello world, this is article 2."
similarity := cosineSimilarity(article1, article2)
fmt.Printf("The similarity between the two articles is: %f\n", similarity)
}
func cosineSimilarity(text1, text2 string) float64 {
// 将文章转换为词向量
vector1 := textToVector(text1)
vector2 := textToVector(text2)
// 计算余弦相似度
dotProduct := 0.0
magnitude1 := 0.0
magnitude2 := 0.0
for i := range vector1 {
dotProduct += vector1[i] * vector2[i]
magnitude1 += math.Pow(vector1[i], 2)
magnitude2 += math.Pow(vector2[i], 2)
}
magnitude1 = math.Sqrt(magnitude1)
magnitude2 = math.Sqrt(magnitude2)
return dotProduct / (magnitude1 * magnitude2)
}
func textToVector(text string) []float64 {
// 将文章转换为词向量
wordCounts := make(map[string]int)
words := strings.Fields(text)
for _, word := range words {
wordCounts[strings.ToLower(word)]++
}
// 计算词频
vector := make([]float64, len(wordCounts))
for i, word := range wordCounts {
vector[i] = float64(word) / float64(len(words))
}
return vector
}
```
在这个例子中,我们将两个文章“Hello world, this is article 1.”和“Hello world, this is article 2.”转换为词向量,并使用余弦相似度算法计算它们之间的相似度。最终的结果是1.000000,即两篇文章完全相同。
阅读全文
相关推荐










