【问题标题】:TextClassification with TextBlob使用 TextBlob 进行文本分类
【发布时间】:2016-03-03 00:24:32
【问题描述】:

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

  1. 为什么即使在如此小的训练集上,NaiveBayesClassifier 中的情绪分析也很慢?这个时间是恒定的还是会随着更多的训练数据而增加更多?而且情绪分析也不正确(参考脚本输出,它对输入文本“三明治很好”说“否定”)。我做错了什么?

  2. 我在 TextBlob 的文档中读到,NaiveBayesClassifier 是在 movie_review 语料库上训练的。是否有任何 api 我可以将其更改为其他内容,也许是 nps_chat?我不太清楚的是语料库的作用是什么?我的意思是,我们正在用我们自己的样本训练数据训练分类器,那么如何更具体的语料库,例如nps_chat、product_reviews、moview_review 等会有所帮助吗?

  3. 我知道我需要训练一个分类器才能处理未标记的数据。但是,如果训练数据变得庞大,那么处理它的最佳方法是什么?程序应该每次都从训练数据中构建模型,还是有办法将模型保存到文件(比如pickle)并从那里读取?使用 TextBlob 是否可行?这种方法是否会提高性能?

  4. 在我的脚本中,在最后一个块中,我试图通过 NLTKClassifier 模块评估 SklearnClassifier,但我没有运气。它会抛出一些神秘的错误消息。你能帮我解决它吗?如果可能的话,我还可以请求您展示一些有关使用 TextBlob 文档网站上的 nltk.classify 包中提供的算法/分类器的示例,例如Megam、LogisticRegression、SVM、BernoulliNB、GaussianNB 等。了解每种算法的适用性的用例将消除像我这样的初学者的很多疑问。

【问题讨论】:

  • 我遇到了一个名为 Spacy (https://spacy.io/docs/) 的项目。挺不错的,看看吧。
  • 是的,textblob 很简单,但速度很慢。我们切换到 sklearn,速度更快。

标签: machine-learning nltk sentiment-analysis text-classification textblob


【解决方案1】:
  1. Naive Bayes classifier (NBC) 是一种简单的算法,时间复杂度低,在实践中运行速度很快。如果您在小数据集上得到缓慢的结果,这似乎是由于不同的地方。我怀疑这是由于 TextBlob 对象造成的,这对于短文本来说太过分了。尝试用不同的算法(如决策树)替换 NBC,看看它是否确实是罪魁祸首。

  2. 分类器应针对表示将要测试的数据的数据进行训练。尽管电影评论和您的数据集之间的情绪可能有相似之处,但这是不必要的假设,并且可能是问题的根源。在缺乏标记数据的情况下,有时人们会在其他数据集上使用预训练。在这种情况下,您应该检查domain adaptation 问题。

  3. 通常你训练模型一次,然后使用它。如果数据集可能发生变化(在concept drift 的情况下为a),则需要重新训练。看来您将从 TextBlob 迁移到 scikit-learn 中受益,这也启用了保存模型。

【讨论】:

    猜你喜欢
    • 2016-02-26
    • 2022-06-22
    • 2018-06-25
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2012-03-27
    • 2014-04-30
    相关资源
    最近更新 更多