我应该如何使用 TF-IDF 对我收集的数据进行文本分类?

How should I go about using TF-IDF for text classification on the data I collected?

我正在从事一个构建文本分类器的个人项目。我从 8 个类别中抓取了大约 3000 篇新闻文章。我在每篇文章中的每个单词都在数据框中带有其文章的类别标签。

我在网上看到的答案提到在整个 articles/text 块上使用 tfidf。有没有办法分析单个单词?

这是我的数据目前的样子:

Word:       Category:

Mobile      Science/tech
Phone       Science/tech
Google      Science/tech
Facebook    Science/tech
Implant     Science/tech
Interest    Business/economy
Bank        Business/economy
IMF         Business/economy
Downturn    Business/economy
President   Politics
Donald      Politics
Trump       Politics
etc...        etc...

对于糟糕的格式,我深表歉意;我对此有些陌生。

用tf-idf是没法分析单个词的,如果你问这个问题,相信你的TF-IDF还不清楚。

我会尽量弄清楚 tf-idf。

TF-IDF 是一种计算文本中某些单词相对于语料库(文本集)的 "score" 或 "weight" 的方法。这将使单词在文本中具有重要性。因此,对于出现给定单词的每个文本,您都会得到一个分数。

TF-IDF 的第一部分是 TF :

  • TF for Term-Frequency calculates 使单词的得分增加,它在文本中使用的次数越多,TF 就越大。

第二部分是 IDF :

  • IDF 表示逆文档频率,它是另一个系数,随着术语在整个语料库中重复出现的次数而减少。

通过将这两个系数相乘,您将得到文本中某个词相对于语料库的"importance"。

举个例子,如果单词 "Mobile" 出现在两篇关于商业(如手机销售)和另一篇关于科技的文本中,那么你将有两个分数 "Mobile"语料库,当你在一篇未知文章中遇到这个词时,你可以将未知文章中单词的不同分数相加,然后你就可以非常准确地说出未知文章在说什么。

由于TFIDF用于寻找代表document/article的最佳关键字,因此对单个词使用TFIDF没有任何意义。
TFIDF 一个词的分数是通过查看它在文档中的频率和包含这些词的文档的倒数频率来计算的。

在您的情况下,单个单词被视为一个文档,并且由于该单词在文档中没有任何频率,因此它会获得高 TFIDF 分数,从而导致 overfit 模型。过度拟合,因为您的模型对可能预测类别的词不灵活。

所以这里最好的解决方案是在整篇文章中使用 TFIDF。


如果你真的想用单个词来分类。您可以执行以下操作

  1. 计算每个词的词嵌入向量并设置为X。
  2. 一个热编码类别并设置为Y。
  3. 使用准备好的数据训练和测试 Logistic Regression/KNN/SVM。
  4. Select 准确率最高的模型。

这不是最佳解决方案,但可能不会产生好的结果。但是试试看结果并调整特征生成或引入新特征。它将帮助您了解机器学习的各个方面。