如何使用scikit的SVM对文本进行分类?

时间:2014-11-10 18:52:44

标签: machine-learning nlp scikit-learn nltk text-classification

我有一个文本分类任务。到现在为止我只标记了一个语料库,并以一种二元格式提取了一些特征(即bigram = [('word', 'word'),...,('word', 'word')]。我想对一些文本进行分类,因为据我所知,SVM算法只能接收更多的矢量进行分类,所以我使用了一些矢量化器在scikit中如下:

bigram = [ [('load', 'superior')
             ('point', 'medium'), ('color', 'white'),
             ('the load', 'tower')]]

fh = FeatureHasher(input_type='string')

X = fh.transform(((' '.join(x) for x in sample)
                  for sample in bigram))
print X

输出是稀疏矩阵:

  (0, 226456)   -1.0
  (0, 607603)   -1.0
  (0, 668514)   1.0
  (0, 715910)   -1.0

我如何使用先前的稀疏矩阵X来对SVC进行分类?假设我有2个类以及列车和测试集。

1 个答案:

答案 0 :(得分:1)

正如其他人所指出的那样,您的矩阵只是语料库中文档的特征向量列表。使用这些向量作为分类功能。你只需要分类标签y然后就可以使用SVC()。fit(X,y)。

但是......你问这个的方式让我觉得你可能没有任何分类标签。在这种情况下,我认为您希望进行聚类而不是分类。您可以使用其中一种聚类算法来执行此操作。我建议sklearn.cluster.MiniBatchKMeans开始。然后,您可以为每个群集输出前5-10个单词,并从中生成标签。