我有一个经典的NLP问题,我必须将新闻归类为假或真实。
我创建了两组功能:
A)Bigram术语频率 - 逆文档频率
B)使用pattern.en(https://www.clips.uantwerpen.be/pages/pattern-en)作为文本的主观性,极性,#stopwords,#verbs,#subject,关系语法等获得的大约20个与每个文档相关的特征...
将TFIDF功能与其他功能组合在一起进行单一预测的最佳方法是什么? 非常感谢大家。
答案 0 :(得分:8)
不确定您是否在技术上询问如何在代码中组合两个对象或理论上要做什么,所以我将尝试回答这两个。
从技术上讲,您的TFIDF只是一个矩阵,其中行是记录,列是要素。因此,您可以将新功能作为列添加到矩阵的末尾。可能你的矩阵是一个稀疏矩阵(来自Scipy),如果你用sklearn这样做,所以你必须确保你的新特征也是一个稀疏矩阵(或使另一个密集)。
这会为您提供您的训练数据,就如何处理它而言,它会更加棘手。你在bigram频率矩阵中的特征将是稀疏的(我不是说这里的数据结构我只是意味着你将有很多0),它将是二进制的。虽然您的其他数据密集且连续。这将在大多数机器学习算法中运行,尽管预测可能会受到密集变量的支配。然而,通过一些特征工程,我在过去使用树形连接器构建了几个分类器,这些分类器将术语 - 频率变量的组合与其他更密集的变量相结合并提供增强的结果(例如,查看twitter配置文件和分类的分类器他们作为公司或人)。通常我发现更好的结果,我至少可以将密集变量分成二进制(或分类,然后热编成二进制),这样它们就不会占主导地位。