0

这是我的词向量:

google
test
stackoverflow
yahoo

我为这些词分配了一个值,如下所示:

google : 1
test : 2
stackoverflow : 3
yahoo : 4

以下是一些示例用户和他们的话:

user1   google, test , stackoverflow
user2   test , google
user3   test , yahoo
user4   stackoverflow , yahoo
user5   stackoverflow , google
user6

为了满足词向量中不包含值的用户,我分配了“0”

基于此,这对应于:

user1   1, 2 , 3
user2   2 , 1 , 0
user3   2 , 4 , 0
user4   3 , 4 , 0
user5   3 , 1,  0
user6   0 , 0 , 0

我不确定这些是否是正确的值,甚至是对每个词向量值应用值的正确方法,因此可以应用“欧式距离”和“相关性”。我基于“编程集体智能”一书中的片段:

“收集偏好首先你需要一种方法来代表不同的人和他们的偏好。如果你正在构建一个购物网站,你可能会使用值 1 来表示某人过去购买过一件物品,而值 0表示他们没有。”

对于我的数据集,我没有偏好值,所以我只是使用一个唯一的数值来表示用户是否在词向量中包含一个词。

这些是为我的词向量设置的正确值吗?我应该如何确定这些值应该是什么?

4

1 回答 1

3

为了使距离和相似度指标起作用,您需要词汇表中每个单词一列,然后在样本中出现相应的单词时用布尔值 0 和 1 填充这些列。例如

                                 G   T   SO  Y!
google, test, stackoverflow  =>  1,  1,  1,  0
test, google                 =>  1,  1,  0,  0
stackoverflow, yahoo         =>  0,  0,  1,  1

等等

前两个向量之间的平方欧几里得距离现在是

(1 - 1)² + (1 - 1)² + (1 - 0)² + (0 - 0)² = 1

这很直观,因为向量在一个位置上完全不同。类似地,最后两个向量之间的平方距离为 4,这是该空间中的最大平方距离。

这种编码是“one-hot”或“one-of-K”编码的扩展,它是文本机器学习的主要内容(尽管很少有教科书愿意把它拼出来)。

于 2013-04-12T15:36:33.563 回答