Я хочу использовать Lucene для вычисления точности и отзыва.
Я выполнил следующие шаги:
Создал несколько индексных файлов. Для этого я использовал код индексатора и проиндексировал файлы .txt
, которые существуют по этому пути C: / inn
(в этой папке 4 текстовых файла ) и поместите их в папку "outt", установив путь индекса на C: / outt
в коде индексатора.
Создал пакет с именем lia.benchmark
и класс внутри него который называется "PrecisionRecall" и добавляет externaljars
(щелкните правой кнопкой мыши -> путь сборки Java -> добавить внешние jar-файлы) и добавляет Lucene-benchmark-.3.2.0jar
и Lucene-core-3.3.0jar
Установите путь файла темы
в коде на C: /lia2e/src/lia/benchmark/topics.txt
и
qrelsfile
в C: /lia2e/src/lia/benchmark/qrels.txt
и пройдите в "C: / outt ".
Вот код:
package lia.benchmark;
import java.io.File;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.FileReader;
import org.apache.lucene.search. *;
import org.apache.lucene.store. *;
import org.apache.lucene.benchmark.quality. *;
import org.apache.lucene.benchmark.quality.utils. *;
import org.apache.lucene.benchmark.quality.trec. *;
public class PrecisionRecall {
public static void main (String [] args) выбрасывает Throwable {
Файл themesFile = новый файл ("C: /lia2e/src/lia/benchmark/topics.txt");
Файл qrelsFile = новый файл ("C: /lia2e/src/lia/benchmark/qrels.txt");
Каталог dir = FSDirectory.open (новый файл ("C: / outt"));
IndexSearcher searchcher = новый IndexSearcher (dir, true);
String docNameField = "имя файла";
PrintWriter logger = новый PrintWriter (System.out, true);
TrecTopicsReader qReader = новый TrecTopicsReader ();
QualityQuery qqs [] = qReader.readQueries (
новый BufferedReader (новый FileReader (themesFile)));
Судья судья = новый TrecJudge (новый BufferedReader (
новый FileReader (qrelsFile)));
Судья.validateData (qqs, регистратор);
QualityQueryParser qqParser = new SimpleQQParser («заголовок», «содержимое»);
QualityBenchmark qrun = новый QualityBenchmark (qqs, qqParser, поисковик, docNameField);
SubmissionReport submitLog = null;
QualityStats stats [] = qrun.execute (судья,
submitLog, logger);
QualityStats avg = QualityStats.average (статистика);
avg.log ("РЕЗЮМЕ", 2, регистратор, "");
dir.close ();}
}
Инициализированные qrels и темы. В папке с документами (C: \ inn) у меня есть 4 текстовых файла, 2 из которых имеют отношение к моему запросу (запрос - яблоко), поэтому я заполнил qrels и themes.
файл qrels выглядит следующим образом:
Число: 0
яблоко
Описание:
Рассказ:
и файл темы вроде этого:
0 0 789.txt 1
0 0 101.txt 1
Я пробовал также формат Path, а именно, например, «C: \ inn \ 789.txt» вместо «789.txt» но результаты нулевые:
0 - содержимое: яблоко
0 Статистика:
Секунды поиска: 0,016
DocName Секунды: 0,000
Количество очков: 2.000
Количество хороших баллов: 0,000
Максимальное количество хороших баллов: 2.000
Средняя точность: 0,000
MRR: 0,000
Напомним: 0,000
Точность при 1: 0,000
РЕЗЮМЕ
Секунды поиска: 0,016
DocName Секунды: 0,000
Количество очков: 2.000
Количество хороших баллов: 0,000
Максимальное количество хороших баллов: 2.000
Средняя точность: 0,000
MRR: 0,000
Напомним: 0,000
Точность при 1: 0,000
Можете ли вы сказать мне, что со мной не так?
Мне действительно нужно знать, почему результаты равны нулю.