Повторяющийся файл Gensim из папки кодека charmap не может декодировать байт - PullRequest
0 голосов
/ 24 сентября 2019

Я следую этому руководству по Word2Vec .Я хочу сделать модель gensim, и первое, что я хочу сделать, это попробовать этот код:

class MySentences(object):
    def __init__(self, dirname):
        self.dirname = dirname

    def __iter__(self):
        for fname in os.listdir(self.dirname):
            for line in open(os.path.join(self.dirname, fname)):
                yield line.split()

sentences = MySentences('wos_abstracts') # a memory-friendly iterator
model = gensim.models.Word2Vec(sentences) 

wos_abstracts - это папка, в которой содержится сотня файлов для создания модели.Когда я попытался запустить его, он вернул ошибку «кодек charmap не может декодировать байт 0x8».Я полагаю, если это правильно, это связано с юникодом, так как реализовать чтение файлов как юникод на основе приведенного выше кода?А если нет, что мне добавить?Спасибо за вашу помощь.

ОБНОВЛЕНИЕ (ОТВЕТ)

for fname in os.listdir(self.dirname):
    with open(os.path.join(self.dirname, fname), encoding="utf8") as f:
        yield f.read()

1 Ответ

0 голосов
/ 24 сентября 2019

"кодек не может декодировать байт 0x8" во время чтения?

Это очень распространенная проблема, которая имеет очень распространенное решение.Вы не упомянули кодировку при чтении файла.

Попробуйте что-то подобное при открытии файла:

file = open(os.path.join(self.dirname, fname), encoding="utf8")

Надеюсь, это поможет.Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...