请,WordnetSynonymParser 的构造函数接受三个参数:
boolean dedup, boolean expand and an Analyzer.
但是,什么是重复数据删除和扩展?我不明白。
文档 cites :
If dedup is true then identical rules (same input, same output) will be added only once.
这意味着什么?一个例子?还有参数expand
?
请帮助我...谢谢
最佳答案
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,它会为结果集中的每个可能的同义词组合添加一个同义词。如果为 false,它将创建同义词规则,以便每个同义词仅替换为列表中的第一个同义词。假设我们有一组同义词:“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,以便同义词匹配减少为一个主要同义词,但这确实取决于您的需求。
关于java - Lucene:新的 WordnetSynonymParser( boolean 去重、 boolean 展开、Analyzer 分析器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18500670/