2011-09-20 61 views
5

我正在使用nltk和wordnet編寫拼寫檢查程序,我有一些拼寫錯誤的單詞說「相信」。我想要做的是找到來自wordnet的所有單詞,這些單詞之間由1或2的編輯距離分隔。 nltk是否提供了任何方法來完成此任務?這個怎麼做?查找Wordnet中由固定編輯隔開的單詞編輯與給定單詞的距離


可能是,我說錯了。 edit_distance方法需要2個參數,如edit_distance(word1,word2)返回word1和word2之間的levenshtein距離。 我想要的是找到與wordnet中所有其他單詞相關的單詞之間的編輯距離。

+1

確定Wordnet是你想要的嗎?似乎過度殺傷。附魔可能會更好:http://packages.python.org/pyenchant/ –

回答

1

它確實提供了一個edit_distance方法。請參閱該文檔here

0

好了,終於想出了一個解決方案:

from nltk.corpus import wordnet 
f=open("wordnet_wordlist.txt","w") 
for syn in list(wordnet.all_synsets()): 
    f.write(syn.name[:-5]) 
    f.write("\n") 

f.close() 

f = open("wordnet_wordlist.txt") 
f2 = open("wordnet_wordlist_final.txt", "w") 
uniquelines = set(f.read().split("\n")) 
f2.write("".join([line + "\n" for line in uniquelines])) 
f2.close() 

現在從最終wordlist_final文件讀取和使用nltk.edit_distance名單可以發現

wordnetobj=open("wordnet_wordlist_final.txt","r") 
wordnet=wordnetobj.readlines() 
def edit(word,distance): 
    validlist=[] 
    for valid in wordnet: 
     valids=valid[:-1] 
     if(abs(len(valids)-len(word))<=2): 
      if(nltk.edit_distance(word,valids)==distance): 
       validlist.append(valids) 

    return validlist 
+0

不知道這是否是有效的方式。但它爲我做了這份工作 –