Почему я получаю ошибку UnicodeDecode при использовании doc2bow в массиве, закодированном в utf-8? - PullRequest
0 голосов
/ 06 ноября 2018

Итак, я пытаюсь выполнить какое-то тематическое моделирование, и у меня возникают проблемы, когда я пытаюсь использовать doc2bow, чтобы вернуть частоты слов в моем корпусе:

texta = acelem_array
textd = dcmslem_array

corpusa = [ace_word_id.doc2bow(texta) for text in texta]

Ошибка:

UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-25-67c5535e8680> in <module>()
      2 textd = dcmslem_array
      3
----> 4 corpusa = [ace_word_id.doc2bow(texta) for text in ace_lemmas]

<ipython-input-25-67c5535e8680> in <listcomp>(.0)
      2 textd = dcmslem_array
      3
----> 4 corpusa = [ace_word_id.doc2bow(texta) for text in ace_lemmas]

~\Anaconda3\lib\site-packages\gensim\corpora\dictionary.py in doc2bow(self, document, allow_update, return_missing)
    243         counter = defaultdict(int)
    244         for w in document:
--> 245             counter[w if isinstance(w, unicode) else unicode(w, 'utf-8')] += 1
    246
    247         token2id = self.token2id

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

Я проверил, что файлы, которые я использую, были открыты в кодировке utf-8:

ace_output = open('C:/Users/Ayan-Yue/Documents/PROPOSAL/TESTCORPUS/btask/bigaceutf.txt', 'w', encoding='utf8')
with open('C:/Users/Ayan-Yue/Documents/PROPOSAL/TESTCORPUS/btask/bigace.txt', 'r', encoding='utf8', errors='ignore') as text:
    for line in text:
        ace_output.write(line)
ace_output.close()

with open('C:/Users/Ayan-Yue/Documents/PROPOSAL/TESTCORPUS/btask/bigaceutf.txt', 'r', encoding='utf8') as myfile:
    ace_text = myfile.read()

Также проверили, что массивы, используемые для создания texta, содержат строки Unicode:

def lemmas_array(lemmas):
    lemmas_array = np.zeros((len(lemmas), 1), dtype = 'U15')
    for i in range(len(lemmas)):
        lemmas_array[i] = lemmas[i]
    return lemmas_array

acelem_array = lemmas_array(ace_lemmas)
texta = acelem_array

Дайте мне знать, если мне нужно предоставить больше информации.

Большое спасибо !!

...