Я хочу использовать Lucene для вычисления точности и повторения.
Я сделал следующие шаги:
-
Сделал некоторые индексные файлы. Для этого я использовал индексный код и индексированные файлы
.txt
, которые существуют в этом путиC:/inn
(в этой папке есть 4 текстовых файла) и переносите их в папку "outt", установив путь индекса кC:/outt
в Indexer код. -
Создал пакет под названием
lia.benchmark
и класс внутри него, который называется "PrecisionRecall", и добавьтеexternaljars
(rightclick → Java build path → add external jars) и добавилиLucene-benchmark-.3.2.0jar
иLucene-core-3.3.0jar
-
Задайте путь
topicsfile
в кодеC:/lia2e/src/lia/benchmark/topics.txt
иqrelsfile
доC:/lia2e/src/lia/benchmark/qrels.txt
и dir до "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) throws Throwable { File topicsFile = new File("C:/lia2e/src/lia/benchmark/topics.txt"); File qrelsFile = new File("C:/lia2e/src/lia/benchmark/qrels.txt"); Directory dir = FSDirectory.open(new File("C:/outt")); IndexSearcher searcher = new IndexSearcher(dir, true); String docNameField = "filename"; PrintWriter logger = new PrintWriter(System.out, true); TrecTopicsReader qReader = new TrecTopicsReader(); QualityQuery qqs[] = qReader.readQueries( new BufferedReader(new FileReader(topicsFile))); Judge judge = new TrecJudge(new BufferedReader( new FileReader(qrelsFile))); judge.validateData(qqs, logger); QualityQueryParser qqParser = new SimpleQQParser("title", "contents"); QualityBenchmark qrun = new QualityBenchmark(qqs, qqParser, searcher, docNameField); SubmissionReport submitLog = null; QualityStats stats[] = qrun.execute(judge, submitLog, logger); QualityStats avg = QualityStats.average(stats); avg.log("SUMMARY",2,logger, " "); dir.close(); } }
-
Инициализировано qrels и тем. В папке документов (C:\inn) у меня есть 4 txt файла, 2 из которых имеют отношение к моему запросу (запрос - яблоко), поэтому я заполнил qrels и темы.
Файл qrels выглядит следующим образом:
<top> <num> Number: 0 <title> apple <desc> Description: <narr> Narrative: </top>
и файлы тем, как это:
0 0 789.txt 1 0 0 101.txt 1
Я также попробовал формат Path, например, "C:\inn\789.txt" вместо "789.txt" но результаты равны нулю:
0 - contents:apple 0 Stats: Search Seconds: 0.016 DocName Seconds: 0.000 Num Points: 2.000 Num Good Points: 0.000 Max Good Points: 2.000 Average Precision: 0.000 MRR: 0.000 Recall: 0.000 Precision At 1: 0.000 SUMMARY Search Seconds: 0.016 DocName Seconds: 0.000 Num Points: 2.000 Num Good Points: 0.000 Max Good Points: 2.000 Average Precision: 0.000 MRR: 0.000 Recall: 0.000 Precision At 1: 0.000
Можете ли вы рассказать мне, что со мной не так?
Мне действительно нужно знать, почему результаты равны нулю.