无法运行程序,获取解码错误。实际上,我正在使用gensim并尝试Doc2vec库,而在执行此操作时遇到此错误?
码:-
def to_array(self):
self.sentences = []
for source, prefix in self.sources.items():
with utils.smart_open(source) as fin:
for item_no, line in enumerate(fin):
self.sentences.append(LabeledSentence(
utils.to_unicode(line).split(), [prefix + '_%s' %
item_no]))
return self.sentences
sentences = LabeledLineSentence(sources)
model = Doc2Vec(min_count=1, window=10, size=100, dm_mean=0, sample=1e-5,
negative=5, workers=12)
model.build_vocab(sentences.to_array())
错误:-
File "<ipython-input-88-eab20df20acc>", line 75, in <module>
model.build_vocab(sentences.to_array())
File "<ipython-input-88-eab20df20acc>", line 58, in to_array
utils.to_unicode(line).split(), [prefix + '_%s' % item_no]))
File "C:\Users\summert\AppData\Local\Continuum\Anaconda3\lib\site-
packages\gensim\utils.py", line 235, in any2unicode
return unicode(text, encoding, errors=errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xef in position 21:
invalid continuation byt
最佳答案
似乎此anaconda gensim程序在需要utf-8时获取了一个字节。 model.build_vocab(sentences.to_array())
没有得到所需的类型。
您在哪里找到to_unicode
? “ utils”是从哪里进口的?我认为这不是常规的Python3。请查看this。
鉴于您正在使用Python 3,因此您可能不需要任何东西。
只需更换
(LabeledSentence(utils.to_unicode(line).split()...
与
(LabeledSentence(line.split()...
如果这样不起作用,请尝试:
(LabeledSentence(line.encode('utf-8').split()...
关于python - doc2vec时出现'utf-8'编解码器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44405685/