Так что я считаю, несмотря на это время общей проблемы со многими подобными вопросами (особенно на StackOverflow), основная причина этого вопроса зависит в каждом конкретном случаепитон gensim TypeError: принуждать к Unicode: нужна строка или буфер, список найден
В моем случае у меня есть метод, называемый readCorpus
(находка код ниже) считывает список из 21 файлов, извлекать документы из каждого файла затем дают им
операция выхода происходит в конце чтения каждого файла
У меня есть другой метод с именем uploadCorpus
(найти код ниже). Основная цель этого метода - загрузить этот корпус.
Очевидно, что основной причиной использования урожая является то, что корпус может быть очень большим, и мне нужно его только раз читать.
После того, как я бегу метод uploadCorpus
я получаю ошибку ниже
TypeError: coercing to Unicode: need string or buffer, list found
В erros происходит на линии self.readCorpus()])
.
Чтения подобных проблем я пришел, чтобы понять, что происходит, когда список неуместен .. Я пытался uplate линии вопроса здесь docs for docs in self.readCorpus()])
, но я закончил с той же проблемой
Моим код (uploadCorpus)
def uploadCorpus(self):
#convert docs to corpus
print "uploading"
utils.upload_chunked(
self.service,
[{'id': 'doc_%i' % num, 'tokens': utils.simple_preprocess(doc)}
for num, doc in enumerate([
self.readCorpus()])
],
chunksize=1000) # send 1k docs at a time
Мой код readCorpus()
def readCorpus(self):
path = '../data/reuters'
doc=''
docs = []
docStart=False
fileCount=0
print 'Reading Corpus'
for name in glob.glob(os.path.join(path, '*.sgm')):
print 'Reading File| ' + name
docCount=0
for line in open(name):
if(len(re.findall(r'<BODY>', line)) > 0):
docStart = True
pattern = re.search(r'<BODY>.*', line)
doc+= pattern.group()[6:]
if(len(re.findall(r'</BODY>\w*', line)) > 0):
docStart = False
docs.append(doc)
doc=''
docCount+=1
continue
#break
if(docStart):
doc += line
fileCount+=1
print 'docuemnt[%d][%d]'%(fileCount,docCount)
yield docs
docs = []
Попробуйте обертывание 'json.dumps' вокруг списка в загрузках фрагментированной функции. Это преобразует ваш список в строку и сделает его совместимым для загрузки. – kpie
@kpie У меня по-прежнему такая же ошибка –