2

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

boolean dedup, boolean expand and an Analyzer.

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

该文档引用

如果 dedup 为真,那么相同的规则(相同的输入,相同的输出)将只添加一次。

意思是?一个例子?和参数expand

请帮助我...谢谢

4

1 回答 1

2

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 为真,它会为结果集中的每个可能的同义词组合添加一个同义词。如果它是假的,它将创建同义词规则,这样每个同义词将仅被列表中的第一个同义词替换。假设我们有一组同义词:“ 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,以便同义词匹配减少为一个主要同义词,但这取决于您的需要。

于 2013-08-29T15:41:54.717 回答