我正在使用斯坦福命名实体识别系统来识别我的查询中的命名实体。我发现其中一个分类器(english.all.3class.distsim.crf.ser.gz)比另一个(english.muc.7class.distsim.crf.ser.gz)更能识别人员命名的实体。而第二个分类器比第一个分类器更多地识别组织命名实体。问题是我如何修改我的代码来结合3class和7class分类器的性能。我的意思是如何将第2行和第3行合并。
public void main () {
//String serializedClassifier = "classifiers/english.all.3class.distsim.crf.ser.gz";
String serializedClassifier = "classifiers/english.muc.7class.distsim.crf.ser.gz";
AbstractSequenceClassifier<CoreLabel> classifier = CRFClassifier.getClassifierNoExceptions (serializedClassifier);
//String s5 = "Access Team Microsoft";
String s5 = " Victor Vianu";
String ans4 = classifier.classifyToString(s5);
System.out.println(ans4);
}发布于 2014-09-05 08:50:53
您实际上是在为分类任务改写一个常见的优化问题。可以组合来自不同命名实体识别器的输入,但您不太可能在代码中做到这一点。在这种情况下,您实际上需要编写规则集来表达一个批注相对于另一个批注的优先级。这样的规则集可能会变得非常复杂,并且很难维护,即使您使用的是专门的框架。
通常,使用这两个输入以及人工执行的注释来训练额外的分类器。这就是有监督的机器学习。如果您对这个主题感兴趣,可以看看Gate框架,它提供了对文本工程和机器学习的相对温和的介绍(GUI和大量文档可用)。您可能会对设置机器学习部分感兴趣:https://gate.ac.uk/sale/tao/splitch19.html#x24-46100019.2
发布于 2015-10-20 17:50:07
一个想法是获得ner标签者的分数或置信度(3class,7class等)。并基于该分数为已被标识为特定类型的实体的每个标记选择一个或另一个分类器的结果。
您可以通过创建一个例如List> results3ClassClassifier = 3Class.classify(textWithInstances);
(您还可以获得7Class分类器的结果),然后您可以访问分数,例如:
for (List<CoreLabel> sentence : results3ClassClassifier) {
Triple<Counter<Integer>, Counter<Integer>, TwoDimensionalCounter<Integer, String>> scoresPerClass = 3Class.printProbsDocument(sentence);
//take score corresponding to a tagged token
//put that in a set of scores to get later max confidence
}THis将为您提供类似以下内容:
Victor null O=0.011843980924431554 PERSON=0.9836181561256115 DATE=1.8909193023530869E-6 LOCATION=9.292607205855801E-5 ORGANIZATION=0.004434710463296233 PERCENT=1.168471927873708E-6 MONEY=3.925377823223501E-6 TIME=3.241645549570373E-6
Vianu null O=0.0019172569594321069 PERSON=0.9933531725355365 DATE=8.384789134033624E-6 LOCATION=2.134536699512499E-4 ORGANIZATION=0.004496303036216309 PERCENT=1.6256270957396572E-6 MONEY=7.507677140678878E-6 TIME=2.2957054950451435E-6为Victor Vianu (伟大的研究人员!)这很简单,但对于不太知名的实体,您可以获得置信度的事实在实践中是有用的。
https://stackoverflow.com/questions/22522798
复制相似问题