Я пытаюсь прочитать двоичный файл в Вот. Этот файл содержит словосочетания, прошедшие обучение у Миколова в word2vec запрограммируйте и, кажется, в следующем формате:
12 первых байтов содержат строку: «3000000 300 \ n»
Последующие байты: «<1-я переменная строка слова> [пробел]<4 * 300 байтов, чтобы сформировать 300-мерный вектор с плавающей точкой>[Может быть что-то там]<2-е слово> ….<3000000-е слово> [пробел]<4 * 300 байт> «
С этим C
код:
fscanf(in_file, "%s%c", &buff, &ch);
for (a = 0; a < size; a++) fread(&M[a], sizeof(float), 1, in_file);
Я могу прочитать каждое слово магазин в buff
и соответствующий векторный магазин в M
, Но когда я пробую ту же стратегию в Python
с этим тестовым кодом:
_f = open("GoogleNews-vectors-negative300.bin")
print _f.read(12)
print _f.read(4), _f.read(1) == ' '
_f.read(4*300)
print _f.read(2), _f.read(1) == ' '
_f.read(4*300)
print _f.read(3), _f.read(1) == ' '
_f.read(4*300)
print _f.read(1), _f.read(1) == ' '
Это дает результат:
3000000 300
</s>
Правда
в истинном
для истинного
; Ложь
Очевидно, неправильно, потому что третье слово должно быть that
, Я не могу понять, что я делаю здесь неправильно!
Задача ещё не решена.