2

我有2个问题,

  1. 我通过找出每个单词在文档中出现的次数从文档中创建了一个向量。这是制作矢量的正确方法吗?还是我还必须做其他事情?

  2. 使用上述方法,我创建了 16 个不同大小的文档的向量。现在我想应用余弦相似度来找出每个文档的相似度。我遇到的问题是获得两个向量的点积,因为它们的大小不同。我该怎么做?

4

1 回答 1

3
  1. 听起来很合理,只要它意味着你有一个列表/地图/字典/散列(word, count)作为你的向量表示。

  2. 您应该假装在某个向量中没有出现的单词的值为零,而不会将这些零存储在任何地方。然后,您可以使用以下算法来计算这些向量的点积(伪代码):

    algorithm dot_product(a : WordVector, b : WordVector):
        dot = 0
        for word, x in a do
            y = lookup(word, b)
            dot += x * y
        return dot
    

    lookup部分可以是任何东西,但为了速度,我会使用哈希表作为矢量表示(例如 Python 的dict)。

于 2012-09-19T15:08:37.480 回答