在Information Retrieval領域,有時候需要計算字與字之間的關聯性,通常我們會使用PMI、Chi-square、Log-likelihood等方法來計算。

不過,計算兩個字在WordNet之間的關聯性也是一個不錯的選擇。

呼叫WordNet,要先裝WordNet: https://wordnet.princeton.edu/

計算前,請先下載WS4J.jar,官網如下:

https://code.google.com/p/ws4j/

 

呼叫並且計算相似度很簡單,先將WS4J import,之後使用下列程式碼即可計算,這個Jar檔提供了非常多的相似度計算方式,簡易程式碼如下,

import edu.cmu.lti.lexical_db.ILexicalDatabase;
import edu.cmu.lti.lexical_db.NictWordNet;
import edu.cmu.lti.ws4j.impl.WuPalmer;
import edu.cmu.lti.ws4j.util.WS4JConfiguration;
public class similarityInWN 
{
    private static ILexicalDatabase db = new NictWordNet();
    /*
    //相似度選擇
    new HirstStOnge(db), new LeacockChodorow(db), new Lesk(db), new WuPalmer(db),
    new Resnik(db), new JiangConrath(db), new Lin(db), new Path(db)
    */
    public static double computeSmilarityInWN(String word1, String word2) 
    {
        WS4JConfiguration.getInstance().setMFS(true);
        //s代表兩個字的相似度
	double s = new WuPalmer(db).calcRelatednessOfWords(word1, word2);        
	return s;
    }
}

 

 

arrow
arrow
    文章標籤
    WordNet相似度 WordNet
    全站熱搜

    葛瑞斯肯 發表在 痞客邦 留言(0) 人氣()