Lucene Java 中的精确召回
我想使用Lucene来计算精度和召回率。
我做了这些步骤:
制作了一些索引文件。为此,我使用了此路径中存在的索引器代码和索引文件(此文件夹中有 4 个文本文件),并通过在索引器代码中将索引路径设置为“outt”文件夹,将它们放入“outt”文件夹中。
.txt
C:/inn
C:/outt
创建了一个名为“PrecisionRecall”的包和一个名为“PrecisionRecall”的类,并添加(右键单击 --> Java 构建路径 -->添加外部 jar)并添加和
lia.benchmark
externaljars
Lucene-benchmark-.3.2.0jar
Lucene-core-3.3.0jar
-
将代码中的路径设置为 and
和 to,并将 dir 设置为“C:/outt”。topicsfile
C:/lia2e/src/lia/benchmark/topics.txt
qrelsfile
C:/lia2e/src/lia/benchmark/qrels.txt
下面是代码:
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(); } }
-
初始化的 qrel 和主题。在文档文件夹(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
我也尝试了路径格式,例如“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
你能告诉我怎么了吗?
我真的需要知道为什么结果是零。