中文文字智慧糾錯知多少?
作者|徐婧揚,單位:中國移動智慧家庭運營中心
Labs 導讀
中文文字糾錯是針對中文文字拼寫錯誤等進行檢測與糾正的一項工作,是自然語言處理的重要應用領域之一。中文文字糾錯的應用場景很多,諸如在搜尋引擎,問答/對話系統,輸入法等領域作為一個前置模組,或作為OCR和ASR檢測的後置模組,亦或是公文寫作場景,輔助進行公文審閱校對,糾錯的質量對後續的處理非常重要。
Part 01 中文錯別字型別有哪
我們把常見的中文錯別字總結分為三類:
- 拼寫錯誤,由於輸入法,音轉軟體等原因導致的用字/詞錯誤,其主要表現為錯誤使用了同音字,形近字等,也是糾錯領域當前研究比較集中的方向;
- 語法錯誤,該類錯誤主要是由於疏忽或對語言運用不熟悉導致的,如字詞缺失、冗餘、亂序等,其錯誤片段相對較大,目前也有一些針對簡單句法錯誤的研究;
- 語義錯誤,該類錯誤可能由於對某些知識不瞭解或組織語言能力欠缺等導致,要解決該類問題,通常需要引入外部知識、常識等,當前涉及這部分的研究也比較少。
表1
整體處理難度上:拼寫錯誤 < 語法錯誤 < 語義錯誤。
Part 02 智慧文字糾錯的框架
文字糾錯常見思路分為兩種:一種是多模型pipeline方法,一種是端到端的方法。
2.1 多模型pipeline方法
把糾錯任務分解為錯誤檢測→候選召回→打分排序三個關鍵步驟,如圖1,每個模型解決具體的特定問題,然後通過Pipeline的方式串聯,得到最後結果。這種方法的優點是方便針對各個步驟進行重點突破和優化,但也存在明顯的缺點是錯誤會逐級傳遞,比如,在檢測模組識別了非錯別字的位置,那麼糾錯模組針對該位置的糾正也一定是不正確的。
圖1
檢錯模組
檢錯模組的主要目標是錯誤識別,識別並定位出文本中的錯誤字/詞位置,若存在則將錯誤向後傳遞。
候選召回
候選召回階段針對檢錯模組識別到的錯誤點,結合歷史錯誤資訊,以及近音、近形等特徵形成糾錯候選集合。
糾錯模組
糾錯模組主要解決候選集合的排序問題,由於糾錯的正確結果具有唯一性,該模組的任務是將正確的結果排在第一位。
2.2 端到端的方法
此方法是直接建模原始“錯誤句子”到修正後的“正確句子”的處理過程,一般這個過程類似於機器翻譯任務,如圖2,即將錯誤的句子翻譯成正確的句子,一般使用seq2seq類深度學習模型。該方法優點是避免人工提取特徵,減少人工工作量,缺點是無法控制特定問題點優化對整個流程的影響。
圖2 h代表隱藏層,c代表編碼器和解碼器之間的狀態向量
Part 03 智慧文字糾錯的一些方案
3.1 多模型pipeline方法
檢錯模組
(1)基於規則:例如,抽取ngram級別的拼音,構建實體詞與拼音對映詞表,將抽取的拼音對映到實體詞,比較和原詞是否一致。
(2)基於語言模型:利用bert模型的MLM任務,將當前詞用mask符號代替,然後做預測,若真實字不在topk內即為錯。
候選召回
(1)基於規則:近音候選詞召回、字音編輯距離召回。
(2)基於語言模型:利用語言模型等計算錯誤詞可能的topk正確答案。
糾錯模組
(1)粗排序:通過構造的特徵來對候選詞進行粗打分。特徵主要包括:語料頻率比值、編輯距離等。
(2)精排序:採用機器學習模型等對候選進行打分,同時在特徵工程方面也進行了更精細化地處理。
3.2 端到端的方法
(1)FASPell,愛奇藝釋出在EMNLP2019的基於詞的中文糾錯的方法。
(2)Soft-Masked BERT,位元組發表在ACL 2020的中文糾錯方法。
(3)MLM-phonetics MLM-phonetics,在soft-masked BERT的基礎上做的優化。
(4)Dynamic Connected Networks,哈工大&訊飛發表在ACL2021的方法。
(5)Transformer-NMT,網易有道NLPCC2018冠軍方案。
(6)ErnieCSC,百度在ACL 2021上提出結合拼音特徵的Softmask策略的糾錯方案。
(7)MacBert4csc,MacBERT模型改變網路結構的中文文字糾錯模型。
圖3 文字糾錯檢錯階段的標註
Part 04 未來方向與挑戰
最後總結一下文字糾錯任務的一些挑戰和未來方向:
當前的兩大方案,pipeline的機制會導致錯誤逐級放大,同時串聯鏈越長則耗時越長。端到端方案當前缺少足夠的標註語料,另外不方便擴充套件與領域遷移。
文字糾錯後續可探索利用知識圖譜完善整個糾錯任務,或探索融入實體詞糾正到模型中,另外該領域還需積累大量的高質量標註樣本和混淆集資源。
- iOS16新功能被曝耗電嚴重,暫時別用了!
- 資訊架構如何設計?5000字乾貨幫你快速掌握!
- iOS 16.1測試版:電量進度條迴歸!不再滿電顯示
- H5無障礙技術——ARIA
- 蘋果迴應:iOS 16貼上彈窗必須修復,或在下週!
- SwiftUI 之 HStack 和 VStack 的切換
- 2022-2023 十大應用開發趨勢
- 元件庫設計指南:元件庫的誕生
- Taro效能優化之複雜列表篇
- 敢做剛當,蘋果承認將增加系統廣告
- 如何制定B端專案全域性框架?收下這篇總監級的經驗!
- 分歧還是共存?詳解Android核心安全
- iOS 16正式版終於曝光,三大功能更新
- vivo 全球商城:電商平臺通用取貨碼設計
- iOS 16值不值得升級,正式版主要功能搶先看
- 專案中第三方庫並不是必須的
- 如何用Gerrit管理你的Android程式碼?
- 和安卓截然相反?為什麼iOS手動關閉後臺卻更耗電,看完基本懂了
- 使用真實裝置雲測試多體驗應用程式
- 帶你瞭解語音識別技術的發展歷史