Портер Стеммер дает разные результаты при расчете семантического сходства
Я делаю некоторые тесты с библиотекой ws4j. В частности, я хочу вычислить сходство между двумя тестовыми словами "университет" и "обучение". Когда я применяю stemming, это дает мне 0 сходство... Когда я не применяю stemming, результат выше 0. С другой стороны, когда я проверяю сходство между "полами" и "полом", тогда обратное воздействие: когда я его использую, это дает положительное сходство. В противном случае сходство равно 0.
Почему это происходит, и какой подход будет более общим, который даст одинаковые результаты для обоих примеров?
public class TestWs4j
{
private static ILexicalDatabase db = new NictWordNet();
private static RelatednessCalculator[] rcs = {
new WuPalmer(db), // new HirstStOnge(db), new LeacockChodorow(db), new Lesk(db),
new JiangConrath(db), new Path(db) // new Resnik(db), new Lin(db),
};
private static void run( String word1, String word2 ) {
WS4JConfiguration.getInstance().setMFS(true);
for ( RelatednessCalculator rc : rcs ) {
double s = rc.calcRelatednessOfWords(word1, word2);
System.out.println( rc.getClass().getName()+"\t"+s );
}
}
public static void main(String[] args) {
long t0 = System.currentTimeMillis();
PorterStemmer stemmer = new PorterStemmer();
// String w1 = stemmer.stemWord("university");
// String w2 = stemmer.stemWord("teaching");
// run(w1,w2);
run("university","teaching");
long t1 = System.currentTimeMillis();
System.out.println( "Done in "+(t1-t0)+" msec." );
}
}