Как ввести серию / список, состоящий из разных токенов, в словарь Gensim? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть фрейм данных 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() как описано выше, что тоже не работает.

1 Ответ

0 голосов
/ 24 апреля 2019

Я думаю, вам нужно:

dictionary = gensim.corpora.Dictionary([processed_docs[:]])

Для перебора набора.Вы можете написать [2:], чтобы начать с двух и повторить до конца, или [: 7], чтобы начать с 0, а затем перейти к 7 или [2: 7].Вы также можете попробовать [: len (processing_docs)]

Надеюсь, это поможет:)

...