【发布时间】:2016-03-03 00:24:32
【问题描述】:
我是机器学习、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 等。了解每种算法的适用性的用例将消除像我这样的初学者的很多疑问。
【问题讨论】:
-
我遇到了一个名为 Spacy (
https://spacy.io/docs/) 的项目。挺不错的,看看吧。 -
是的,textblob 很简单,但速度很慢。我们切换到 sklearn,速度更快。
标签: machine-learning nltk sentiment-analysis text-classification textblob