我正在尝试读取bin文件。它有数百万行单词后跟空格分隔数字。
所以,在Python中,我还没有能够打印出一条线,它会产生乱码或错误的输出。
with open('GoogleNews-vectors-negative300.bin', mode='rb') as file: # b is important -> binary
for line in file.readline():
print(line)
我应该如何逐行读取二进制文件?
二进制文件往往不是面向行的。他们在印刷时也会表现出胡言乱语。所以你的代码工作正常,但你的期望是错误的。
你的最终目标是什么?如果它有可用的单词向量,你可能想要使用一些预先存在的Word2Vec
库,例如Python中的gensim
。
在这样的库中,您还可以查看用于读取.bin
字向量格式的源代码,作为要学习的模型,如果由于某种原因您确实需要编写自己的阅读代码。例如,这是gensim源代码,它以Google原始word2vec.c
代码编写的格式读取word-vector文件:
(它更常用于KeyedVectors.load_word2vec_format()
公共API方法。)