У меня есть фрейм данных pandas, в котором есть один столбец с диалоговыми данными. Я предварительно обработал его следующим образом:
def preprocessing(text):
return [word for word in simple_preprocess(str(text), min_len = 2, deacc = True) if word not in stop_words]
dataset['preprocessed'] = dataset.apply(lambda row: preprocessing(row['msgText']), axis = 1)
Чтобы сделать его одномерным, я использовал (оба):
processed_docs = data['preprocessed']
а также:
processed_docs = data['preprocessed'].tolist()
Что теперь выглядит следующим образом:
>>> processed_docs[:2]
0 ['klinkt', 'alsof', 'zwaar', 'dingen', 'spelen...
1 ['waar', 'liefst', 'meedenk', 'betekenen', 'pe...
Для обоих случаев я использовал:
dictionary = gensim.corpora.Dictionary(processed_docs)
Однако в обоих случаях я получил ошибку:
TypeError: doc2bow expects an array of unicode tokens on input, not a single string
Как я могу изменить свои данные, чтобы я не получил эту ошибку TypeError?
Учитывая, что подобные вопросы задавались ранее, я рассмотрел:
Gensim: TypeError: doc2bow ожидает массив входных токенов Unicode, а не одну строку
Основываясь на первом ответе, я попробовал решение:
dictionary = gensim.corpora.Dictionary([processed_docs.split()])
И получил ошибку (/ с):
AttributeError: 'Series'('List') object has no attribute 'split'
И во втором ответе кто-то говорит, что входные данные должны быть токенами, что для меня уже верно.
Кроме того, основываясь на ( TypeError: doc2bow ожидает массив входных токенов Unicode, а не одну строку при использовании gensim.corpora.Dictionary () ), я использовал подход .tolist()
как описано выше, что тоже не работает.