我正在尝试使用Lucene的WordnetSynonymParser类来创建同义词过滤器,但我不确定哪些prolog文件我打算传入parse()函数。
文档说:
请参阅http://wordnet.princeton.edu/man/prologdb.5WN.html了解 格式说明。
所以我已经下载了prolog文件,但是我不确定我应该传递哪些文件,以及我如何处理它。
有人可以指出我正确的方向吗?
感谢您的帮助
编辑:
感谢femtoRgon让我指向wn_s.pl的方向。我现在有以下代码:
Analyzer tempanalyzer = new SimpleAnalyzer(Version.LUCENE_40);
WordnetSynonymParser synparser = new WordnetSynonymParser(true, true, tempanalyzer);
FileReader doctoread = new FileReader("wn_s.pl");
synparser.parse(doctoread);
SynonymMap synmap = synparser.build();
Analyzer analyzer = new Analyzer() {
@Override
protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
EnglishAnalyzer enganalyzer = new EnglishAnalyzer(Version.LUCENE_40);
CharArraySet engstopset = enganalyzer.getDefaultStopSet();
Tokenizer source = new StandardTokenizer(Version.LUCENE_40, reader);
TokenStream filter = new SynonymFilter(source, synmap, true);
filter = new StandardFilter(Version.LUCENE_40, filter);
filter = new LowerCaseFilter(Version.LUCENE_40, filter);
filter = new StopFilter(Version.LUCENE_40, filter, engstopset);
/*TokenStream filter = new StandardFilter(Version.LUCENE_40, source);
filter = new LowerCaseFilter(Version.LUCENE_40, filter);
filter = new StopFilter(Version.LUCENE_40, filter, engstopset);*/
return new TokenStreamComponents(source, filter);
}
};
然后我计划传递给IndexWriterConfig,但是我得到以下编译错误:
IndexFilesDB.java:133: cannot find symbol
symbol : method parse(java.io.FileReader)
location: class org.apache.lucene.analysis.synonym.WordnetSynonymParser
synparser.parse(doctoread);
我仍然不完全理解WordnetSynonymParser,这是一个错误,或者只是一个简单的错误,文件没有正确传入?
感谢您的帮助。
答案 0 :(得分:0)
wn_s.pl
包含synset指针(也就是说,它定义了同义词组),据我所知,这是同义词过滤器所需要的。我从那开始。