У объекта 'list' нет атрибута 'encode': анализ настроений - PullRequest
0 голосов
/ 08 декабря 2018

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

Любая идея, как обрабатывать документы, чтобы лексикон мог прочитатьтексты?Спасибо.

AttributeError: у объекта «list» нет атрибута «encode»

with open('data_1.txt') as g:
    data_1 = g.read()
with open('data_2.txt') as g:
    data_2 = g.read()
with open('data_3.txt') as g:
    data_3 = g.read()

df_1 = pd.DataFrame({"text":[data_1, data_2, data_3]})

df_1.head()
                                                 text
#0  [[bangladesh, education, commission, report, m...
#1  [[english, version, glis, ministry, of, educat...
#2  [[national, education, policy, 2010, ministry,...

from nltk.sentiment.vader import SentimentIntensityAnalyzer
vader = SentimentIntensityAnalyzer()

df_1['Vader_sentiment'] = df_1.text.apply(lambda x: vader.polarity_scores(x)['compound'])

AttributeError: у объекта «list» нет атрибута «encode»

1 Ответ

0 голосов
/ 08 декабря 2018

df_1.text - это серия списков списков.Вы не можете применить VADER к любым спискам, особенно к спискам списков.Преобразуйте списки в строки, а затем примените VADER:

df_1['text_as_string'] = df_1['text'].str[0].str.join(" ")
df_1['text_as_string'].apply(lambda x: vader.polarity_scores(x)['compound'])
...