2015-06-18 99 views

回答

0

不,JAWS沒有內置函數來查找您所尋找的內容。

然而,這是很簡單的程序(sourceFormtargetForm是要計算從上位詞路徑長度的話):

WordNetDatabase database = WordNetDatabase.getFileInstance(); 
// only looks at the first results, and they *must* be a NounSynsets 
NounSynset src = (NounSynset)(database.getSynsets(sourceForm)[0]); 
NounSynset dst = (NounSynset)(database.getSynsets(targetForm)[0]); 

HashMap<NounSynset, Integer> srcHyper = findHypernymsRecursive(src, 0, null); 
HashMap<NounSynset, Integer> dstHyper = findHypernymsRecursive(dst, 0, null); 

srcHyper.keySet().retainAll(dstHyper.keySet()); // retain only common 
int min = Integer.MAX_VALUE; 
for (NounSynset n : srcHyper.keySet()) { 
    int d1 = srcHyper.get(n); 
    int d2 = dstHyper.get(n); 
    min = Math.min(min, d1+d2); // update min-distance 
} 
return min; // if empty intersection, Integer.MAX_VALUE 

凡findHypernymsRecursive是這樣工作的:

public static HashMap<NounSynset, Integer> 
    findHypernymsRecursive(NounSynset s, int depth, HashMap<NounSynset, Integer> m) { 
     if (m == null) m = new HashMap<NounSynset, Integer>(); 
     if (! m.containsKey(s)) { 
      m.put(s, depth); 
      for (NounSynset h : s.getHypernyms()) { 
       findHypernymsRecursive(h, depth+1, m); 
      } 
     } 
     return m; 
} 

免責聲明:我沒有真正嘗試過這個代碼。這可能是充滿錯別字...

+0

非常感謝先生。但我有一些懷疑關於給出的答案1)什麼是在那裏使用的添加功能?它是內置的嗎? 2)那裏有什麼「n」? –

+0

希望修正。我*確實*說我沒有測試過它... – tucuxi

相關問題