NLP& ML文本提取

时间:2017-02-03 20:48:30

标签: machine-learning nlp regression svm naivebayes

我有一些用户聊天数据并分类在各个类别中,问题是有很多算法生成的类别,请看下面的例子:

Message | Category
I want to play cricket | Play cricket
I wish to watch cricket | Watch cricket
I want to play cricket outside | Play cricket outside 

如您所见,从文本本身中提取出类别(本质上是短语), 根据我的数据,有10,000条消息,大约有4,500个独特的灾难。 有没有合适的算法可以在这种情况下给我很好的预测准确性。

1 个答案:

答案 0 :(得分:1)

好吧,我习惯性地使用OpenNLP的DocumentCategorizer来完成这样的任务,但我认为StanfordNLP核心也有类似的东西。 OpenNLP使用Maximum Entropy,但有很多方法可以做到。

首先考虑一下独特标签的数量。基本上你每个类只有一些样本,这通常是一件坏事:如果你试图按照你所暗示的方式进行重叠和/或不合适,那么你的分类器会给出很好的结果。所以这就是我之前在类似情况下所做的事情:将概念分成不同的主题分类器,然后为每个分类器汇总最佳分数。例如,根据您上面所写的内容,您可以使用一个分类模型检测OUTSIDE或INSIDE,然后在另一个分类模型中观察CRICKET与PLAYING CRICKET。然后在运行时,您可以将文本传递到两个分类器中,并为每个分类器采用最佳命中来组合单个类别。伪代码:

DoccatModel outOrIn = new DoccatModel(modelThatDetectsOutsideOrInside);
DoccatModel cricketMode = new DoccatModel(modelThatDetectsPlayingOrWatchingCricket)
String stringToDetectClassOf = "Some dude is playing cricket outside, he sucks";
String outOrInCat = outOrIn.classify(stringToDetectClassOf);
String cricketModeCat = cricketMode .classify(stringToDetectClassOf);
String best = outOrInCat + " " + cricketModeCat ;

你明白我的观点。 还有其他一些随意的想法: - 使用文本索引来探索您获得的数据量,以找出如何分解类别。 - 你想要每个模型的几百个例子

如果您希望我在OpenNLP中为您提供一些代码示例(如果您在Java中执行此操作),请告诉我