貝葉斯演算法(2)貝葉斯演算法實現單詞拼寫檢查器

2021-10-06 22:48:50 字數 2222 閱讀 7751

import re, collections

# 把語料中的單詞全部抽取出來, 轉成小寫, 並且去除單詞中間的特殊符號

defwords

(text)

:return re.findall(

'[a-z]+'

, text.lower())

deftrain

(features)

:'''

要是遇到我們從來沒有過見過的新詞怎麼辦.

假如說乙個詞拼寫完全正確, 但是語料庫中沒有包含這個詞, 從而這個詞也永遠不會出現在訓練集中.

於是, 我們就要返回出現這個詞的概率是0. 這個情況不太妙, 因為概率為0這個代表了這個事件絕對不可能發生,

而在我們的概率模型中, 我們期望用乙個很小的概率來代表這種情況. lambda: 1

'''model = collections.defaultdict(

lambda:1

)for f in features:

model[f]+=1

return mo del

# 每個單詞在語料庫**現了多少次

nwords = train(words(

open

('big.txt'

).read())

)

alphabet =

'abcdefghijklmnopqrstuvwxyz'

# #返回所有與單詞 w 編輯距離為 1 的集合

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]

)# insertion

# 返回所有與單詞 w 編輯距離為 2 的集合.

# 在這些編輯距離小於2的詞中間, 只把那些正確的詞(在我的語料庫**現過的詞)作為候選詞

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)

# 如果known(set)非空, candidate 就會選取這個集合, 而不繼續計算後面的

defcorrect

(word)

: candidates = known(

[word]

)or known(edits1(word)

)or known_edits2(word)

or[word]

return

max(candidates, key=

lambda w: nwords[w]

)

# correct('learw') # 'learn'

# correct('tess') # 'less'

correct(

'morw'

)# 'more'

nwords

defaultdict(

<

locals

>

.<

lambda

>()

>

,)

貝葉斯演算法

貝葉斯演算法需要解決的問題 1.正向概率 假設袋子中n白球,m黑球,摸到黑球概率多大 2.逆向概率 事先不知道袋子中黑白球個數,從袋子中摸出乙個或幾個球,觀察這些取出球的顏色,以此來推斷袋中白黑球的比例。為什麼需要貝葉斯 現實世界本身就是不確定的,假設黑白球數量無限大,人類觀察能力有限,我們不可能完...

貝葉斯演算法

總結應用 貝葉斯演算法的目的是解決逆向概率的問題。何為逆向概率?先看看正向概率 袋子裡有m個黑球,n個白球,隨手一模,是黑球的機率是多大。這就是個正向概率問題。逆向概率 袋子裡有兩種球,通過觀察摸出來的球的顏色,推斷袋子中兩種球的比率。逆向概率的作用 是通過有限的資料推斷無限資料的情況,思考 星系距...

貝葉斯演算法

貝葉斯為了解決 逆概 問題提出的 正向概率 袋子裡裝著n個黑球和m個白球,伸手取摸球,摸到黑球和白球的概率有多大 逆向概率 袋子裡前提不知道有黑白球的比例,而是閉著眼睛摸球統計後推測黑球和白球的比例 現實世界本身不確定,人類觀察是有侷限的 我們日常所觀察只是表面,很多東西都是推測。男生總是穿長褲,女...