Neural network word2vec如何从二进制文件检索结果?

Neural network word2vec如何从二进制文件检索结果?,neural-network,nlp,semantics,text-mining,word2vec,Neural Network,Nlp,Semantics,Text Mining,Word2vec,代码将google_news二进制文件加载到模型中。 我的问题是,由于二进制文件包含0和1,第3行如何计算二进制文件的输出。我不确定这里的问题到底是什么,但我假设您正在询问如何将二进制文件加载到Python应用程序中?例如,您可以使用内置工具解码二进制文件: from gensim.models.keyedvectors import KeyedVectors model = KeyedVectors.load_word2vec_format('google_news.bin', binary=

代码将google_news二进制文件加载到模型中。
我的问题是,由于二进制文件包含0和1,第3行如何计算二进制文件的输出。

我不确定这里的问题到底是什么,但我假设您正在询问如何将二进制文件加载到Python应用程序中?例如,您可以使用内置工具解码二进制文件:

from gensim.models.keyedvectors import KeyedVectors
model = KeyedVectors.load_word2vec_format('google_news.bin', binary=True)
print(model['the']) # this prints the 300D vector for the word 'the'
编辑

我觉得你的问题更多的是关于二进制文件的?这似乎与word2vec没有特别的关系。无论如何,在word2vec二进制文件中,每一行都是一对二进制格式的字和权重。首先,通过循环字符,将单词解码为字符串,直到它与二进制字符的空格相遇。然后将其余的从二进制解码为浮点。我们知道浮动的数量,因为word2vec二进制文件有一个头,例如3000000 300,它告诉我们有3m个字,每个字是一个300D向量

二进制文件组织为一系列字节,每个字节8位。阅读更多关于二进制的文章

十进制格式的数字0.0056变为二进制:

from gensim.models.keyedvectors import KeyedVectors
model = KeyedVectors.load_word2vec_format('google_news.bin', binary=True)
print(model['the']) # this prints the 300D vector for the word 'the'
这里有4个字节组成一个浮点。我们怎么知道的?因为我们假设二进制编码为32位浮点

如果二进制文件表示64位精度浮动怎么办?然后二进制小数0.0056变为:

00111011 10110111 10000000 00110100
是的,两倍的长度,因为两倍的精度。所以当我们解码word2vec文件时,如果权重是300d,并且是64位编码,那么应该有8个字节来表示每个数字。因此,一个单词嵌入将在文件的每行中包含300*64=19200个二进制数字。明白了吗


你可以用谷歌搜索二进制数字的工作原理,数百万个例子。

好的,正如你的代码所示,你正在将二进制文件加载到模型中。我的问题是,代码的word2vec模型第3行如何从二进制文件检索print语句的输出。我认为,二进制文件是由0和1的onlyNo问题组成的。如果您觉得这回答了问题,请将其标记为已回答。干杯。参见pickle:二进制文件有点误导。计算机上的所有文件都以二进制形式存储。binary=True这里指的是文件的序列化,以便计算机可以直接加载文件,而无需解析特定格式。参见pickle文档;P
00111111 01110110 11110000 00000110 10001101 10111000 10111010 11000111