Lucene的WordnetSynonymParser

时间:2014-03-24 15:45:36

标签: lucene

我正在尝试使用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,这是一个错误,或者只是一个简单的错误,文件没有正确传入?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

wn_s.pl包含synset指针(也就是说,它定义了同义词组),据我所知,这是同义词过滤器所需要的。我从那开始。