scikit-learn:使用自定义标签对文本进行分类

scikit-learn: classifying texts using custom labels

我有大量标记为 posneg 的单词训练集来对文本进行分类。我使用 TextBlob(根据 this tutorial)对文本进行分类。虽然它工作得相当好,但对于大型训练集(例如 8k 个单词)来说它可能会非常慢。

我想用 scikit-learn 尝试这样做,但我不确定从哪里开始。上述教程在 scikit-learn 中会是什么样子?我还希望训练集包含某些单词的权重。有些应该几乎保证特定文本被归类为 "positive",而其他人则保证它被归类为 "negative"。最后,有没有办法暗示所分析文本的某些部分比其他部分更有价值?

感谢任何指向现有教程或文档的指针!

Sebastian Raschka's Python Machine Learning book and the code can be found here: https://github.com/rasbt/python-machine-learning-book/blob/master/code/ch08/ch08.ipynb 中有一个关于这个主题的精彩章节。

他对 IMDB 数据集进行情绪分析(你正在尝试做什么)。他的数据不像你的那么干净——从表面上看——所以他需要做更多的预处理工作。您的问题可以通过以下步骤解决:

  1. 通过矢量化文本创建数值特征:http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.HashingVectorizer.html

  2. 训练测试拆分:http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html

  3. 训练和测试您最喜欢的模型,例如:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

有很多方法可以做到这一点,例如 Tf-Idf(词频 - 逆文档频率)、计数向量化器、潜在语义分析 (LSA)、潜在狄利克雷分配 (LDA)、Word2Vec。

在上述所有方法中,Word2Vec 是最好的方法。您可以使用 Google 为 Word2Vec 预训练的模型,可在:

https://github.com/mmihaltz/word2vec-GoogleNews-vectors