编程语言
首页 > 编程语言> > java – 显示斯坦福NER的置信度

java – 显示斯坦福NER的置信度

作者:互联网

我正在使用斯坦福NER CRFC分类器从新闻文章中提取命名实体,为了实现主动学习,我想知道每个标记实体的类的置信度分数.

显示的例子:

LOCATION(0.20) PERSON(0.10) ORGANIZATION(0.60) MISC(0.10)

这是我从文本中提取命名实体的代码:

AbstractSequenceClassifier<CoreLabel> classifier = CRFClassifier.getClassifierNoExceptions(classifier_path);
String annnotatedText = classifier.classifyWithInlineXML(text);

是否有解决方法来获取值和注释?

解决方法:

我自己发现了它,在CRFClassifier的doc中写道:

Probabilities assigned by the CRF can be interrogated using either the
printProbsDocument() or getCliqueTrees() methods.

第一种方法没有用,因为它只在控制台上打印我想要的内容,但我希望能够访问这些数据,所以我已经阅读了这个方法的编码方式,并将其行为复制了一下,如下所示:

List<CoreLabel> classifiedLabels = classifier.classify(sentences);
CRFCliqueTree<String> cliqueTree = classifier.getCliqueTree(classifiedLabels);

for (int i = 0; i < cliqueTree.length(); i++) {
    CoreLabel wi = classifiedLabels.get(i);
    for (Iterator<String> iter = classifier.classIndex.iterator(); iter.hasNext();) {
        String label = iter.next();
        int index = classifier.classIndex.indexOf(label);
        double prob = cliqueTree.prob(i, index);
        System.out.println("\t" + label + "(" + prob + ")");
    }
    String tag = StringUtils.getNotNullString(wi.get(CoreAnnotations.AnswerAnnotation.class));
    System.out.println("Class : " + tag);
}   

标签:stanford-nlp,named-entity-recognition,java
来源: https://codeday.me/bug/20191007/1864653.html