在数据帧上使用 TfidfVectorizer

数据挖掘 机器学习 scikit-学习 熊猫
2021-09-16 19:36:00

我有包含两个列(评论和标签)的数据框:

  Reviews                                     Label  
0 [cameron, diaz, woman, marri, judg, play]   1  
1 [turgid, dialogu, feebl, character, harvey] 0  
2 [misfortun, watch, rubbish, sky, cinema]    1 

我想在 DF 上应用 TfidfVectorizer。
我已经编写了以下代码。

from sklearn.feature_extraction.text import TfidfVectorizer  
df_x=train_df["Reviews"]  
df_y=train_df["Label"]  
cv = TfidfVectorizer()   
df_xcv = cv.fit_transform(df_x)  
a=df_xcv.toarray()  
cv.get_feature_names()  

这是一个错误:

AttributeError: 'list' 对象没有属性 'lower'

为什么这会引发错误?

1个回答

您的评论列是一列列表,而不是文本。Tfidf Vectorizer 适用于文本。我看到您的评论栏只是一个相关极性定义形容词的列表。一个简单的解决方法是:

df['Reviews']=[" ".join(review) for review in df['Reviews'].values]

然后再次运行矢量化器。这将解决问题。