我正在处理一个情感分类问题,需要预测推文的情感是积极的、消极的还是中性的。以下是我的数据集的一瞥:
tweet_id airline_sentiment_confidence negativereason negativereason_confidence airline name retweet_count text tweet_created tweet location user_timezone airline_sentimentTr_tweet_1 1.000 NaN NaN Virgin America 0 tweets date Location Time PositiveTr_tweet_2 0.3846 NaN 0.7033 Virgin America 0 tweets date Location Time NegativeTr_tweet_3 0.6837 Bad flight 0.3342 Virgin America 0 tweets date Location Time NegativeTr_tweet_4 1.000 Can't tell 1.000 Virgin America 0 tweets date Location Time Neutral Tr_tweet_5 1.000 NaN NaN Virgin America 0 tweets date Location Time Neutral
然而,我将text
列输入到TfIdf_Vectorizer
中,并使用logreg
来预测情感。然而,我的准确率非常低,约为68%
,这显然是一个纯粹的自然语言处理问题。然而,如果我能以某种方式使用其他特征,我的准确率肯定会提高。
我想知道如何将其他数值和文本列(如negativereason
)与我的text
列结合起来作为特征,以提高准确率。
或者,这里是否有任何堆叠方法可以使用?例如,结合Tfidf
的预测,然后再次使用其余的数值列进行预测?
TL;DR 如何处理数值和文本列作为特征以进行良好的预测?
回答:
正如你提到的,一种方法是堆叠。你可以将每条推文表示为一个特征向量,其中向量的每个位置代表一个词/术语,其值是该词的tf-idf值。然后,你可以将每条推文的tf-idf向量与你拥有的其他数值列连接起来,并将这些向量堆叠在一起形成一个矩阵(一旦你有了矩阵,你就可以开始尝试不同的机器学习模型了!)
有几点需要注意,一旦你为每条推文获得了tf-idf向量,可能需要运行降维算法如PCA,因为你将处理一个大而稀疏的向量。此外,根据你的数据,可能需要对每个连接的向量进行归一化处理(例如,使所有值在0到1之间)。最后,通常单个推文在文本信息上不够丰富。你可能需要考虑将相似的推文聚合在一起以获得更好的结果。