我是机器学习、NLP、数据分析方面的新手,但我很有动力去更好地理解它。我正在阅读有关 NLTK、scikit-learn 等的几本书。我发现了一个 python 模块“TextBlob”,并发现它非常容易上手。因此,我创建了一个示例演示 python 脚本,该脚本托管在: https://gist.github.com/dpnishant/367cef57a8033138eb0a 。我试图找出最适合情感分析和文本分类的算法。我的问题如下:

  • 为什么 NaiveBayesClassifier 中的情感分析即使在如此小的训练集上也很慢?这个时间是恒定的还是会随着更多的训练数据而增加更多?而且情感分析也不正确(请参阅脚本输出,它对输入文本“三明治很好”表示“负面”)。我究竟做错了什么?
  • 我在 TextBlob 的文档中读到 NaiveBayesClassifier 是在 movie_review 语料库上训练的。是否有任何 api 可以将其更改为其他内容,也许是 nps_chat?我不太清楚的是语料库的作用是什么?我的意思是,我们正在用我们自己的样本训练数据训练分类器,然后如何使用更具体的语料库,例如nps_chat、product_reviews、moview_review 等会有所帮助吗?
  • 我知道我需要训练一个分类器才能处理未标记的数据。但是,如果训练数据变得庞大,那么最好的处理方法是什么?程序应该每次都从训练数据构建模型,还是有什么方法可以将模型保存到文件(如pickle)并从那里读取?使用 TextBlob 是否可行,这种方法是否有任何性能改进?
  • 在我的脚本中,在最后一个块中,我试图通过 NLTKClassifier 模块评估 SklearnClassifier,但我在那里没有运气。它会抛出一些神秘的错误消息。你能帮我解决吗?如果可能的话,我还可以要求您展示一些有关使用 TextBlob 文档网站上的 nltk.classify 包中可用的算法/分类器的示例,例如Megam、LogisticRegression、SVM、BernoulliNB、GaussianNB 等。了解每种算法的适用性的用例将消除像我这样的初学者的很多疑虑。
  • 最佳答案

  • Naive Bayes classifier (NBC) 是一种简单的算法,时间复杂度低,在实践中运行速度很快。如果您在小数据集上获得缓慢的结果,似乎是由于不同的地方。我怀疑这是由于 TextBlob 对象造成的,这对于短文本来说太过分了。尝试用不同的算法(如决策树)替换 NBC,看看它是否确实是罪魁祸首。
  • 分类器应该在代表将要测试的数据的数据上进行训练。尽管电影评论和您的数据集之间的情绪可能有相似之处,但这是不必要的假设和可能的问题根源。有时,在缺乏标记数据的情况下,人们会在其他数据集上使用预训练。在这种情况下,您应该检查 domain adaptation 问题。
  • 通常你训练模型一次,sae 并使用它。如果数据集可能会发生变化(在 concept drift 的情况下为 a),则需要重新训练。似乎您将从 TextBlob 迁移到 scikit-learn 中受益,这也支持保存模型。
  • 关于machine-learning - 使用 TextBlob 进行文本分类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33980444/

    10-10 12:29