0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

糾錯框架的基本結(jié)構(gòu)

深度學(xué)習(xí)自然語言處理 ? 來源:CS的陋室 ? 作者:CS的陋室 ? 2020-10-10 11:04 ? 次閱讀

糾錯框架的基本結(jié)構(gòu)

雖然糾錯只是一個看著簡單的任務(wù),但是實際上已經(jīng)構(gòu)建成了一個非常完整的系統(tǒng),根據(jù)這個系統(tǒng)兼顧很多事情,舉幾個點:

充分縮小范圍,防止過糾,畢竟糾錯是NLP系統(tǒng)的上游,過糾的代價非常大。

充分挖掘可能錯誤的位置,在詞匯支持的情況,找到可能正確的結(jié)果,保證召回率。

各種抽取特征,能通過更加嚴(yán)謹(jǐn)?shù)姆绞皆诙鄠€候選中找到最優(yōu)的結(jié)果。

然后我們來看看一個比較OK的糾錯系統(tǒng)結(jié)構(gòu)是什么樣的,三大步驟:

錯誤檢測:檢測句子錯誤的部分,后續(xù)只對這個部分進(jìn)行錯誤糾正。

候選召回:根據(jù)識別的錯誤進(jìn)行針對性的修改,這塊依賴候選集。

候選排序:錯誤可能有很多。召回的結(jié)果也有很多,那個才是最優(yōu)解,這步需要通過一定的方式得到最優(yōu)結(jié)果。

錯誤檢測

錯誤檢測是文本進(jìn)入糾錯體系的一個大門,設(shè)立他的目的有這幾個:

縮小糾正范圍,降低后續(xù)流程的壓力。

減少過糾,保證準(zhǔn)確率,用戶自己輸對了卻改錯了體驗非常差。

換言之,我們需要在錯誤檢測中做的是,找到句子中可能出現(xiàn)錯誤的位置,提取出來任務(wù)就完成了,那么,這塊有什么方法呢。

最簡單的一種方法,就是結(jié)合詞典去做,這個詞典其實已經(jīng)有比較通用的,那就是jieba的詞典(idf.txt),對于絕大部分人而言,輸入的東西一般都是TOP的,那么一些未見過的,即未登錄詞,就很可能是錯誤的內(nèi)容了。但需要注意的是,領(lǐng)域內(nèi)的詞匯我們需要補(bǔ)充,詞典覆蓋率要足夠的高,這樣識別的準(zhǔn)確率才會夠高。

第二個方法也是一個無監(jiān)督的方法——用語言模型。語言模型能評判一個句子出現(xiàn)的概率,換言之,如果句子出現(xiàn)的頻次足夠低,那這里面就很可能有錯誤的詞匯,再精確到句子中的每個位置,那就是一個局部的n-gram的條件概率了,如果概率比整個句子明顯低,那就說明這個位置或者說這個位置附近可能存在錯誤點,我們可以拿出來。其實這個應(yīng)該這里幾個方法中門檻最低的一個了,只需要語料,不需要挖掘覆蓋率足夠大的詞典,也不需要標(biāo)注樣本,直接可以做。

第三個想說的方法就是序列標(biāo)注的方法。分詞和NER其實都可以抽象為序列標(biāo)注問題,錯誤檢測也可以,簡單的其實就是整個句子中,有錯誤的標(biāo)注為1,沒錯誤的標(biāo)注為0,然后通過CRF之類的方法來進(jìn)行預(yù)測,從而完成抽取。這個能很好的把控準(zhǔn)確性,效果還是會比較好的,但問題在于這種標(biāo)注樣本,可能比常規(guī)的ner樣本更難拿到。

pycorrector我前面提到過,就用了上面1、2兩種方法,在開放域里面其實效果不錯,但是在垂域,我們就需要更多的語料甚至是重新構(gòu)建里面涉及的模型和詞典。

而在我的實踐中,又有如下的經(jīng)驗,大家可以參考:

錯誤檢測這塊由于只是糾錯系統(tǒng)中的其中一部分,后續(xù)還有大量的步驟可以控制,所以我們并不需要對這步做非常高的準(zhǔn)確性的要求,抱著“寧可錯殺也不放過”的思路去做,保證真正錯的部分能被拿出來即可,對準(zhǔn)確率可以很大程度的放松。

