1. 程式人生 > >機器學習小實戰(三) 貝葉斯實現拼寫檢查器

機器學習小實戰(三) 貝葉斯實現拼寫檢查器

一、貝葉斯(Bayes)簡介

     貝葉斯老爺爺是一位有名的老人家!貝葉斯演算法和概率有關,貝葉斯公式其實高中學過的,就是忘了而已。

P(A|B)=P(B|A)P(A)/P(B)

二、貝葉斯實現拼寫檢查器

1. 原理

argmaxc P(A|B)=argmaxc P(B|A) P(A) /P(B)

P(A|B):待求的;使用者本想本想輸入B的前提下,錯輸成A的概率

P(A):文章中出現正確單詞A的概率

P(B|A):使用者本想本想輸入A的前提下,錯輸成B的概率

P(B):文章中出現正確單詞B的概率

argmaxc:用來列舉所有可能的A,並選取概率最大的那個

拼寫檢查器就是,輸入一個單詞,先判斷這個單詞是否存在於語料庫中(是否正確),如果不在(可能語料庫中沒有,或者拼寫錯誤),則需要根據編輯距離進行檢查修正。

2. 編輯距離

編輯距離為1,意味著單詞1只需增/刪/改/交換相鄰字母 1次,就可以變成單詞2,以此類推。

import re,collections #正則表示式re庫

def words(text):   # 將給定語料庫中所有單詞轉為小寫,去除單詞中的特殊符號
    return re.findall('[a-z]+',text.lower())

def train(features): # 統計每個單詞的出現次數,併為每個單詞設定一個預設值-1
    model=collections.defaultdict(lambda:1) #匿名函式,為每個單詞的出現頻率設定最低值1
    for f in features:
        model[f]+=1
    return model

NWORDS=train(words(open('big.txt').read())) # 計算big檔案中各個詞的出現次數

alphabet='abcdefghijklmnopqrstuvwxyz'

