2013-08-29 38 views

回答

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); 
    } 
} 

所以,如果擴大是真實的,它增加了一個同義詞在一組同義詞的每個可能的組合的結果集。如果它是錯誤的,它會創建同義詞規則,使得每個同義詞只會被列表中的第一個同義詞替換。再說了,如果我們有一組同義詞:「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,以便將同義詞匹配縮減爲一個主同義詞,但它取決於您的需要。