基于词标签相关性的情感分析特征选择
Sentiment Analysis Feature Selection based on word to label correlation
在我对带有标签 (class 1-5) 的 194k 评论文本的数据集进行的情感分析中,我试图减少基于单词的特征(单词)与标签相关性,class可以训练fier
使用带有默认参数化的 sklearn.feature_extraction.text.CountVectorizer,我得到了 86,7k 个特征。执行 fit_transform 时,我得到了一个 CSR 稀疏矩阵,我尝试使用 toarray() 将其放入数据框中。
不幸的是,大小为 (194439,86719) 的数组会导致内存错误。我想我需要它在数据框中才能计算与 df.corr() 的相关性。下面是我的编码:
corpus = data['reviewText']
vectorizer = CountVectorizer(analyzer ='word')
X = vectorizer.fit_transform(corpus)
content = X.toarray() # here comes the Memory Error
vocab = vectorizer.get_feature_names()
df = pd.DataFrame(data= X.toarray(), columns=vocab)
corr = pd.Series(df.corrwith(df['overall']) > 0.6)
new_vocab = df2[corr[corr == True].index] # should return features that we want to use
有没有一种方法可以通过相关性进行过滤而不必将格式更改为数据框?
大多数与在 df 上使用相关性相同方向的帖子不必处理大量数据。
我想还有其他方法可以实现基于相关性的特征选择。使用 SelectKBest 和评分函数 f_regression.
在我对带有标签 (class 1-5) 的 194k 评论文本的数据集进行的情感分析中,我试图减少基于单词的特征(单词)与标签相关性,class可以训练fier
使用带有默认参数化的 sklearn.feature_extraction.text.CountVectorizer,我得到了 86,7k 个特征。执行 fit_transform 时,我得到了一个 CSR 稀疏矩阵,我尝试使用 toarray() 将其放入数据框中。
不幸的是,大小为 (194439,86719) 的数组会导致内存错误。我想我需要它在数据框中才能计算与 df.corr() 的相关性。下面是我的编码:
corpus = data['reviewText']
vectorizer = CountVectorizer(analyzer ='word')
X = vectorizer.fit_transform(corpus)
content = X.toarray() # here comes the Memory Error
vocab = vectorizer.get_feature_names()
df = pd.DataFrame(data= X.toarray(), columns=vocab)
corr = pd.Series(df.corrwith(df['overall']) > 0.6)
new_vocab = df2[corr[corr == True].index] # should return features that we want to use
有没有一种方法可以通过相关性进行过滤而不必将格式更改为数据框? 大多数与在 df 上使用相关性相同方向的帖子不必处理大量数据。
我想还有其他方法可以实现基于相关性的特征选择。使用 SelectKBest 和评分函数 f_regression.