首页 > 解决方案 > 在 Python 中读取 word2vec 二进制文件

问题描述

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

所以,到目前为止,在 Python 中我还没有能够打印出一行,它要么给出乱码,要么给出错误的输出。

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

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

标签: pythonfilebinarybinaryfilesword2vec

解决方案


二进制文件往往不是面向行的。它们在打印时也会显示乱码。所以你的代码正在运行,但你的期望是错误的。

你的最终目标是什么?如果要拥有可用的词向量,您可能想要使用一些预先存在的Word2Vec库,例如gensimPython。

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

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

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


推荐阅读