Ошибка ввода в nltk freqdist с использованием pandas dataframe - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь получить наиболее часто встречающиеся слова из столбца (текстовые строки) в моих данных, используя FreqDist из nltk, после токенизации предложений.

Тем не менее, после применения pandas dataframe я получаю столбец списков вместо строк. Поэтому при запуске я получаю ошибку: TypeError: unhashable type: 'list'

df['Tokenized'] = df['Description'].map(tokenize)
word_dist = nltk.FreqDist(df['Tokenized']) #type error: unhashable type

Прямо сейчас мой токенизированный список. Как мне решить это? Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 25 мая 2019

TL; DR

nltk.FreqDist принимает список строк в качестве входных данных.Вы кормились в серии Панд.

>>> import pandas as pd
>>> from nltk import word_tokenize
>>> from nltk import FreqDist

>>> df = pd.read_csv('x')
>>> df['Description']
0            Here is a sentence.
1    This is a foo bar sentence.
Name: Description, dtype: object

>>> df['Description'].map(word_tokenize)
0              [Here, is, a, sentence, .]
1    [This, is, a, foo, bar, sentence, .]
Name: Description, dtype: object

>>> sum(df['Description'].map(word_tokenize), [])
['Here', 'is', 'a', 'sentence', '.', 'This', 'is', 'a', 'foo', 'bar', 'sentence', '.']

>>> FreqDist(sum(df['Description'].map(word_tokenize), []))
FreqDist({'a': 2, 'sentence': 2, '.': 2, 'is': 2, 'This': 1, 'foo': 1, 'bar': 1, 'Here': 1})


>>> type(df['Description'].map(word_tokenize))
<class 'pandas.core.series.Series'>


>>> type(sum(df['Description'].map(word_tokenize), []))
<class 'list'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...