如何解决有没有办法遍历 Gensim 的 Word2Vec 的向量?
我正在尝试执行一个简单的任务,该任务需要在将特定向量加载到 gensim 的 Word2Vec 后进行迭代和交互。
基本上,给出的形式的txt文件:
t1 -0.11307 -0.63909 -0.35103 -0.17906 -0.12349
t2 0.54553 0.18002 -0.21666 -0.090257 -0.13754
t3 0.22159 -0.13781 -0.37934 0.39926 -0.25967
其中 t1 是向量的名称,接下来是向量本身。我使用函数 vecs = KeyedVectors.load_word2vec_format(datapath(f),binary=False)
加载它。
现在,我想通过迭代我有和进行计算的矢量,取总结所有向量,例如,如果这是使用 with open(f)
读取的,我知道我可以在其上使用 .split(' ')
,但由于它现在是 KeyedVector 对象,我不知道该怎么做。
我已经浏览了 word2vec 文档,也使用了 dir(KeyedVectors)
,但我仍然不确定是否有像 KeyedVectors.vectors
这样的属性或允许我执行此任务的东西。
任何提示/帮助/建议将不胜感激!
解决方法
在 KeyedVectors
对象的 .index_to_key
属性中有一个包含所有单词的列表。因此,对所有向量求和的一种方法是在列表推导式中按名称检索每个向量:
np.sum([vecs[key] for key in vecs.index_to_key],axis=0)
但是,如果您真正想要做的只是对向量求和——并且键(词标记)不是计算的重要部分,那么所有原始词向量的集合都可以在 {{1 }} 属性,作为每行一个向量的 numpy 数组。所以你也可以这样做:
.vectors
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。