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

In Sklearn machine learning, is there any way to classify text without target labels?

我想知道是否有任何方法可以根据文本中的单词使用 Python 和 Sklearn 机器学习的组合将文本数据分类为不同的 groups/categories?

例如:

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

基本上上面的内容意味着没有带标签的训练数据或目标标签。

你可以尝试聚类的方法,但不能保证你得到的聚类会对应你想要的类别,因为你没有清楚地解释你想要的算法。

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

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

@user1452759

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

对文本进行分类

这在 Scikit-Learn as well as in NLTK 中很容易实现。

您列出的功能:

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

不是聚类算法自然会选择的那些,值得提醒您避免使用启发式算法混淆统计学习算法的可能错误。我建议您首先尝试一些聚类和分类,然后考虑 semi-supervised learning methods 从而可以标记您的聚类并传播这些标签。