【问题标题】:How to combine TFIDF features with other features如何将 TFIDF 特征与其他特征结合起来
【发布时间】:2018-07-12 09:26:35
【问题描述】:

我有一个经典的 NLP 问题,我必须将新闻分类为假新闻。

我创建了两组功能:

A) Bigram 项频率-逆文档频率

B) 使用 pattern.en (https://www.clips.uantwerpen.be/pages/pattern-en) 作为文本的主观性、极性、#stopwords、#verbs、#subject、关系语法等获得与每个文档相关的大约 20 个特征...

将 TFIDF 特征与其他特征结合起来进行单一预测的最佳方法是什么? 非常感谢大家。

【问题讨论】:

  • 请将您的脚本添加到我已将 您如何使用它的脚本代码的位置。对带有代码的网页的引用不足。 1)这可能会随着时间的推移而改变,2)它有太多的代码涉及不同的主题......你想让我根据你的问题和你的问题中的几行来选择你制作的代码......不会发生!
  • 对不起,也许我解释得不好。我的是一个理论问题,我对脚本代码不感兴趣。
  • ..yeah.. 那么你的问题会被标记出来......随着时间的推移而改变)。现在它可能会被否决...... :-(

标签: machine-learning nlp text-analysis


【解决方案1】:

不确定您是在技术上询问如何在代码中组合两个对象,还是在理论上要做什么,所以我会尝试回答这两个问题。

从技术上讲,您的 TFIDF 只是一个矩阵,其中行是记录,列是特征。因此,您可以将新功能作为列附加到矩阵的末尾。如果您使用 sklearn 执行此操作,您的矩阵可能是一个稀疏矩阵(来自 Scipy),因此您必须确保您的新特征也是一个稀疏矩阵(或使另一个密集矩阵)。

这为您提供了您的训练数据,就如何处理它而言,这有点棘手。您来自二元频率矩阵的特征将是稀疏的(我在这里不是在谈论数据结构,我只是表示您将有很多 0),并且它将是二进制的。而您的其他数据是密集且连续的。这将在大多数机器学习算法中按原样运行,尽管预测可能由密集变量主导。然而,通过一些特征工程,我在过去使用树集成构建了几个分类器,这些分类器结合了术语频率变量和一些其他更密集的变量,并提供了增强的结果(例如,查看 twitter 配置文件并分类的分类器)他们作为公司或个人)。通常,当我至少可以将密集变量分箱成二进制(或分类然后热编码成二进制)时,我会发现更好的结果,这样它们就不会占主导地位。

【讨论】:

  • 非常感谢您的回答。然后将 pattern.en 特征添加到 TFIDF 特征(仅产生一个大数组)并在结果矩阵上使用单个分类模型可能不是一个好主意。最好的方法是使用 2 个不同的分类器:分类器 A 用于特征 TFIDF,分类器 B 用于使用 pattern.en 生成的特征。然后我使用第三个集成分类器作为随机森林将两个预测器组合起来以获得最终结果。对吗?
  • 好主意我没试过,你有证据表明通常会产生更好的结果吗?我可以看到它避免了我上面列出的问题,但是通过解开你失去密集和稀疏之间关系的特征。例如。也许带有正极性的二元组是真实新闻的关键指标,带有负极性的是假消息,但是这两个特征分别是弱相关的。一个组合分类器会捕捉到这一点,但分离不会。
  • 我会尝试两种方法,我会告诉你的。目前我试图指导两个分类器。基于 TFIDF 的分类器给出了很好的结果,而基于“pattern.en”的分类器与之前的分类器相比给出了更差的结果。非常感谢您的回答。
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 2019-01-20
  • 2016-06-07
  • 1970-01-01
  • 2020-08-01
  • 2021-05-12
  • 2019-06-30
  • 2017-05-11
相关资源
最近更新 更多