那么,我习惯性地使用OpenNLP的DocumentCategorizer来完成这样的任务,但我认为StanfordNLP核心会做一些类似的事情。 OpenNLP为此使用最大熵,但有很多方法可以做到这一点。
首先对唯一标签的数量进行一些思考。基本上你每个班只有几个样本,这通常是一件坏事:如果你试图按照你所暗示的方式重叠和/或不合适,你的分类器会给出糟糕的结果。所以这就是我之前在类似情况下所做的:将不同的概念分解为不同的专题分类,然后为每个分类汇总最佳分数。例如,根据您上面写的内容,您可能能够使用一种分类模型检测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做这个
都是这样的例子吗? (即:类别大多是“从中提取”或包含在消息中)。 –
是的,他们是从文本本身提取任何具体的算法呢? –