lstm 文字糾錯 工業界糾錯系統

2021-10-12 18:39:33 字數 2672 閱讀 8604

本篇文章,主要來嘮嗑下工業界的糾錯系統怎麼設計?包括:基於規則的糾錯系統(簡單的英文糾錯、複雜的中文糾錯)、基於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 correction​arxiv.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 models​link.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 correction​link.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 尋找這種錯誤很簡單,例如分完詞以後找到哪個詞在詞典中不存在,那麼這個詞就可能是錯誤拼出來的的詞。操作步驟 找到候選...