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)
Может ли кто-нибудь помочь, как решить эту проблему
1 ответ
1.7976931348623157E308 - это максимальное двойное число. Это как если бы оно представляло бесконечное, потому что два слова идентичны.
Попробуйте "привет" и "привет", и он возвращает 1,0