Machine learning NLP&ML文本提取

Machine learning NLP&ML文本提取,machine-learning,nlp,regression,svm,naivebayes,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 正如您所看到的,短语基本上是从文本本身提取的, 根据我的数据,共有10000条消息和大约4500个独特类别

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

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 
正如您所看到的,短语基本上是从文本本身提取的, 根据我的数据,共有10000条消息和大约4500个独特类别。
在这种情况下,有没有合适的算法可以给我很好的预测精度

嗯,我习惯于使用OpenNLP的DocumentCategorizer来完成这样的任务,但我认为StanfordNLP core做了一些类似的事情。OpenNLP为此使用最大熵,但有很多方法

首先是关于独特标签数量的一些想法。基本上,每个类只有几个样本,这通常是一件坏事:由于重叠和/或拟合不足,如果您尝试按照您所暗示的方式进行分类,那么无论结果如何,您的分类器都会给出糟糕的结果。在类似的情况下,我以前做过这样的工作:将概念分成不同的主题分类器,然后为每个分类器收集最佳分数。例如,根据您上面所写的内容,您可以使用一个分类模型检测外部或内部,然后在另一个分类模型中观看板球与玩板球。然后在运行时,将文本传递到两个分类器中,并对每个分类器进行最佳匹配,以组合单个类别。伪代码:

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做这件事

所有的示例都是这样的吗?i、 e:这些类别大多是从信息中提取出来的,或者包含在信息中。是的,它们是从文本本身提取出来的,有什么具体的算法吗?