私は質問がここにあるかを正確にわからないんだけど、私はあなたの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'
EDIT
:あなたはバイナリをデコードするために組み込まれているツール例えばgensimを使用することができますか?これは特にword2vecには関係していないようです。とにかく、word2vecバイナリファイルでは、各行はバイナリ形式の単語と重みのペアです。最初に、単語は "space"のバイナリ文字を満たすまで文字をループして文字列にデコードされます。その後、残りはバイナリからフロートにデコードされます。 word2vecバイナリファイルには3000000 300などのヘッダがあるので、3mの単語があり、各単語は300Dのベクトルであるため、浮動小数点の数がわかります。
バイナリファイルは、各8ビットの一連のバイトとして編成されます。 wiki pageのバイナリについて詳しくは、こちらをご覧ください。
数10進数で0.0056は、バイナリになった:
00111011 10110111 10000000 00110100
は、だからここにフロートを構成する4つのバイトがあります。これをどうやって知るのですか?バイナリは32ビット浮動小数点を符号化すると仮定しているからです。
バイナリファイルが64ビット精度浮動小数点を表す場合はどうなりますか?次にバイナリの小数点以下0.0056は次のようになります。
00111111 01110110 11110000 00000110 10001101 10111000 10111010 11000111
はい、2倍の精度です。したがって、word2vecファイルをデコードするとき、ウェイトが300dで64ビットエンコーディングの場合、各数字を表す8バイトが必要です。したがって、単語の埋め込みには、ファイルの各行に300 * 64 = 19,200の2進数が入ります。それを得る?
Googleの「バイナリ数字の仕組み」は、数百万の例があります。
'pickle'参照してください:https://docs.python.org/3/library/pickle.html – alvas
"バイナリ" ファイルは少し誤解を招くおそれがあります。コンピュータ上のすべてのファイルはバイナリ形式で保存されます。 'binary = True'はファイルのシリアライズを指し、コンピュータが特定のフォーマットを"解析 "せずにファイルを直接ロードできるようにします。 pickleのドキュメントを参照してください。P – alvas