gpt4 book ai didi

python - 在不使用嵌套循环的情况下查找所有 word2vec 编码对的余弦距离

转载 作者:行者123 更新时间:2023-11-28 18:07:27 25 4
gpt4 key购买 nike

我需要计算并存储 word2vec 编码的所有词对的余弦距离。每个单词都表示为存储在 pandas 数据框中的 4 * 1 向量,每个元素都在连续范围 [1, 9] 中。我需要将结果存储在 pandas 数据框中,以便可以在恒定时间内访问它。

我无法使用 pandas 库/lambda 的应用功能。使用嵌套循环将花费大约。 9 小时(根据 tqdm)。

word     word1    word2    word3 ...
word1 d11 d12 d13...
word2 d21 d22 d23...
word3 d31 d32 d33...
.
.
.

最佳答案

如果您要使用类似 Python gensim 库的东西将预先存在的矢量集(以原始 word2vec.c 格式)加载到其 KeyedVectors 表示中,然后原始向量将在其 vectors 属性中的一个 numpy 数组中。例如:

kv = KeyedVectors.load_word2vec_format('word_vectors.bin', binary=True)
print(kv.vectors.shape)

然后您可以使用像 scikit-learnpairwise_distances() 这样的库函数计算距离矩阵:

from sklearn.metrics import pairwise_distances
distances = pairwise_distances(kv.vectors, metric="cosine")

因为 sklearn 例程使用优化的 native 数学例程,它可能比您最初的纯 Python 循环方法快很多。但请注意,生成的距离矩阵可能会很大!

(你可以通过kv.index2entity中的列表找出哪些单词在哪些kv.vectors槽中,或者通过字典查找单词的槽在 kv.vocab 中。)

关于python - 在不使用嵌套循环的情况下查找所有 word2vec 编码对的余弦距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52663908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com