如何基于word2vec计算短语相似度

How to calculate the phrase similarity based on word2vec

我有几百万个句子,想得到短语向量,所以我可以计算短语相似度。但问题是我不知道如何使用 word2vec 来获取词组向量,或者有人知道其他工具吗?


最简单的方法是简单地将每个相应的词向量元素相加,然后重新规范化结果,得到一个句子向量。

在 C# 中,执行如下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var vec = new double[dims];
foreach (var key in sentence)
{
    var tmp = model[key];
    for (var i = 0; i < dims; i++)
        vec[i] += tmp[i];
}

double len = 0;
for (var i = 0; i < dims; i++)
    len += vec[i] * vec[i];

len = Math.Sqrt(len);
var normal = new double[dims];
for (var i = 0; i < dims; i++)
    normal[i] = vec[i] / len;

return normal;

要找到短语相似度,你必须使用词向量(使用 word2vec 算法训练)来组合词组向量。

这里是如何使用 word2vec 获取词组向量:如何计算词组之间的词组相似度