2014-10-28 116 views
1

我從使用斯坦福NER CRFClassifier的新聞文章中提取命名實體,爲了實現主動學習,我想知道每個標記實體的類的置信度分數是多少。Display Stanford NER confidence score

爲例顯示:

LOCATION(0.20)PERSON(0.10),組織(0.60)MISC(0.10)

這是我從文本中提取命名實體代碼:

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

是否有解決方法來獲取thoses值以及註釋?

回答

4

我由我自己發現了這件事,在CRFClassifier的doc它寫的是:由CRF分配

概率就可以利用 printProbsDocument()getCliqueTrees()方法進行詢問。

第一種方法是沒有用的,因爲它只能打印我想在控制檯上的東西,但我希望能夠訪問這些數據,所以我已閱讀怎樣用這種方法進行編碼和複製了一下它的行爲像這個:

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); 
}