一般有兩種文字糾錯的型別:
首先看一下non-word的拼寫錯誤,這種錯誤表示此詞彙本身在字典中不存在,比如把「要求」誤寫為「藥求」,把「correction」誤拼寫為「corrction」。尋找這種錯誤很簡單,例如分完詞以後找到哪個詞在詞典中不存在,那麼這個詞就可能是錯誤拼出來的的詞。
操作步驟
• 找到候選詞
• 接著基於特定演算法找出與錯拼詞關聯最高的乙個或多個單詞作為糾正選項
如何確定候選項呢?如何找出最關聯項:可以根據貝葉斯定理,得到如下表示式:
p(候選項∣錯誤單詞)∝p(候選項)∗p(錯誤單詞∣候選項)
「此選項本身在語料**現的可能性」和「人們意圖打候選項時會錯打成錯誤單詞的可能性」的乘積。前者可視為uni-gram語言模型,需要計算詞語的出現頻次,當然也可以擴張至二階或三階,比如計算「錯誤單詞左邊單詞+候選項+錯誤單詞右邊單詞」在語料中的出現情況。
單詞本身沒有錯誤,但是不符合上下文語境,常常涉及語法語義層面的錯誤,比如把「我現在在公司裡」錯寫成「我現在在公式裡」。這種錯誤比上面以一種錯誤糾錯更加困難。
操作步驟
• 首先針對每個單詞根據編輯距離、同音詞、近形詞等方式選出候選項(也包括單詞本身)
• 接下來計算基於候選項的語言模型,以及在候選項情況下出現錯誤單詞的條件概率;如果綜合計算而得單詞本身出現在此語境中的概率較大,則不進行糾正,否則推薦糾正項。
• 注:在實際應用中不可能對每個詞進行排查,可以應用語言模型等方式對句子進行粗粒度的初步篩查(困惑度)。
這裡舉個小例子,只給定少量英語語料,如何設計乙個簡單的英文糾錯系統(non-word)?
首先給定乙個思路:
首先全部單詞變成小寫,並且計算他們出現的次數,再除以單詞總數(字典長度)作為該詞的頻率,對輸入的單詞在詞典裡進行匹配,至少0次編輯,最多2次編輯。找出編輯距離最小的,當編輯距離為最小的不只乙個時,找出所有單詞裡的概率最大的作為輸出。
對於real-word可以先確定候選項,然後通過語言模型(一階/二階)進行統計。
下一節將對上面的問題進行乙個實戰案例
1.胡盼盼《自然語言處理從入門到實戰》
2.文字領域的資料預處理技術、深度學習訓練技巧以及debug經驗
文字預處理 (5)文字糾錯的簡單案例
上一節我們留下了,乙個小問題,就是如何對給定的英文文字語料,來進行拼寫糾錯。首先,我們給定乙個語料文字 beyes train text.txt 然後統計語料中各單詞的出現情況。import re,collections 提取語料庫中的所有單詞並且轉化為小寫 def words text retur...
書蘊筆記 0 文字預處理
整體索引在此 書蘊 基於書評的人工智慧推薦系統 import re import os from openpyxl import load workbook defread from xlsx path wb load workbook path ws wb wb.sheetnames 0 rows...
文字預處理
常見預處理步驟,預處理通常包括四個步驟 讀入文字 分詞建立字典,將每個詞對映到乙個唯一的索引 index 將文字從詞的序列轉換為索引的序列,方便輸入模型 現有的工具可以很好地進行分詞,我們在這裡簡單介紹其中的兩個 spacy和nltk。text mr.chen doesn t agree with ...