我有一组标有pos
和neg
的大量训练单词来对文本进行分类。我使用TextBlob(根据this tutorial)来分类文本。虽然它运作得相当好,但对于大型训练集(例如8k字)来说可能会非常慢。
我想尝试用scikit-learn
做这个,但我不知道从哪里开始。上述教程在scikit-learn
中的外观如何?我也喜欢训练集包括某些单词的权重。一些应该保证特定文本被归类为“正面”而另一些则保证它被归类为“否定”。最后,有没有办法暗示分析文本的某些部分比其他部分更有价值?
对现有教程或文档的任何指示表示赞赏!
答案 0 :(得分:1)
Sebastian Raschka's Python Machine Learning book中有关于此主题的精彩章节,可以在此处找到代码:https://github.com/rasbt/python-machine-learning-book/blob/master/code/ch08/ch08.ipynb。
他在IMDB数据集上进行情绪分析(您尝试做什么)。他的数据并不像你那样干净 - 从它的外观 - 所以他需要做更多的预处理工作。您可以通过以下步骤解决问题:
通过矢量化文字来创建数字要素:http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.HashingVectorizer.html
训练测试分组:http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html
训练并测试您最喜欢的模型,例如:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
答案 1 :(得分:0)
有许多方法可以做到这一点,如Tf-Idf(术语频率 - 反向文档频率),计数矢量化器,潜在语义分析(LSA),潜在Dirichlet分配(LDA),Word2Vec。
在上述所有方法中,Word2Vec是最好的方法。您可以使用Google预装的Word2Vec模型,可在以下网址找到: