从斯坦福分类器输出置信度分数的方法?

Posted

技术标签:

【中文标题】从斯坦福分类器输出置信度分数的方法?【英文标题】:Method(s) to output confidence score from Stanford Classifier? 【发布时间】:2013-08-04 23:29:48 【问题描述】:

我目前正在研究斯坦福分类器(2.1.8 版于 2013 年 4 月 4 日发布),并为一个内部研究项目编写了一个 java 包装器。基于 ClassifierDemo.java(带有 Classifier zip 文件),我能够调用我的序列化训练模型和属性文件来一次处理一个字符串。请注意,斯坦福分类器只能处理文件,一旦输入字符串被读取然后保存在临时文件中,分类器就会开始处理它。方法trainedClassifier.classOf 能够使用训练模型(myClassifier.ser.gz)输出给定字符串的类。但是,我找不到输出置信度分数的方法(参见:http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/classify/ColumnDataClassifier.html)。

欲望输出是 stringCategory: Dummy 置信度:0.85

以下是我在包装器中使用的 Java 类/方法:

         //.....
         LinearClassifier<String, String> trainedClassifier = 
         IOUtils.readObjectFromFile("myClassifier.ser.gz");

         //Have to call *.prop every time
         ColumnDataClassifier myProp = 
           new ColumnDataClassifier("myClassifierProp.prop");

         //Specify the temporary one sentence file saved in class-tmp.txt
         for (String line : ObjectBank.getLineIterator("class-tmp.txt")) 
                Datum<String,String> classType = myProp.makeDatumFromLine(line, 0); 
                 classOutput = trainedClassifier.classOf(classType);

                 System.out.println("stringCategory: "+ classOutput + "/n");
                  //end of for
                  //.....

【问题讨论】:

您不必编写临时文件并使用ObjectBank 读取它。如果您有一个 String str 包含用于测试示例的制表符分隔值,您可以直接转到:Datum&lt;String,String&gt; classType = myProp.makeDatumFromLine(line); 【参考方案1】:

您可以使用分类器界面中的方法Counter&lt;L&gt; scoresOf(Datum&lt;L,F&gt; example);(用分类器的标签构造一个计数器并为每个类的得分(非标准化对数概率)赋值。)方法获得分数。你可以像这样使用它:trainedClassifier.scoresOf(classType)。在这种特殊情况下,这将返回 Counter&lt;String&gt;。要查找输出类的分数,可以使用以下代码:

score = Double.toString(trainedClassifier.scoresOf(classType).getCount(classOutput));
System.out.println("Confidence score: " + score);

我做了一个项目,就像我上面做的那样。你也可以试试这个方法:

score = trainedClassifier.scoreOf(classType, classOutput);

我认为这也可以完成这项工作。

更多详情: Stanford LinearClassifier Documentation, Stanford LinearClassifier Implementation

【讨论】:

以上是关于从斯坦福分类器输出置信度分数的方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在斯坦福分类器中使用朴素贝叶斯分类器、SVM 和最大熵

(笔记)斯坦福机器学习第七讲--最优间隔分类器

斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时6

斯坦福《机器学习》Lesson8感想-------1SMO

如何获得分类器对sklearn中预测的置信度分数?

斯坦福机器学习第一周