Почему значения онлайн-демонстрации ws4j и значения демонстрации исходного кода отличаются, особенно значение lesk?

Я пытаюсь найти сходство между двумя словами (например, «дом» и «дом») с помощью lesk.

Я выполнил демонстрационный код для поиска значения lesk, заданного здесь, и я также нашел значение, используя онлайн-демонстрацию ws4j здесь

Оба они дают разные значения, т.е.

Значения при выполнении демонстрационного кода, приведенного в ws4j:
WuPalmer = 0,4
JiangConrath = 0,08467941109843881
LeacockChodorow = 1,1349799328389845
Lin = 0,1652854610118411636
Path Resnik = 0,11111636 1111636 1111636
= 0,1111111111111111
Lesk = 0,0
HirstStOnge = 0,0


Значения из онлайн-демонстрации:
wup( home#n#8 , house#n#10 ) = 1,0000
jcn( home#n#8 , house#n#10 ) = 12876699,5
lch( дом#n#8 , дом#n#10 ) = 3,6889
lin( дом#n#8 , дом#n#10 ) = 1,0000
res( дом#v# 1 , дом#v#2 ) = 9,0735
путь( дом#n#8 , дом#n#10 ) = 1,0000
lesk( дом#n#8 , дом#n#10 ) = 1571
hso( дом#n#8 , дом#n#10 ) = 16

Почему такая огромная разница между этими двумя, когда они оба используют один и тот же ws4j ?? Есть ли проблемы с демо-кодом ??


person smprj    schedule 28.06.2014    source источник


Ответы (3)


Home и House, оба находятся в одном синсете. Таким образом, для wup и jcn значение кажется правильным. Какую версию JDK вы используете? Попробуйте эту ссылку - http://maraca.d.umn.edu/cgi-bin/similarity/similarity.cgi?word1=home&senses1=all&word2=house&senses2=all&measure=wup&rootnode=yes

Это также даст вам тот же результат.

Используйте «home#n#1» и «house#n#1» в онлайн-версии, это даст результат, аналогичный вашему компилятору.

person user3503711    schedule 19.07.2014

Во-первых, ws4j показывает несоответствие между своей онлайн-демонстрацией и последней стабильной версией (v1.0.1). Связанную проблему можно найти на здесь.

Однако в вашем случае это связано с тем, что флаг «mfs» (обозначающий наиболее частое значение) по умолчанию установлен в значение true в библиотеке ws4j. Когда этот флаг установлен, вычисление подобия будет выполняться только для наиболее часто встречающихся значений каждого слова; когда оно ложно, вычисление сходства будет производиться для всех комбинаций смыслов. В основном это равно ответу @Pranav.

Ожидается, что вычислительная нагрузка будет значительно увеличена, если для mfs установлено значение false. Поэтому я предполагаю, что именно поэтому автор установил значение true по умолчанию.

Если вы хотите установить значение mfs в false в своем коде, просто используйте:

WS4JConfiguration.getInstance().setMFS(false);
person Xing Hu    schedule 13.01.2016

person    schedule
comment
Попробуйте использовать диск-код... это может решить вашу проблему! :) - person Pranav; 03.04.2015
comment
Если этот способ используется для вычисления WuPalmer (например, авокадо и фрукты), он возвращает значения больше 1, где эта мера должна возвращать 1 как максимальное значение, любое решение, пожалуйста - person F 505; 13.02.2018