我正在尝试读取bin文件。它包含数百万行单词,后跟空格分隔的数字。
因此,到目前为止,在Python中我还无法打印出一行,它给出了乱码或错误的输出。
with open('GoogleNews-vectors-negative300.bin', mode='rb') as file: # b is important -> binary
for line in file.readline():
print(line)
我应该如何逐行读取二进制文件?
答案 0 :(得分:1)
二进制文件通常不是面向行的。打印时它们还将显示乱码。因此,您的代码正在运行,但是您的期望是错误的。
您的最终目标是什么?如果要使用可用的词向量,则可能要使用一些预先存在的Word2Vec
库,例如Python中的gensim
。
在这样的库中,您也可以查看用于读取.bin
字向量格式的源代码,作为可以学习的模型,如果由于某些原因您确实确实需要编写自己的读取代码。例如,以下是gensim源代码,该源代码以Google原始word2vec.c
代码编写的格式读取字向量文件:
(KeyedVectors.load_word2vec_format()
公共API方法中经常使用。)