📅  最后修改于: 2023-12-03 14:45:54.710000             🧑  作者: Mango
有时候我们需要对文本数据进行聚类或分类,但是在处理文本数据之前,我们需要首先将文本数据转换为数字数据。这时,就需要将文本数据转换为一个向量。在一般情况下,我们将文本数据转换为一个向量,其元素的值表示该数据中对应词汇的频率。如果两个行具有相似的频率,那么这两个行很可能是相关的,可以使用这个特征进行聚类和分类。
在Python中,我们可以使用Counter对象很容易地计算行中每个单词的频率。将这个Counter对象视为一个向量,就可以比较行之间的相似性。
from collections import Counter
def similarity(s1, s2):
c1, c2 = Counter(s1), Counter(s2)
n1, n2 = sum(c1.values()), sum(c2.values())
inter = len(list((c1 & c2).elements()))
return inter / (n1 + n2 - inter)
这个函数的输入是两个字符串行,返回一个0到1之间的值,表示这两个行的相似程度。如果返回值越接近1,那么这两个行越相似。
下面是这个函数的使用示例:
s1 = "The quick brown fox jumps over the lazy dog."
s2 = "The quick brown fox jumps over the lazy cat."
print(similarity(s1, s2)) # Output: 0.8260869565217391
在这个示例中,我们使用上面的similarity
函数计算了s1
和s2
两个行的相似程度。返回值为0.826,表明这两个行的相似程度很高。