我不確定問題到底是什麼,但我假設你問如何將二進制文件加載到Python應用程序中?您可以使用gensim例如已經內置工具二進制譯碼:
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」,因此我們知道浮點數,它告訴我們有3個詞,每個詞是300D向量。
二進制文件被組織爲一系列字節,每個8位。詳細瞭解wiki page上的二進制。
在十進制格式的數字0.0056,成爲二進制:
00111011 10110111 10000000 00110100
因此,這裏有4個字節組成的浮動。我們怎麼知道呢?因爲我們假設二進制編碼爲32位浮點數。
如果二進制文件表示64位精度浮點數?然後二進制中的小數點0.0056變爲:
00111111 01110110 11110000 00000110 10001101 10111000 10111010 11000111
是的,長度的兩倍是因爲精度的兩倍。所以當我們解碼word2vec文件時,如果權重是300d,並且是64位編碼,那麼應該有8個字節來表示每個數字。因此,一個單詞嵌入在文件的每一行中將有300 * 64 = 19,200個二進制數字。得到它?
你可以谷歌「如何二進制數字」工作,數以百萬計的例子。
請參閱'pickle':https://docs.python.org/3/library/pickle.html – alvas
「二進制」文件有點誤導。計算機上的所有文件都以二進制形式存儲。 'binary = True'是指文件的序列化,以便計算機可以直接加載文件而不需要「解析」特定的格式。請參閱pickle文檔; P – alvas