def edits1(word): #返回所有與word編輯距離為1的集合
    n=len(word)
    return set([word[0:i]+word[i+1:] for i in range(n)]+  #delete
               [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

def edists2(word): #編輯距離為2 的單詞
    return set(e2 for e1 in edits1(word) for e2 in edits1(e1))

def known(words):  #將那些正確的詞作為候選詞
    return set(w for w in words if w in NWORDS) 

def correct(word): #檢查器函式,先判斷是不是正確的拼寫形式,如果不是則選出編輯距離為1的單詞……
    candidates=known([word])or known(edits1(word)) or known(edists2(word)) or [word]
    return max(candidates,key=lambda w:NWORDS[w])

print(correct('mach'))

輸出:much

3. 其他

python中,set() 函式建立一個無序不重複元素集,可進行關係測試,刪除重複資料,還可以計算交集、差集、並集等。本例中set的用法本菜鳥有點沒看懂,要是有哪位大神看懂了可否幫忙解惑!3ks!!

相關推薦

機器學習實戰 實現拼寫檢查

一、貝葉斯(Bayes)簡介      貝葉斯老爺爺是一位有名的老人家!貝葉斯演算法和概率有關,貝葉斯公式其實高中學過的,就是忘了而已。 二、貝葉斯實現拼寫檢查器 1. 原理 argmaxc P(A|B)=argmaxc P(B|A) P(A) /P(B) P(

實現拼寫檢查

alt rec lam 最終 findall features 判斷 edit correct 貝葉斯公式 p(A|D)=p(A)*p(D|A)/p(D); 可以應用於垃圾郵件的過濾和拼寫檢查 例如:對於拼寫檢查,寫出一個單詞D,判斷該單詞為正確單詞A的概率。為上述條件概率

機器學習實戰 KMeans聚類

目錄 二、小案例 一、 KMeans聚類簡介 需要事先指定簇的數目k 優化目標:所有點到各自質心的距離之和最小  特點:受初始值(K個隨機質心的位置)的影響挺大的、受形狀的影響還有點大 二、小案例 讀資料、演算法例項化(設定引數),訓練模型、展示與分析

機器學習實戰 XGBoost基本原理

一、xgboost原理 1. 實踐證明,tree boosting(樹提升)可以有效地用於分類和迴歸任務中,提升方法是一種非常有效的機器學習方法,xgboost是提升的強化版本。 2. 和決策樹相關,集成了多個弱學習器。 3. 提升演算法,相當於一棵樹一棵樹地加,每加一

機器學習實戰 建立決策樹

目錄 一、決策樹簡介 決策樹既可以分類,也可以迴歸。構造決策樹兩種方式:預剪枝/後剪枝 難點:如何構造決策樹,選什麼特徵作為結點。 特點:根節點是分類效果最好的,其餘次之、再次之。 決策樹停止劃分結點的原因可能是:達到最大葉子節點數了、葉子結點樣本數

Python機器學習實戰筆記之樸素分類

1聯合概率分佈 p(x,y)=p(y)P(x|y)  或者p(A交B)=p(A)xp(B)  p(A交B)不容易求,假設條件獨立拆分成兩個事件的乘積 2基本假設條件獨立性 3利用貝葉斯定理 p(y|x)=P(x,y)/p(x)=p(y)P(x|y)/sum(y-i)[p(

專案--實現拼寫檢查

求解:argmaxc P(c|w) -> argmaxc P(w|c)P©/P(w) P©:文章中出現一個正確拼寫詞c的概率,也就是語料庫中c出現的概率有多大 P(w|c):在使用者想鍵入c的情況下敲成w的概率,也就是使用者會以多大的概率把c敲錯成w argmaxc:用來列舉所有可能的

機器學習算法整理算法_拼寫糾正實例_垃圾郵件過濾實例

mage width 分享 整理 font .com size 圖片 span (p(h): 先驗概率) 垃圾郵箱過濾實例 機器學習算法整理(六)— 貝葉斯算法_拼寫糾正實例_垃圾郵件過濾實例

機器學習算法整理算法_實現垃圾郵件過濾

image 實現 info mage 郵件 技術 機器 eight 實例 垃圾郵件過濾實例 機器學習算法整理(六)— 貝葉斯算法_實現垃圾郵件過濾

機器學習讀書筆記決策樹基礎篇之從相親說起

方法 事務 家裏 分類 筆記 判斷 都是 rom tro 一、決策樹 決策樹是什麽?決策樹(decision tree)是一種基本的分類與回歸方法。舉個通俗易懂的例子,如下圖所示的流程圖就是一個決策樹,長方形代表判斷模塊(decision block),橢圓形成代

機器學習之旅

吳恩達教授的機器學習課程的第三週相關內容: 1、邏輯迴歸(Logistic Regression) 1.1、分類問題 在分類問題中,你要預測的變數 y 是離散的值,我們將學習一種叫做邏輯迴歸 (Logistic Regression) 的演算法,這是目前最流行使用最廣泛的一種學習

林軒田機器學習基石入門

上一節我們主要向大家介紹我們身邊機器學習的例子,這一節我們將探討機器學習由什麼元素組成(機器學習的模型結構)。 首先我們先看個信用卡的例子。 假設我們想用機器學習來判斷“是否同意貸款給這個客戶?”,我們會將使用者的資訊資料輸給模型(比如年齡,性別,職業,工

機器學習系列:特徵提取與處理

第一個SURF描述符: [ 1.15299134e+02 2.56185453e+02 3.51230841e+00 3.32786485e+02 1.00000000e+00 1.75644866e+00 -2.94268692e-03 3.30736379e-03 2

spark機器學習筆記:用Spark Python構建推薦系統

輸出結果: [[Rating(user=789, product=1012, rating=4.0), Rating(user=789, product=127, rating=5.0), Rating(user=789, product=475, rating=5.0), Rating(us

機器學習演算法總結

1、決策樹 決策樹是通過一系列規則對資料進行分類的過程。它提供一種在什麼條件下會得到什麼值的類似規則的方法。決策樹分為分類樹和迴歸樹兩種,分類樹對離散變數做決策樹,迴歸樹對連續變數做決策樹。 1.2 決策樹的學習過程 一棵決策樹的生成過程主要分為以下3個部

Machine Learning第六講[應用機器學習的建議] --建立一個垃圾郵件分類

內容來自Andrew老師課程Machine Learning的第六章內容的Building a Spam Classifier部分。 一、Prioritizing What to Work on(優

機器學習 學習筆記11 分類

貝葉斯決策論是在概率框架下實施決策的基本方法。對分類任務來說,在所有相關概率都已知的理想情形下,貝葉斯決策論考慮如何基於這些概率和誤判損失來選擇最優的類別標記, 假設有N種可能的類別標記,即,是將一個真實標記為的樣本誤分類為所產生的損失,則基於後驗概率可獲得將樣本x分類為所

機器學習經典演算法--指數加權平均

機器學習經典演算法(三)–指數加權平均        指數加權平均(Exponentially Weighted Averages)是一些改進梯度下降法重要理論,如上篇博文梯度下降法(2)提到的動量梯度下降法,RMSprop、Adam等都用到了

看懂論文的機器學習基本知識--假正例、假負例、ROC曲線

 一、假正例和假負例 假正例(False Positive):預測為1,實際為0的樣本 假負例(False Negative):預測為0,實際為1的樣本 實際預測中,那些真正例(True Positive)和真負例(True Negative)都不會造成損失(co

《深入理解java虛擬機器》讀書筆記---- 垃圾回收演算法及垃圾收集介紹

一、垃圾回收演算法 1、標記--清除演算法 標記--清除(Mark-Sweep)演算法,分為標記和清除兩個階段,首先標記出所有需要回收的物件,在標記完成後統一回收所有被標記的物件,這是最基礎的收集演算法,後續很多演算法都是基於這種思想進行設計的。 標記--清除演算法主要的不足有兩點:一個