首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java程序中使用多个分类器

在Java程序中使用多个分类器
EN

Stack Overflow用户
提问于 2014-03-20 11:18:48
回答 2查看 461关注 0票数 3

我正在使用斯坦福命名实体识别系统来识别我的查询中的命名实体。我发现其中一个分类器(english.all.3class.distsim.crf.ser.gz)比另一个(english.muc.7class.distsim.crf.ser.gz)更能识别人员命名的实体。而第二个分类器比第一个分类器更多地识别组织命名实体。问题是我如何修改我的代码来结合3class和7class分类器的性能。我的意思是如何将第2行和第3行合并。

代码语言:javascript
复制
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);
}
EN

回答 2

Stack Overflow用户

发布于 2014-09-05 08:50:53

您实际上是在为分类任务改写一个常见的优化问题。可以组合来自不同命名实体识别器的输入,但您不太可能在代码中做到这一点。在这种情况下,您实际上需要编写规则集来表达一个批注相对于另一个批注的优先级。这样的规则集可能会变得非常复杂,并且很难维护,即使您使用的是专门的框架。

通常,使用这两个输入以及人工执行的注释来训练额外的分类器。这就是有监督的机器学习。如果您对这个主题感兴趣,可以看看Gate框架,它提供了对文本工程和机器学习的相对温和的介绍(GUI和大量文档可用)。您可能会对设置机器学习部分感兴趣:https://gate.ac.uk/sale/tao/splitch19.html#x24-46100019.2

票数 1
EN

Stack Overflow用户

发布于 2015-10-20 17:50:07

一个想法是获得ner标签者的分数或置信度(3class,7class等)。并基于该分数为已被标识为特定类型的实体的每个标记选择一个或另一个分类器的结果。

您可以通过创建一个例如List> results3ClassClassifier = 3Class.classify(textWithInstances);

(您还可以获得7Class分类器的结果),然后您可以访问分数,例如:

代码语言:javascript
复制
     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将为您提供类似以下内容:

代码语言:javascript
复制
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 (伟大的研究人员!)这很简单,但对于不太知名的实体,您可以获得置信度的事实在实践中是有用的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22522798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档