在Python中读取word2vec二进制文件

时间:2018-09-15 19:00:50

标签: python file binary binaryfiles word2vec

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

因此,到目前为止,在Python中我还无法打印出一行,它给出了乱码或错误的输出。

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

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

1 个答案:

答案 0 :(得分:1)

二进制文件通常不是面向行的。打印时它们还将显示乱码。因此,您的代码正在运行,但是您的期望是错误的。

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

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

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

KeyedVectors.load_word2vec_format()公共API方法中经常使用。)