無論是上面哪種方法,檢測錯誤的時候都要注意,檢測出錯誤的位置可能不是真的問題點,而可能識別出來的未知的附近,因此要擴(kuò)大召回的話,附近的可以都挑出來試試一起處理。

候選召回

在指導(dǎo)錯誤的位置以后,我們就要開始對癥下藥了,那么,什么是可能的藥,我們就要開始找了,這就是候選召回的主要任務(wù),針對錯誤點,我們找可能正確的結(jié)果。要找到正確的結(jié)果,主要是兩種方式:基于詞典的和基于NLG的。

基于詞典的方式是比較經(jīng)典而且在現(xiàn)在還是比較常用的方法,說白了我們就要去找一些詞匯,我們叫做“混淆集”,也就是一個簡單的kv對,遇到什么詞,我們就給出一些候選的結(jié)果,這個的結(jié)果非常簡單,但是挖掘會非常困難,搜索領(lǐng)域常用的方式就是共現(xiàn)query,大部分情況下,用戶會在沒有得到正確結(jié)果的時候修正結(jié)果重新搜索,所以共現(xiàn)query是一個非常好的挖掘資源。

基于詞典的方式糾錯的量總有上限,但是總有一些難以召回的情況,因此借助一些NLG的方式,可以擴(kuò)大召回,這個NLG,是一種文本生成的方式,可以根據(jù)上下文糾正的句子,給出一些可能的結(jié)果。但是這個方案的缺點是非常依賴平行樣本,即一個錯誤、一個正確的樣本,這個獲取往往會比較難。

候選排序

現(xiàn)在對一個我句子,我們手里都有很多候選的結(jié)果,這里的候選排序主要有兩個目的:

判斷這么多候選結(jié)果中選出最好的幾個。

最好的幾個相比原來的句子要足夠好,才能被糾。

這里,我們需要持續(xù)思考的是,這個排序規(guī)則改怎么定。

最簡單的方式就是使用語言模型的perplexity,即混淆度,這是用來一個句子他真的是句子的打分,一般而言這個正常無錯的句子ppl就會比較小,有錯的句子是ppl的比較大,可以用這個指標(biāo)來衡量最佳的糾錯結(jié)果是什么。

光一個ppl的評判是不夠的,不僅僅是ppl的相對量,還有絕對量,還有就是pl雖然下降但是還是很高,還有和ppl無關(guān)的因素,如拼音的相似度、和原句的相似度等,因此可以先升級為機(jī)器學(xué)習(xí),把前面提到的指標(biāo)抽取為特征,通過簡單的機(jī)器學(xué)習(xí)進(jìn)行計算。

進(jìn)一步地,同樣可以使用平行樣本,通過深度學(xué)習(xí)的方式來衡量是否需要糾正。

其他相關(guān)

糾錯只是一個系統(tǒng),我們要在里面添加很多的零件完成各個我們拆解的任務(wù),我們來看看有什么需要做的事情:

語言模型。語言模型在糾錯中起到了至關(guān)重要的作用,因此一個好的語言模型非常重要,而影響語言模型效果的很大一塊因素就是數(shù)據(jù),尤其是統(tǒng)計語言模型,通過調(diào)整數(shù)據(jù)集的分布,例如使用特定垂域的語料進(jìn)行訓(xùn)練,能有效提升最終的效果,但要注意不要把錯誤句子過多的引入到模型中。

混淆集?;煜糜诤蜻x召回,如果正確結(jié)果無法被召回,則效果會受到很大影響,因此我們需要通過多渠道挖掘,在github、知乎等網(wǎng)站,加上一些論文提到的數(shù)據(jù)中收集外部數(shù)據(jù),同時通過用戶query,尤其是共現(xiàn)query來獲取一些用戶容易混淆的錯誤。有一篇文章提到了,混淆集是糾錯的上限,正確答案召回不到,好的錯誤檢測和候選排序都沒用。

