Lucene:新的WordnetSynonymParser(布尔重复数据删除,布尔扩展,分析器分析器)

时间:2013-08-29 00:53:53

标签: java lucene wordnet

WordnetSynonymParser 的构造函数接受三个参数:

boolean dedup, boolean expand and an Analyzer.

但是,什么是重复数据删除和扩展?我不明白。

文档cites

  

如果重复数据删除为真,那么相同的规则(相同的输入,相同的输出)将是   只添加一次。

这意味着什么?一个例子?参数expand

请帮帮我,谢谢

1 个答案:

答案 0 :(得分:1)

dedup值会直接传递给SynonymMap.Builder,并按照说明进行操作。如果存在两个相同的同义词规则,则仅使用其中一个。将此设置为true可能非常安全,除非您有理由不这样做。

了解expand,以下是它的使用方法:

 if (expand) {
   for (int i = 0; i < size; i++) {
     for (int j = 0; j < size; j++) {
       add(synset[i], synset[j], false);
     }
   }
 } else {
   for (int i = 0; i < size; i++) {
     add(synset[i], synset[0], false);
   }
 }

因此,如果expand为true,则会为集合中每个可能的同义词组合的结果集添加同义词。如果它是假的,它将创建同义词规则,使得每个同义词仅被替换为列表中的第一个同义词。比如说,如果我们有一组同义词:“walk”,“stroll”和“amble

扩展,这将生成同义词:

walk -> walk
walk -> stroll
walk -> amble
stroll -> walk
stroll -> stroll
stroll -> amble
amble -> walk
amble -> stroll
amble -> amble

如果不扩展,您只需:

walk -> walk
stroll -> walk
amble -> walk

一般来说,我倾向于将此设置为false,以便将同义词匹配缩减为一个主同义词,但这取决于您的需要。