Сходство Wordnet 4 Java (WS4J)

Я работаю над проектом, одним из требований которого является вычисление сходства между словами. Я использую меру WuP для вычисления сходства между словами, которые должны возвращать значения между [0,1]. Проблема в том, что в файле jar есть ошибки, из-за которых он не возвращает значения в этом диапазоне. демонстрация веб-страницы отлично работает, когда для идентичных слов он возвращает максимальное значение 1, но файл jar не возвращает то же самое. Результаты для run( "java","java" );:

run:
edu.cmu.lti.ws4j.impl.HirstStOnge   1.7976931348623157E308
edu.cmu.lti.ws4j.impl.LeacockChodorow   1.7976931348623157E308
edu.cmu.lti.ws4j.impl.Lesk  1.7976931348623157E308
edu.cmu.lti.ws4j.impl.WuPalmer  1.7976931348623157E308
edu.cmu.lti.ws4j.impl.Resnik    1.7976931348623157E308
edu.cmu.lti.ws4j.impl.JiangConrath  1.7976931348623157E308
edu.cmu.lti.ws4j.impl.Lin   1.7976931348623157E308
edu.cmu.lti.ws4j.impl.Path  1.7976931348623157E308
Done in 8 msec.
BUILD SUCCESSFUL (total time: 0 seconds)

Проблема не только с одинаковыми словами, даже для разных слов он выдавал значение wup вне диапазона:

Демонстрация веб-страницы:

wup( avocado#n#1 , fruit#n#1 ) = 0.9091
jcn( avocado#n#1 , fruit#n#1 ) = 0.5974
lch( avocado#n#1 , fruit#n#1 ) = 2.5903
lin( avocado#n#1 , fruit#n#1 ) = 0.8982
res( avocado#n#1 , fruit#n#1 ) = 7.3837
path( avocado#n#1 , fruit#n#1 ) = 0.3333
lesk( avocado#n#1 , fruit#n#1 ) = 203
hso( avocado#n#1 , fruit#n#1 ) = 6

Значения JAR-файла:

run:
edu.cmu.lti.ws4j.impl.HirstStOnge   6.0
edu.cmu.lti.ws4j.impl.LeacockChodorow   2.5902671654458267
edu.cmu.lti.ws4j.impl.Lesk  6.0
edu.cmu.lti.ws4j.impl.WuPalmer  1.0526315789473684
edu.cmu.lti.ws4j.impl.Resnik    7.383733213970693
edu.cmu.lti.ws4j.impl.JiangConrath  0.5973799749775183
edu.cmu.lti.ws4j.impl.Lin   0.8981855517382724
edu.cmu.lti.ws4j.impl.Path  0.3333333333333333
Done in 1673 msec.
BUILD SUCCESSFUL (total time: 1 second)

Может кто поможет как решить эту проблему


person User505    schedule 09.02.2018    source источник


Ответы (1)


1.7976931348623157E308 — максимальное двойное число. Это как если бы оно представляло бесконечность, потому что два слова идентичны.

Попробуйте «привет» и «привет», и он вернет 1.0

person FilippoG    schedule 20.03.2018