規(guī)則。糾錯系統(tǒng)中需要大量的規(guī)則,錯誤檢測階段衡量錯誤的閾值我們要用規(guī)則卡,排序階段我們也需要一些提權(quán)降權(quán)保證最終我們需要的內(nèi)容能排在前面,例如一些專有名詞的保護(hù),”電池“不能被改為”滇池“,”嬴政“不能被改為”行政“。這些規(guī)則看著簡單,但是要想提出這些規(guī)則,必須對數(shù)據(jù)有足夠的了解。

小結(jié)

一連幾篇討論了糾錯,對糾錯問題有了比較完整的理解,可以知道一個簡單的問題可以進(jìn)行細(xì)化然后構(gòu)建出完整的系統(tǒng)。最后我放幾篇比較好的參考文章,大家可以繼續(xù)深入閱讀。

平安糾錯:https://zhuanlan.zhihu.com/p/159101860

中文(語音結(jié)果)的文本糾錯綜述:https://blog.csdn.net/lipengcn/article/details/82556569?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2

責(zé)任編輯:lq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    398

    瀏覽量

    17407
  • 糾錯
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    13284
  • 語言模型
    +關(guān)注

    關(guān)注

    0

    文章

    501

    瀏覽量

    10236

原文標(biāo)題:深入討論糾錯系統(tǒng)

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    TMS320C64x+和TMS320C674x的檢錯糾錯機(jī)制

    電子發(fā)燒友網(wǎng)站提供《TMS320C64x+和TMS320C674x的檢錯糾錯機(jī)制.pdf》資料免費下載
    發(fā)表于 10-12 11:27 ?0次下載
    TMS320C64x+和TMS320C674x的檢錯<b class='flag-5'>糾錯</b>機(jī)制

    bootstrap框架和vue框架的區(qū)別

    Bootstrap和Vue都是目前非常流行的前端開發(fā)框架,它們各自具有獨特的優(yōu)勢和特點。 設(shè)計理念 Bootstrap是一個基于HTML、CSS和JavaScript的前端開發(fā)框架,主要用于快速構(gòu)建
    的頭像 發(fā)表于 07-11 09:55 ?736次閱讀

    bootstrap框架用什么軟件開發(fā)

    Bootstrap是一個流行的前端框架,用于快速開發(fā)響應(yīng)式和移動優(yōu)先的Web應(yīng)用程序。它提供了一套預(yù)定義的CSS和JavaScript組件,使得開發(fā)者可以快速構(gòu)建出漂亮的用戶界面
    的頭像 發(fā)表于 07-11 09:50 ?394次閱讀

    鴻蒙Ability Kit(程序框架服務(wù))【應(yīng)用啟動框架AppStartup】

    `AppStartup`提供了一種更加簡單高效的初始化組件的方式,支持異步初始化組件加速應(yīng)用的啟動時間。使用啟動框架應(yīng)用開發(fā)者只需要分別為待初始化的組件實現(xiàn)`AppStartup`提供
    的頭像 發(fā)表于 06-10 18:38 ?652次閱讀

    專家解讀 | NIST網(wǎng)絡(luò)安全框架(1):框架概覽

    本文主要探討NIST CSF框架的起源目標(biāo)、內(nèi)容組成,及其在網(wǎng)絡(luò)安全風(fēng)險管理中的關(guān)鍵作用,通過采用該框架,組織能夠更有效地實施風(fēng)險識別、安全保護(hù)、威脅檢測和事件響應(yīng),從而構(gòu)建更加堅固和彈性的網(wǎng)絡(luò)安全基礎(chǔ)設(shè)施。
    的頭像 發(fā)表于 05-06 10:30 ?1288次閱讀
    專家解讀 | NIST網(wǎng)絡(luò)安全<b class='flag-5'>框架</b>(1):<b class='flag-5'>框架</b>概覽

    Python自動化測試框架及其應(yīng)用

    Pytest是一個非常成熟的全功能的Python測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,功能更強(qiáng)大。
    的頭像 發(fā)表于 04-03 16:15 ?503次閱讀
    Python自動化測試<b class='flag-5'>框架</b>及其應(yīng)用

    谷歌模型框架是什么軟件?谷歌模型框架怎么用?

    谷歌模型框架通常指的是谷歌開發(fā)的用于機(jī)器學(xué)習(xí)和人工智能的軟件框架,其中最著名的是TensorFlow。TensorFlow是一個開源的機(jī)器學(xué)習(xí)框架,由谷歌的機(jī)器學(xué)習(xí)團(tuán)隊開發(fā),用于構(gòu)建和訓(xùn)練各種機(jī)器學(xué)習(xí)模型。
    的頭像 發(fā)表于 03-01 16:25 ?774次閱讀

    谷歌模型框架是什么?有哪些功能和應(yīng)用?

    谷歌模型框架(Google Model Framework)并不是一個特定的框架,而是指谷歌開發(fā)的一系列軟件框架,用于支持機(jī)器學(xué)習(xí)和人工智能的應(yīng)用。以下是一些與谷歌模型框架相關(guān)的關(guān)鍵組
    的頭像 發(fā)表于 02-29 18:11 ?1383次閱讀

    OpenHarmony4.0源碼解析之媒體框架

    媒體框架簡介 媒體框架 multimedia_player_framework 主要提供音視頻的錄制與播放功能。 框架簡介 從框架圖中可以看出,媒體
    的頭像 發(fā)表于 02-26 22:05 ?722次閱讀
    OpenHarmony4.0源碼解析之媒體<b class='flag-5'>框架</b>

    R-Rhealstone框架使用教程

    本篇文章描述基于Rhealstone的系統(tǒng)實時性的測量基準(zhǔn)的框架--R-Rhealstone框架
    的頭像 發(fā)表于 01-18 10:54 ?1455次閱讀
    R-Rhealstone<b class='flag-5'>框架</b>使用教程

    什么是LlamaIndex?LlamaIndex數(shù)據(jù)框架的特點和功能

    LlamaIndex是一個數(shù)據(jù)框架,用于讓基于LLM的應(yīng)用程序攝取、結(jié)構(gòu)化和訪問私有或領(lǐng)域特定的數(shù)據(jù)。它提供Python和Typescript版本。
    的頭像 發(fā)表于 01-05 11:08 ?9052次閱讀
    什么是LlamaIndex?LlamaIndex數(shù)據(jù)<b class='flag-5'>框架</b>的特點和功能

    什么是邏輯量子比特?怎樣用其實現(xiàn)量子糾錯呢?

    邏輯量子比特(Logical Qubit)由多個物理量子比特組成,可作為量子計算系統(tǒng)的基本計算單元,因其具有較強(qiáng)的糾錯性能而備受關(guān)注。
    的頭像 發(fā)表于 12-21 18:24 ?916次閱讀
    什么是邏輯量子比特?怎樣用其實現(xiàn)量子<b class='flag-5'>糾錯</b>呢?

    是什么導(dǎo)致RAM中的內(nèi)存數(shù)據(jù)損壞?糾錯碼(ECC)如何修復(fù)位翻轉(zhuǎn)?

    是什么導(dǎo)致RAM中的內(nèi)存數(shù)據(jù)損壞?糾錯碼(ECC)如何修復(fù)位翻轉(zhuǎn)? RAM中的內(nèi)存數(shù)據(jù)損壞可能由多種原因?qū)е?。其中一些原因包括電磁干擾、電壓波動、溫度變化等外部因素,還有由內(nèi)部設(shè)計和制造缺陷
    的頭像 發(fā)表于 12-15 09:58 ?2020次閱讀

    搭建ssm框架的詳細(xì)流程

    隨著互聯(lián)網(wǎng)的快速發(fā)展,Web應(yīng)用程序的開發(fā)越來越受到重視。而在Java開發(fā)領(lǐng)域,SSM框架(Spring + SpringMVC + MyBatis)已經(jīng)成為非常流行的一種開發(fā)架構(gòu)。SSM框架能夠
    的頭像 發(fā)表于 12-03 14:52 ?3213次閱讀

    javaweb的三大框架有哪些

    在JavaWeb開發(fā)中,有許多流行的框架可供選擇。這些框架旨在提高開發(fā)效率、簡化開發(fā)過程,并為開發(fā)人員提供更強(qiáng)大的功能和靈活性。下面是三個在JavaWeb開發(fā)中廣泛使用的主要框架。 Spring
    的頭像 發(fā)表于 12-03 11:47 ?1979次閱讀