我正在做一个个人项目来构建一个文本分类器。我从 3000 个类别中抓取了大约 8 篇新闻文章。我在每篇文章中都有每个单词,并在数据框中包含其文章的类别标签。
我在网上看到的答案是指在整个文章/文本块上使用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:
- TF for Term-Frequency 计算使单词的分数增长,它在文本中使用的次数越多,TF 就越大。
第二部分是 IDF:
- IDF 表示反向文档频率,这是另一个系数,随着术语在整个语料库中重复的出现次数而应减少。
通过将这两个系数相乘,您将拥有文本中单词相对于语料库的"重要性"。
举个例子,如果"移动"这个词出现在两个文本中,一个是关于商业的(比如手机的销售(,另一个是关于技术的,那么你的语料库中会有两个"移动"分数,当你在一篇未知的文章中遇到这个词时,你可以把未知文章中的不同单词分数相加,你可以说, 非常准确地说,这篇未知的文章在说什么。
由于TFIDF
用于查找代表文档/文章的最佳关键字,因此对单个单词使用TFIDF
没有任何意义。
单词TFIDF
分数是通过查看其在文档中的频率和包含这些单词的文档的反频率来计算的。
在您的情况下,单个单词被视为文档,并且由于该单词在文档中没有任何频率,因此它将获得较高的TFIDF分数,从而产生overfit
模型。过度拟合,因为您的模型对可能预测类别的单词不灵活。
因此,这里最好的解决方案是在整篇文章中使用TFIDF。
如果您真的想使用单个单词进行分类。您可以执行以下操作
- 计算每个单词的词嵌入向量并设置为 X。
- 一个热编码类别并设置为 Y。
- 使用准备好的数据训练和测试 Logistic Regression/KNN/SVM。
- 选择具有最佳精度的模型。
这不是最好的解决方案,但甚至可能不会产生好的结果。但是试一试,看看结果并调整特征生成或引入新功能。它将帮助您了解机器学习的各个方面。