在Sklearn机器学习中,有没有办法对没有目标标签的文本进行分类?

时间:2015-01-09 12:11:44

标签: python machine-learning scikit-learn

我想知道是否有办法根据文本中的单词使用Python和Sklearn机器学习的组合将文本数据分类到不同的组/类别中?

例如:

text = [["request approval for access", "request approval to enter premises", "Laptop not working"], ["completed bw table loading"]]

我可以获得如下类别:

category_label = [[0,0,2], [1]]
categories = [["approval request", "approval request", "Laptop working"], ["bw table"]]

其中

      0 = approval request
      2 = laptop working
      1 = bw table

基本上,上述意味着没有标记的训练数据或目标标签。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用群集方法,但不能保证您获得的群集会与您想要的类别相对应,因为您还没有清楚地解释算法的内容。

我要做的是手动标记一些数据(标记300个样本需要多长时间?)并对其进行训练,以便您的算法可以学习与每个类相关的单词。

如果这是不可能的,那么最好的办法是计算一个样本和每个类描述之间的余弦相似度,对它们进行排名,然后分配最接近的类。但是在我看来,当你完成编码时,你可以手动标记一些样本并训练一个标准算法,其精度要高得多。

答案 1 :(得分:0)

@ user1452759

您的问题比一般的机器学习更具体,您应该使用包NLTK而不是sklearn。查看使用nltk http://www.nltk.org/book/ch06.html

对文本进行分类

答案 2 :(得分:0)

这可以在Scikit-Learn以及NLTK中实现。

您列出的功能:

0 = approval request
2 = laptop working
1 = bw table

不是聚类算法自然会选择的,并且值得提醒您注意使用启发式方法将统计学习算法蒙上阴影的可能性。我建议您首先尝试一些群集和分类,然后考虑semi-supervised learning methods,以便您可以标记群集并传播这些标签。