2

我在数据库中有记录(行),我想识别类似的记录。我有一个使用余弦相似度的约束。如果变量(属性、列)的类型不同并且以这种形式出现:

[number] [number] [boolean] [20 words string]

如何进行矢量化以应用余弦相似度?对于字符串,我可以使用简单的 tf-idf。但是对于数字和布尔值呢?这怎么能结合起来呢?我的想法是向量的长度为 1+1+1+20。但是,仅将记录的数字转换为我的向量中的系数并将它们与字符串的 tf-idf 连接以计算余弦相似度在语义上是否“有效”?或者我可以将数字视为单词并将 tf-idf 也应用于数字。还有其他技术吗?

4

1 回答 1

1

矢量的每个位置元素必须测量感兴趣实体的特定属性/特征。通常,当涉及单词时,每个可能出现的单词的计数都有一个向量元素。因此,您的向量的大小可能为 1 + 1 + 1 +(词汇量)。

由于余弦相似度是基于数字计算的,因此您可能必须将非数字转换为数字。例如,您可以使用 0, 1 作为布尔值。

您没有提及您的数字字段是表示测量值还是表示离散值(例如键)。如果数值是测量值,则余弦相似度非常适合(尽管如果不同属性的数字比例不同,它可能会使您的结果产生偏差)。但是,如果数字表示键,那么对每个字段使用单个属性会产生较差的结果,因为键 5 与 6 的距离并不比 200 更接近。但余弦相似度不知道这一点。在数据库字段包含键的情况下,您可能希望每个可能的值都有一个布尔 (0, 1) 向量元素。

于 2013-03-22T23:15:45.517 回答