2013-08-03 2 views
1

В настоящее время я работаю над Stanford Classifier (версия 2.1.8 выпущен 04-04-2013) и написал оболочку java для внутреннего исследовательского проекта. На основе ClassifierDemo.java (поставляется с zip-файлом классификатора) я смог вызвать мою сериализованную обучаемую модель и файл свойств для обработки одной строки за раз. Обратите внимание, что классификатор Stanford может обрабатывать файлы только после того, как строка ввода будет прочитана, а затем сохранена во временном файле, а затем классификатор начнет ее обрабатывать. Метод trainingClassifier.classOf способен выводить класс для данной строки с использованием обученной модели (myClassifier.ser.gz). Тем не менее, я не могу найти способ вывода доверительного балла вместе с ним (cf: http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/classify/ColumnDataClassifier.html).Метод (ы) для вывода оценки доверия из Стэнфордского классификатора?

Выход желание stringCategory: пустышки доверия Оценка: 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 
        //..... 
+0

Вам не придется писать временный файл и читать его с 'ObjectBank'. Если у вас есть строка String, которая содержит значения, разделенные табуляцией, для тестового примера, вы можете просто перейти прямо к: 'Datum classType = myProp.makeDatumFromLine (строка);'. –

ответ

0

Вы можете получить счет с помощью метод Counter<L> scoresOf(Datum<L,F> example); (Построить счетчик с ключами меток классификатора и оценить оценку (ненормализованную логарифмическую вероятность) каждого класса.), который можно найти в интерфейсе классификатора. Вы можете использовать его следующим образом: trainedClassifier.scoresOf(classType). Это вернет Counter<String> в данном конкретном случае. Чтобы найти оценку выходного класса, вы можете использовать следующий код:

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

Смежные вопросы