我正在一个项目中,其中一项要求是计算单词之间的相似度。我正在使用WuP度量来计算应该返回[0,1]之间的值的单词之间的相似度。问题是jar文件似乎有错误,无法返回该范围内的值。 web page demo可以完美地工作,对于相同的单词,它返回最大值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.7976931348623157E308是最大双数。
好像它代表无限,因为两个词是相同的。
尝试“ hi”和“ hello”,它返回1.0