在Python中读取word2vec二进制文件

问题描述 投票:0回答:1

我正在尝试读取bin文件。它有数百万行单词后跟空格分隔数字。

所以,在Python中,我还没有能够打印出一条线,它会产生乱码或错误的输出。

with open('GoogleNews-vectors-negative300.bin', mode='rb') as file: # b is important -> binary
    for line in file.readline():
        print(line)

我应该如何逐行读取二进制文件?

python file binary binaryfiles word2vec
1个回答
1
投票

二进制文件往往不是面向行的。他们在印刷时也会表现出胡言乱语。所以你的代码工作正常,但你的期望是错误的。

你的最终目标是什么?如果它有可用的单词向量,你可能想要使用一些预先存在的Word2Vec库,例如Python中的gensim

在这样的库中,您还可以查看用于读取.bin字向量格式的源代码,作为要学习的模型,如果由于某种原因您确实需要编写自己的阅读代码。例如,这是gensim源代码,它以Google原始word2vec.c代码编写的格式读取word-vector文件:

https://github.com/RaRe-Technologies/gensim/blob/3c3506d51a2caf6b890de3b1b32a8b85f7566ca5/gensim/models/utils_any2vec.py#L123

(它更常用于KeyedVectors.load_word2vec_format()公共API方法。)

© www.soinside.com 2019 - 2024. All rights reserved.