本篇文章,主要來嘮嗑下工業界的糾錯系統怎麼設計?包括:基於規則的糾錯系統(簡單的英文糾錯、複雜的中文糾錯)、基於nn的糾錯系統。當然,在成熟的工業界糾錯系統中,最好是結合規則&&nn方法。
好了,開始上乾貨!!!
英文的糾錯比較簡單,其犯錯的型別不多,因此解決方案相對簡單,**開發量不大。
拼寫錯誤:插入、刪除、替換、調序;
p(i|o):對應「輸入詞語->候選詞語」的概率;
p(o|i):對應「候選詞語->輸入詞語」犯錯的可能性,這邊為常說的混淆矩陣;
p(i):對應語言模型概率;
ii)離線挖掘:基於「語料/搜尋日誌等」,計算出p(o|i)對應的混淆矩陣;
iii)解碼:在召回的解碼圖上,利用lm score計算出最優的路徑最為糾錯結果;此外在解碼圖上可以引入其他的一些特徵,例如:詞頻資訊等;
一種簡單的英文拼寫糾錯解決方案,基於編輯距離召回&&選取詞頻最高的詞語作為候選。
• 諧音字詞,如 配副眼睛-配副眼鏡
• 混淆音字詞,如 流浪織女-牛郎織女
• 字詞順序顛倒,如 伍迪艾倫-艾倫伍迪
• 字詞補全,如 愛有天意-假如愛有天意
• 形似字錯誤,如 高梁-高粱
• 中文拼音全拼,如 xingfu-幸福
• 中文拼音縮寫,如 sz-深圳
• 語法錯誤,如 想象難以-難以想象
i)檢錯
ii)候選召回
索引:基於拼音&&字形&&詞語&&片段索引進行召回;
iii)糾錯排序
精排:使用wide&&deep模型,deep部分:當前錯誤點上下文表示,wide部分:基於形音、詞法、語義、使用者行為等特徵學習原詞與候選詞的多維度距離表示;
包含基於規則&&nn模型的解決思路;
這個開源解決方案,是目前看到功能比較齊全&&方案設計比較靠譜的。
構造糾錯的pair對,使用encoder&&decoder框架進行糾錯。總的來看,目前主要是基於transformer結構,並結合一些nmt的trick或者多目標來優化糾錯。具體工業界上線,尤其是在搜尋的query糾錯場景,由於對時延的要求比較高(正常平均乙個query的響應需要控制5ms附近),需要做蒸餾來推上線。
順帶提一下,基於asr的糾錯,糾錯pair天然的可以引入nbest犯錯可能性,很容易使用這個方向的解決方案。
attention-based encoder-decoder networks for spelling and grammatical error correctionarxiv.org拼寫錯誤:使用 sighan 2013 csc datasets中提供字音、字形相似表召回候選,基於5-gram模型糾錯;
語法糾錯:採用transformer的seq2seq框架,基於word&&char粒度分別建模;
模型組合:character nmt + character&&subword nmt + subword nmt + subword&&character nmt,四種模型分別得到最優的糾錯候選,最後靠5-gram評分得到ppl最低的句子作為糾錯結果。
chinese grammatical error correction using statistical and neural modelslink.springer.com
i)基於規則方法;
ii)基於統計方法:smt(計算錯誤句子和正確句子的條件概率)+lm+雜訊通道模型,beam search得到最優候選作為糾錯結果;
iii)基於nmt方法:seq2seq(encoder和decoder各2層lstm);
iv)模型組合:對上面的幾路結果,引入5種衝突解決方案,選出最優的候選作為糾錯結果。
a sequence to sequence learning for chinese grammatical error correctionlink.springer.com
採用conv+multihopattention+seq2seq模型進行糾錯,這套方案是基於fairseq框架,在17年初是nmt的benchmark方案。在比賽中,是唯一使用單模型的隊伍。
自構造模糊音生成器進行候選召回,採用bert進行糾錯。
缺陷:基於bert的糾錯只有乙個encoder,只能進行序列對齊的糾錯。
達觀糾錯解決方案
達觀資料搜尋引擎的query自動糾錯技術和架構 丨 達觀動態-達觀資料-企業大資料技術服務專家www.datagrand.com
一些開源的解決方案
文字糾錯學習
主要針對 當前由於使用者輸入隨意及手寫輸入法易出錯等原因,錯誤串在輸入文字中佔比高達10 15 這也使得中文文字糾錯模組必要性凸顯。而在垂直領域中,比如平安的壽險領域,同樣會因為使用者輸入隨意 不清楚產品名稱等原因,導致使用者提問與回答存在大量的手寫及同音錯誤。自然語言處理常見的任務包括詞法分析 句...
中文文字糾錯
u4e00 代表什麼意思 u9fa5 代表什麼意思?答 u4e00 u9fa5是用來判斷是不是中文的乙個條件,採用的是unicode編碼 參考website 2020 9 1 最全面,精華 中文糾錯 待看完中文文字拼寫檢查錯誤糾正方案整理 關聯pycorrector 小練習 簡化 import pa...
文字預處理 (4)文字糾錯
一般有兩種文字糾錯的型別 首先看一下non word的拼寫錯誤,這種錯誤表示此詞彙本身在字典中不存在,比如把 要求 誤寫為 藥求 把 correction 誤拼寫為 corrction 尋找這種錯誤很簡單,例如分完詞以後找到哪個詞在詞典中不存在,那麼這個詞就可能是錯誤拼出來的的詞。操作步驟 找到候選...