结合文本和数字列进行ML算法

时间:2018-07-12 10:12:29

标签: python pandas machine-learning nlp feature-extraction

在这里,我正在处理情绪分类问题,我必须在其中预测这些推文是正面的,负面的还是中立的。这是我的数据集的一瞥:

tweet_id   airline_sentiment_confidence   negativereason   negativereason_confidence   airline   name   retweet_count   text   tweet_created   tweet location   user_timezone   airline_sentiment
Tr_tweet_1   1.000                          NaN             NaN                        Virgin America    0             tweets   date               Location        Time             Positive
Tr_tweet_2   0.3846                         NaN             0.7033                     Virgin America    0             tweets   date               Location        Time             Negative
Tr_tweet_3   0.6837                         Bad flight      0.3342                     Virgin America    0             tweets   date               Location        Time             Negative
Tr_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%的准确性很低,这证明是纯NLP问题。但是,如果我能以某种方式使用它们,其他功能肯定会提高我的准确性。

我想知道如何将negativereason等其他数字列和文本列与text列结合使用,以提高准确性。

或者这里有什么可以堆叠的方法吗?像合并Tfidf的预测,然后再次使用其余数值列进行预测一样?

TL; DR 如何处理数字列和文本列作为做出良好预测的功能?

1 个答案:

答案 0 :(得分:0)

解决这个问题的一种方法是,如您所提到的那样。您可以将每个tweet表示为特征向量,其中向量中的每个位置代表一个单词/术语,其值就是该单词的tf-idf值。然后,您可以将每个tweet的tf-idf向量与剩余的数字列连接起来,并将每个向量堆叠在一起,以获得一个矩阵(一旦有了矩阵,就可以开始尝试其他方法了)机器学习模型!)

一些注意事项,一旦每个推文都有一个tf-idf向量,运行诸如PCA之类的降维算法可能是有意义的,因为您将处理一个大而稀疏的向量。另外,根据您的数据,可能有必要对每个串联的向量进行规范化(例如,使所有内容的值都从0-1开始)。最后,通常个别推文的文字信息不够丰富。您可能需要考虑将类似的tweet聚集在一起以获得更好的结果。