无法运行程序,获取解码错误。实际上,我正在使用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/

10-14 18:21
查看更多