Я пытаюсь классифицировать текстовые документы с помощью lucene 4.4. Для этого я использую класс KNearestNeighbour (назовите его KNN для удобства). Я проиндексировал все документы, но я застрял с использованием метода поезда класса KNN, который принимает AtomicReader в качестве аргумента (наряду с еще тремя аргументами). Я передал IndexReader (с/без ввода типа в AtomicReader) в качестве аргумента, но он дает ошибку. AtomicReader является подклассом IndexReader. Возможно, это проблема.Метод AtomicReader и KNearestNeighbour train()
Но мой вопрос заключается в том, как создать объект AtomicReader и передать его методу поезда. Мне кажется, что способ создания AtomicReader по индексу отличается от создания IndexReader. (Atomic reader - абстрактный класс, поэтому мы возможно, придется использовать объект своего подкласса).
Ниже приведен фрагмент кода. {indexLoc} - путь к каталогу, в котором я создал свой индекс. {knn} - объект класса KNearestNeighbour, который является членом данных моего класса.
public void startClassification() {
try {
StandardAnalyzer analyzer1 = new StandardAnalyzer(Version.LUCENE_44);
FSDirectory index = FSDirectory.open(new File(indexLoc));
/*(???how to create an appropriate AtomicReader object)*/
IndexReader reader = DirectoryReader.open(index);
knn = new KNearestNeighborClassifier(k);
knn.train(reader, "content", "category", analyzer1);
classifyTestData();
} catch (Exception e) {
e.printStackTrace();
}
}
Спасибо. Существует ли какая-либо надлежащая документация по использованию для класса KNearestNeighbour? Я выполнил свою программу, следуя ее резюме. Два начальных класса - 1. одежда (~ 180 экземпляров поездов, 10 примеров испытаний) 2. автомобильная (~ 180 экземпляров поездов, 10 тестовых примеров). фрагмент кода - ClassificationResult thisclass = knn.assignClass (siteText); System.out.println (thisclass.getAssignedClass()); System.out.println (thisclass.getScore()); Выход is- [61 75 74 6f 6d 6f 74 69 76 65] 1.0 Как интерпретировать этот результат на {одежда/автомобиль)? – user2673652
Спасибо. Мое выше сомнение теперь очищается. knn.assignClass (siteText) возвращает объект BytesRef и для просмотра результата мы должны преобразовать кодировку. – user2673652