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

时间:2019-08-05 08:11:27

标签: python machine-learning text-classification tf-idf

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

我在网上看到的答案是在整个文章/文本块上使用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...

我为糟糕的格式表示歉意;我对此有些陌生。

2 个答案:

答案 0 :(得分:1)

无法使用tf-idf分析单个单词,如果您问这个问题,我相信TF-IDF在您脑海中尚不清楚。

我会尽力弄清楚tf-idf。

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

TF-IDF的第一部分是TF:

  • 术语频率的TF计算使单词的分数增加,在文本中使用的次数越多,TF越大。

第二部分是IDF:

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

通过将这两个系数相乘,您将相对于语料库具有单词在文本中的“重要性”

这里是一个示例,如果“ Mobile”一词出现在两个文本中,其中一个是关于业务(例如出售Mobiles),另一个是关于Tech的话,则语料库中会有两个“ Mobile”得分,当您在未知文章中会遇到这个单词,您可以将未知文章中单词的不同分数相加,就可以准确地说出未知文章在说什么。

答案 1 :(得分:0)

由于TFIDF用于查找代表文档/文章的最佳关键字,因此在单个单词上使用TFIDF没有任何意义。
通过查看单词在文档中的出现频率和包含这些单词的文档的倒频来计算单词的TFIDF得分。

在您的情况下,单个单词被视为文档,并且由于该单词在文档中不存在任何频率,因此TFIDF得分较高,从而形成overfit模型。过度拟合是因为您的模型对可能预测类别的词语不灵活。

因此,最好的解决方案是在整篇文章中使用TFIDF。


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

  1. 计算每个单词的单词嵌入向量,并将其设置为X。
  2. 一个热编码类别并设置为Y。
  3. 使用准备好的数据训练和测试Logistic回归/ KNN / SVM。
  4. 选择精度最高的模型。

这不是最佳解决方案,但可能无法产生良好的结果。但是,请尝试一下以查看结果并调整功能生成或引入新功能。它将帮助您了解机器学习的各个方面。