Ошибка UnicodeDecodeError при загрузке word2vec - PullRequest
0 голосов

Полное описание

Я начинаю работать со встраиванием слов и нашел много информации об этом.На данный момент я понимаю, что я могу обучать свои собственные векторы слов или использовать ранее обученные векторы, такие как Google или Wikipedia, которые доступны для английского языка и бесполезны для меня, так как я работаю с текстами в Бразильский португальский .Поэтому я отправился на поиски предварительно обученных векторов слов на португальском языке и в итоге нашел Список предварительно обученных встраиваний слов Хиросана , который привел меня к WordVectors * 1010 Кюбйонга, из которого я узнал о РамиАль-Рфу Полиглот .После загрузки обоих я безуспешно пытался просто загрузить векторы слов.

Краткое описание

Я не могу загрузить предварительно обученные векторы слов;Я пытаюсь WordVectors и Полиглот .

Загрузки

попытки загрузки

Kyubyong's WordVectors Первая попытка: использование Gensim в соответствии с предложением Hirosan ;

from gensim.models import KeyedVectors
kyu_path = '.../pre-trained_word_vectors/kyubyong_pt/pt.bin'
word_vectors = KeyedVectors.load_word2vec_format(kyu_path, binary=True)

И возвращенная ошибка:

[...]
File "/Users/luisflavio/anaconda3/lib/python3.6/site-packages/gensim/utils.py", line 359, in any2unicode
return unicode(text, encoding, errors=errors)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

Загруженный zip-файл также содержит другие файлы, но все они возвращают похожие ошибки.

Polyglot Первая попытка: следуя инструкциям Аль-Рфуса;

import pickle
import numpy
pol_path = '.../pre-trained_word_vectors/polyglot/polyglot-pt.pkl'
words, embeddings = pickle.load(open(pol_path, 'rb'))

И ошибка вернулась:

File "/Users/luisflavio/Desktop/Python/w2v_loading_tries.py", line 14, in <module>
    words, embeddings = pickle.load(open(polyglot_path, "rb"))

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd4 in position 1: ordinal not in range(128)

Вторая попытка: использование Функция загрузки вложения слова Полиглота ;

Первая, мы должны установить полиглот через пипс:

pip install polyglot

Теперь мы можем импортировать его:

from polyglot.mapping import Embedding
pol_path = '.../pre-trained_word_vectors/polyglot/polyglot-pt.pkl'
embeddings = Embedding.load(polyglot_path)

И возвращается ошибка:

File "/Users/luisflavio/anaconda3/lib/python3.6/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

Дополнительная информация

Я использую Python 3 в MacOS High Sierra.

Решения

Kyubyong's WordVectors Как указал Aneesh Joshi , правильный способ загрузить модель Kyubyong - это вызвать встроенную функцию загрузки Word2Vec.

from gensim.models import Word2Vec
kyu_path = '.../pre-trained_word_vectors/kyubyong_pt/pt.bin'
model = Word2Vec.load(kyu_path)

Даже если я болееблагодарный за решение Aneesh Joshi, polyglot кажется лучшей моделью для работы с португальским языком.Есть идеи по этому поводу?

1 Ответ

0 голосов
/ 29 мая 2018

Для предварительно обученного файла Kyubyong word2vector .bin: возможно, он был сохранен с использованием функции сохранения gensim.

"загрузите модель с load(). Не load_word2vec_format (это для совместимости с C-tool).). "

т.е. model = Word2Vec.load(fname)

Дайте мне знать, если это работает.

Ссылка: Список рассылки Gensim

...