2013-01-05 44 views
3

我想找到一個帶API的詞典,它允許我查找與通配符和特定詞類(名詞/動詞/形容詞...)匹配的詞,例如,給我一個以「ize」結尾的動詞列表。允許通配符查找的英文詞典API

我一直在看Wordnet,但看起來像它不支持通配符查找。

謝謝。

+1

您可以使用單詞LIKE搜索的Wordnet的SQL版本。 – HappyTimeGopher

+0

謝謝,我想你是在談論這個http://wnsql.sourceforge.net/,經過一番研究,我發現它也需要這個http://wnsqlbuilder.sourceforge.net/。我將開始研究它,但如果可以的話,我仍然會更喜歡更直接的解決方案(即另一個直接支持SQL或查找類型的字典/ API)。 – Sandeep

回答

2

您可以分兩步實現:

  1. 從單詞的大名單(英文字典,如Peter Norvig's word list),你可以只子集匹配您的通配符的那些話。
  2. 對於那些匹配的話,測試他們的語音部分,看他們是否符合你的目標(動詞,名詞等)

在我的例子,我用文字非常小的列表: ( Python)的

import nltk 
import re 

#replace with English dictionary 
#Using a small list of words for illustration 
lst = ['swim', 'while', 'greet', 'prize', 'jeopardize', 'quartz', 'zebra'] 

def subset_words_by_wildcard(wordlist, pattern): 
    matchingwords = [] 
    for w in wordlist: 
     if re.search(pattern, w): 
      matchingwords.append(w) 
    return matchingwords 

def subset_words_by_pos(words, pos): 
    wpos = nltk.pos_tag(words) 
    for w,p in wpos: 
     if p == pos: 
      print w,p 


if __name__ == '__main__': 

    pattern = r'ize$' 
    #target_pos = "NN" 
    target_pos = "VBP" 

    mlist = subset_words_by_wildcard(lst, pattern) 
    subset_words_by_pos(mlist, target_pos) 

運行該生產:

>>> jeopardize VBP

希望這有助於。

+0

感謝您的詳細解釋和示例代碼。不過,我決定採用SQL路由,因爲它在性能方面更加靈活和高效。 – Sandeep

+0

當然。無論你最適合什麼。 –