Java 用wordnet进行相似性度量?
我正在使用wordnet计算两个单词之间的相似性度量。我用的是Java 用wordnet进行相似性度量?,java,wordnet,Java,Wordnet,我正在使用wordnet计算两个单词之间的相似性度量。我用的是edu.mit.jwi_2.1.4.jar和edu.sussex.nlp.jws.beta.11.jar,但当我用resnik测量法计算单词“苹果”和“香蕉”时,它是8,4。为什么它不止一个 public class test { String dir = "C:/Program Files (x86)/WordNet"; JWS ws = new JWS(dir,"2.1"); /**
edu.mit.jwi_2.1.4.jar
和edu.sussex.nlp.jws.beta.11.jar
,但当我用resnik测量法计算单词“苹果”和“香蕉”时,它是8,4。为什么它不止一个
public class test {
String dir = "C:/Program Files (x86)/WordNet";
JWS ws = new JWS(dir,"2.1");
/**
* @param args
*/
public void testResnikSimilarity() {
Resnik jcn = ws.getResnik();
System.out.println("Resnik");
// all senses
TreeMap scores1 = jcn.res("apple", "banana", "n"); // all senses
//TreeMap scores1 = jcn.jcn("apple", 1, "banana", "n");
// fixed;all
//TreeMap scores1 = jcn.jcn("apple", "banana", 2, "n");
// all;fixed
for(String s : scores1.keySet())
System.out.println(s + "\t" + scores1.get(s));
// specific senses
System.out.println("\nspecific pair\t=\t" + jcn.res("apple", 1, "banana",
1, "n") + "\n");
// max.
System.out.println("\nhighest score\t=\t" + jcn.max("apple", "banana",
"n") + "\n\n\n");
}
}
引用:
Resnik相似度:返回一个分数,表示两个单词的意思有多相似
是,基于最不常见的信息内容(IC)
包含者(最特定的祖先节点)。注意,对于任何相似性
使用信息内容的度量,结果取决于
用于生成信息内容和特定信息的语料库
信息内容是如何创建的
我不知道如何在JWS中设置信息内容。在NLTK中,您可以使用来自Brown语料库和BNC的数据按如下方式进行操作:
ic = wordnet_ic.ic('ic-brown.dat')
banana.res_similarity(apple, ic=ic)
>>> 8.1703339116227411
ic = wordnet_ic.ic('ic-bnc.dat')
banana.res_similarity(apple, ic=ic)
>>> 7.9753635531935334
有关详细信息,请参见此