“列表”对象没有属性“编码”:情绪分析

时间:2018-12-08 08:03:06

标签: python sentiment-analysis vader

我想使用维达(Vader)对某些文本进行情感分析(但是,除了维达之外,我在此描述的问题也适用于任何词典)。 但是,经过所有数据处理,包括标记化和转换为小写字母(我在这里没有提到)之后,出现以下错误:

有什么想法如何处理文档,以便词典可以阅读文本?谢谢。

  

AttributeError:“列表”对象没有属性“编码”

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:“列表”对象没有属性“编码”

1 个答案:

答案 0 :(得分:1)

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'])