将分类分为多个类别(无监督数据/推文)

时间:2016-04-26 21:07:39

标签: python twitter machine-learning nlp

我想将推文分类为预定义的类别(例如:体育,健康和其他10个)。如果我有标记数据,我将能够通过训练朴素贝叶斯或SVM进行分类。如http://cucis.ece.northwestern.edu/publications/pdf/LeePal11.pdf

中所述

但我无法找到未标记数据的方法。一种可能性是使用期望最大化并生成集群并标记这些集群。但正如前面所说,我已经预定义了一组类,因此聚类不会很好。

任何人都可以指导我应该遵循哪些技巧。感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

好的我能理解的是,我认为有多种方法可以解决这个问题。 将有折衷,准确率可能会有所不同。因为众所周知的事实和观察

每条推文都是截然不同的!

(除非您根据标签和其他关键字从twitter流API中提取数据)。请定义数据源以及如何提取数据。我假设你只是得到一般推文,可以是任何事情

您可以做的是为您拥有的每个班级生成一组字典 (即Music => pop,jazz,rap,instruments ......) 它将包含该类的相关单词。您可以将NLTK用于python,或将 Stanford NLP 用于其他语言。

您可以从提取

开始
  • 同义词
  • 下位词
  • 上位词
  • Meronyms
  • Holonyms

去看看这些NLP Lexical semantics slides。它肯定会清除一些概念。

每个班级都有字典。将它们与你得到的推文进行交叉比较。具有最相似性的推文(您可以根据这些词典中出现的单词对它们进行排名),您可以将其标记为该类。这将使您的推文标记为其他人。 现在的问题是准确性!但这取决于您的课程的数据和多功能性。这可能是" Over kill"但它可能接近你想要的。

此外,您可以通过这种方式标记一些推文,并使用余弦相似性来识别其他推文。这将有助于优化部分。但话又说回来了。如您所知,您可以承担什么权衡

真正的斗争将是机器学习部分以及你如何管理它。

答案 1 :(得分:1)

实际上,这似乎是半监督学习的典型用例。这里有很多使用方法,包括使用约束进行聚类(强制模型将来自同一类的样本聚集在一起),转换学习(其中您尝试将标记样本中的模型外推到未标记样本的分布上)。

你也可以像@Shoaib建议的那样简单地聚类数据,但是你必须提出启发式方法如何处理具有混合标签的聚类。此外 - 显然解决与任务(标签)无关的优化问题将不如实际使用这些知识那么好。

答案 2 :(得分:0)

您可以使用群集执行该任务。为此,您必须首先为每个类标记一些示例。然后使用这些标记的示例,您可以轻松识别每个群集的类。