成对地球移动器跨所有文档的距离(word2vec表示)

时间:2017-06-06 01:50:14

标签: python scikit-learn distance word2vec

是否有一个库可以获取文档列表并集中计算距离的nxn矩阵 - 其中提供了word2vec模型?我可以看到genism允许你在两个文档之间执行此操作 - 但我需要对所有文档进行快速比较。像sklearns cosine_similarity。

2 个答案:

答案 0 :(得分:1)

“动词移动距离”(地球移动器应用于单词向量组的距离)是一个相当复杂的优化计算,取决于每个文档中的每个单词。

我不知道有任何技巧可以帮助它在一次计算多个时更快 - 甚至与同一文档的距离很远。

因此,计算成对距离所需的唯一事情是嵌套循环,以考虑每个(顺序忽略唯一)配对。

例如,假设您的文档列表(每个单词列表)为docsmodel中的gensim字矢量模型和numpy导入为{np 1}},你可以用:

计算成对距离D的数组
D = np.zeros((len(docs), len(docs)))
for i in range(len(docs)):
    for j in range(len(docs)):
        if i == j:
            continue  # self-distance is 0.0
        if i > j:
            D[i, j] = D[j, i]  # re-use earlier calc
        D[i, j] = model.wmdistance(docs[i], docs[j])

可能需要一段时间,但您将在阵列D中拥有所有成对距离。

答案 1 :(得分:0)

除了可以接受的答案外,您可能还想使用更快的wmd库wmd-relax

然后可以将该示例调整为:

D[i, j] = docs[i].similarity(docs[j])