貝葉斯拼寫檢查器

2022-03-25 14:48:56 字數 1376 閱讀 3124

本拼寫檢查器是基於樸素貝葉斯的基礎來寫的,貝葉斯公式以及原理就不在詳述。直接上**

import

re, collections

defwords(text):

return re.findall('

[a-z]+

', text.lower())

deftrain(features):

model = collections.defaultdict(lambda : 1)

for f in

features:

model[f] += 1

return

model

alphabet = '

abcdefghijklmnopqrstuvwxyz

'nwords = train(words(open('

d:/big.txt

').read()))

defedits1(word):

n =len(word)

return

set(

[word[0:i] + word[i + 1:] for i in range(n)] + #

deletion

[word[0:i] + word[i + 1] + word[i] + word[i + 2:] for i in range(n - 1)] + #

transposition

[word[0:i] + c + word[i + 1:] for i in range(n) for c in alphabet] + #

alteration

[word[0:i] + c + word[i:] for i in range(n + 1) for c in

alphabet]

)defknown_edits2(word):

return set(e2 for e1 in edits1(word) for e2 in edits1(e1) if e2 in

nwords)

defknown(words):

return set(w for w in words if w in

nwords)

defcorrect(word):

cindidates = known([word]) or known(edits1(word)) or known_edits2(word) or

[word]

return max(cindidates, key=lambda

w: nwords[w])

print(correct('

tess

'))

以我現在的水平,現在看貝葉斯的原理還是懂的,但是編輯距離還不是很懂,以後慢慢變懂

貝葉斯拼寫檢查器

要是遇到我們從來沒有過見過的新詞怎麼辦.假如說乙個詞拼寫完全正確,但是語料庫中沒有包含這個詞,從而這個詞也永遠不會出現在訓練集中.於是,我們就要返回出現這個詞的概率是0.這個情況不太妙,因為概率為0這個代表了這個事件絕對不可能發生,而在我們的概率模型中,我們期望用乙個很小的概率來代表這種情況.lam...

貝葉斯拼寫檢查器

p w c 在使用者想鍵入 c 的情況下敲成 w 的概率.因為這個是代表使用者會以多大的概率把 c 敲錯成 w argmaxc,用來列舉所有可能的 c 並且選取概率最大的 import re,collections 把語料中的單詞全部抽取出來,轉成小寫,並且去除單詞中間的特殊符號 詞頻統計,並把最少...

貝葉斯拼寫檢查器 python

import re,collections defwords text return re.findall a z text.lower deftrain features model collections.defaultdict lambda 1 for f in features model ...