【问题标题】:Text classification. TFIDF and Naive Bayes? [closed]文本分类。 TFIDF 和朴素贝叶斯? [关闭]
【发布时间】:2017-08-27 02:23:19
【问题描述】:

我正在尝试一项文本分类任务,我有大约 500 条餐厅评论的训练数据,这些评论被标记为 12 个类别。我花了比我应该的时间更长的时间来实现 TF.IDF 和余弦相似度来对测试数据进行分类,结果却得到了一些非常糟糕的结果(0.4 F-measure)。现在时间不在我身边,我需要实施一些更有效的东西,而且没有陡峭的学习曲线。我正在考虑将 TF.IDF 值与朴素贝叶斯结合使用。这听起来合理吗?我知道如果我能以正确的格式获取数据,我可以使用 Scikit learn 来做到这一点。你还有什么建议我考虑的吗?

谢谢。

【问题讨论】:

  • 使用每个类别的 TF.IDF 值向量,使用训练数据,我将如何训练分类器?

标签: python machine-learning scikit-learn nlp


【解决方案1】:

您应该尝试使用 fasttext: https://pypi.python.org/pypi/fasttext 。它可以用来对文本进行如下分类:

(不要忘记在这里下载预训练模型https://s3-us-west-1.amazonaws.com/fasttext-vectors/wiki.en.zip,如果不是英语,请更改语言)

import fasttext

model = fasttext.load_model('wiki.en.bin')  # the name of the pretrained model

classifier = fasttext.supervised('train.txt', 'model', label_prefix='__label__')

result = classifier.test('test.txt')
print ('P@1:', result.precision)
print ('R@1:', result.recall)
print ('Number of examples:', result.nexamples)

你的训练和测试集中的每一行都应该是这样的:

__label__classname 你的餐厅评论等等等等

【讨论】:

  • 谢谢@Vinzee - 我会试一试。我可以使用更小的型号吗?大学计算机没有足够的容量......
  • result.precisionresult.recall 返回 NaN,result.nexamples 返回 0。查看 Facebook 组的 FastText,这似乎是一个常见错误。知道为什么会这样吗?
猜你喜欢
  • 2016-08-02
  • 2018-07-29
  • 2015-03-06
  • 2013-12-24
  • 2015-08-27
  • 2012-07-02
  • 2017-01-10
  • 2014-04-14
相关资源
最近更新 更多