【发布时间】: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<String,String> classType = myProp.makeDatumFromLine(line);。
标签: java methods classification stanford-nlp