Загрузить модель внедрения из файла .BIN ⇐ Python
-
Anonymous
Загрузить модель внедрения из файла .BIN
У меня проблемы с загрузкой модели внедрения из файла .BIN. Когда я пытаюсь прочитать модель, я получаю следующее сообщение об ошибке: UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xd6 в позиции 6: недопустимый байт продолжения
Вот сценарий, который я использую:
импортировать numpy как np импортировать генсим из tqdm импортировать tqdm ## dict из файла .TXT: nlp.stanford.edu/projects/glove >> glove.6B.zip >> glove.6B.50d.txt word_to_embeddings = dict() с open('glove.6B/glove.6B.50d.txt') как f: для строки в f: слово = линия.split()[0] встраивания = np.asarray(line.split()[1:], dtype='float32') word_to_embeddings[слово] = вложения w = word_to_embeddings ## записываем словарь в файл .BIN Защиту save_word2vec_format (fname, vocab, вектор_размер, двоичный = True): """Сохраните скрытую от ввода весовую матрицу в том же формате, который использовался исходной C word2vec-tool, для совместимости. Параметры ---------- имя имени: ул Путь к файлу, используемый для сохранения векторов. словарный запас: дикт Словарный запас слов. векторный_размер: интервал Число размерностей векторов слов. двоичный: bool, необязательно Если задано значение True, данные будут сохранены в двоичном формате word2vec, в противном случае они будут сохранены в виде обычного текста. """ total_vec = len(вокаб) с gensim.utils.open(fname, 'wb') как fout: fout.write(gensim.utils.to_utf8("%s %s\n" % (total_vec, вектор_размер))) для слова, строка в tqdm(vocab.items()): если двоичный: строка = row.astype(np.float32) fout.write(gensim.utils.to_utf8(word) + b" " + row.tobytes()) еще: fout.write(gensim.utils.to_utf8("%s %s\n" % (word, ' '.join(repr(val) для значения в строке)))) save_word2vec_format(binary=True, fname='ppl6B50d.bin', vocab=w,vector_size=50) ## прочитать модель Word2Vec new_model = gensim.models.keyedvectors.load_word2vec_format('ppl6B50d.bin',binary=True) печать (новая_модель) когда я пытаюсь загрузить модель внедрения, я получаю следующее сообщение об ошибке: UnicodeDecodeError: кодек 'utf-8' не может декодировать байт 0xd6 в позиции 6: неверный байт продолжения
Я не понимаю, в чем проблема, файл .BIN создается без ошибок, но я не могу его загрузить. Кто-нибудь может помочь мне решить эту проблему??
Большое спасибо.
У меня проблемы с загрузкой модели внедрения из файла .BIN. Когда я пытаюсь прочитать модель, я получаю следующее сообщение об ошибке: UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xd6 в позиции 6: недопустимый байт продолжения
Вот сценарий, который я использую:
импортировать numpy как np импортировать генсим из tqdm импортировать tqdm ## dict из файла .TXT: nlp.stanford.edu/projects/glove >> glove.6B.zip >> glove.6B.50d.txt word_to_embeddings = dict() с open('glove.6B/glove.6B.50d.txt') как f: для строки в f: слово = линия.split()[0] встраивания = np.asarray(line.split()[1:], dtype='float32') word_to_embeddings[слово] = вложения w = word_to_embeddings ## записываем словарь в файл .BIN Защиту save_word2vec_format (fname, vocab, вектор_размер, двоичный = True): """Сохраните скрытую от ввода весовую матрицу в том же формате, который использовался исходной C word2vec-tool, для совместимости. Параметры ---------- имя имени: ул Путь к файлу, используемый для сохранения векторов. словарный запас: дикт Словарный запас слов. векторный_размер: интервал Число размерностей векторов слов. двоичный: bool, необязательно Если задано значение True, данные будут сохранены в двоичном формате word2vec, в противном случае они будут сохранены в виде обычного текста. """ total_vec = len(вокаб) с gensim.utils.open(fname, 'wb') как fout: fout.write(gensim.utils.to_utf8("%s %s\n" % (total_vec, вектор_размер))) для слова, строка в tqdm(vocab.items()): если двоичный: строка = row.astype(np.float32) fout.write(gensim.utils.to_utf8(word) + b" " + row.tobytes()) еще: fout.write(gensim.utils.to_utf8("%s %s\n" % (word, ' '.join(repr(val) для значения в строке)))) save_word2vec_format(binary=True, fname='ppl6B50d.bin', vocab=w,vector_size=50) ## прочитать модель Word2Vec new_model = gensim.models.keyedvectors.load_word2vec_format('ppl6B50d.bin',binary=True) печать (новая_модель) когда я пытаюсь загрузить модель внедрения, я получаю следующее сообщение об ошибке: UnicodeDecodeError: кодек 'utf-8' не может декодировать байт 0xd6 в позиции 6: неверный байт продолжения
Я не понимаю, в чем проблема, файл .BIN создается без ошибок, но я не могу его загрузить. Кто-нибудь может помочь мне решить эту проблему??
Большое спасибо.
Мобильная версия