我有一个具有相应主题的文本语料库。例如,"A rapper Tupac was shot in LA"
和它被标记为["celebrity", "murder"]
。因此,基本上每个特征向量都可以有许多标签(数量不一样)。第一个特征向量可以有3个标签,第二个1,第三个5)。
如果我只有一个标签对应于每一个文本,我会尝试一个朴素贝叶斯分类器,但我真的不知道我应该如何进行,如果我可以有许多标签。
有没有办法将朴素贝叶斯转化为多标签分类问题(如果有更好的方法--请告诉我)?
关于我所掌握的数据。
发布于 2014-12-12 00:13:10
首先,朴素的贝叶斯在这里可能不合适。它假定输入之间的独立性(因此“天真”)和单词在一个句子中是非常依赖的。
但是,假设您真的想使用NB作为开始实验的算法,我会考虑两种选择:
这将是另一种办法。将观察到的所有单词作为输入的载体,形成语料库。建立一个语料库,把所有的标记作为输出的矢量。具有多个输出的NB分类器相当于有多个NB分类器,每个输出具有一个输出(因此,在您使用的任何软件框架中更容易实现的都是这样做)。如果一个给定的输入(一个单词)是一个1
(如果该词存在),则将每个元素当作一个训练样本,如果该单词没有,则作为一个0
。对输出使用相同的二进制方案。
这个野蛮人强制将NB分类器应用于您的数据,并让您通过仍然能够挖掘大量的分类器来找到意义。
这是我建议的方法,如果你想运行一个多类NB分类器。
这里的目标是找出如何将每组标记映射到单个类。我确信有某种类型的集群方案或网络分析(也许“名人”链接到“谋杀”可以成为一个段“放荡”),它将明智地将您的标记映射到一个集群。如果将标记视为节点,将两个给定的标记作为链接处理,那么您将需要研究社区检测算法(这就是我要开始的地方)。但是,如果您只想要一些有用的东西,那么将标签列表转换为数据集中最常见的标记的标签就足够了。
这种方法前端加载清理您的数据的工作,将使NB分类器的输出更容易理解。
https://datascience.stackexchange.com/questions/3688
复制相似问题