北方工業(yè)大學(xué) 陳旻杰 魏軒 鄭瑩 周世元
本文結(jié)合網(wǎng)絡(luò)爬蟲(chóng)和深度學(xué)習(xí)模型研究智能問(wèn)答技術(shù)。文中介紹了BERT的基本內(nèi)容和特點(diǎn)、Finetuning BERT中的文本詞匯生成過(guò)程,以及在深度學(xué)習(xí)模型中引入主題特征的方法和實(shí)現(xiàn)。
隨著大數(shù)據(jù)時(shí)代的到來(lái),每天都有數(shù)以億計(jì)的信息存留于互聯(lián)網(wǎng),龐大的信息量讓人們很難從中獲取有價(jià)值的信息,如何快速篩選這些有價(jià)值的信息是智能問(wèn)答系統(tǒng)的關(guān)鍵。本文中的答案選擇模型采用基于預(yù)訓(xùn)練模型BERT微調(diào)的答案選擇模型,通過(guò)分別采取全連接網(wǎng)絡(luò),DPCNN網(wǎng)絡(luò),BiLSTM網(wǎng)絡(luò)以及調(diào)整不同輸入層后,我們發(fā)現(xiàn)采用BiLSTM網(wǎng)絡(luò)模型有較好的效果。在進(jìn)行系統(tǒng)部署后,通過(guò)對(duì)文本選擇的正確率和響應(yīng)時(shí)間進(jìn)行對(duì)比,均可獲得理想的效果。
BERT采用Transformer模型作為基本單元,并且也同時(shí)采用Transformer模型的編碼器,此舉讓BERT[1]模型實(shí)現(xiàn)了真正意義上的上下文相關(guān)。在Attention is ALL You Need[2]一文中,論述在將一個(gè)或多個(gè)Transformers堆疊后,可以認(rèn)為其成為了一個(gè)擁有多輸入,多輸出的黑盒,而B(niǎo)ERT模型中則同樣可以按照此方式理解為:采用特定格式后輸入由多個(gè)Transformers組成的黑盒模型中訓(xùn)練后得到輸出。
BERT模型是可以進(jìn)行兩種任務(wù)類型的多任務(wù)模型,一種是掩碼語(yǔ)言模型任務(wù),另一種是預(yù)測(cè)上下文模型。掩碼語(yǔ)言模型任務(wù)是通過(guò)在預(yù)料中遮蓋部分詞語(yǔ),然后使用類似上下文預(yù)測(cè)的方法預(yù)測(cè)被掩蓋的詞語(yǔ);而上下文預(yù)測(cè)類型則是通過(guò)使用大量的語(yǔ)料來(lái)訓(xùn)練模型讓其學(xué)習(xí)到:短語(yǔ)于句子之間的上下文和邏輯關(guān)系,然后自行預(yù)測(cè)句子間是否存在上下文關(guān)系,本文便是采用此種訓(xùn)練模型作為基礎(chǔ)的預(yù)訓(xùn)練模型。后續(xù)的預(yù)訓(xùn)練模型選擇方案則是由相關(guān)下游任務(wù)確定的。
本文采用的為預(yù)訓(xùn)練模型是chinese_L_12_H-768_A-12模型,由于此模型是幾乎適用于所有任務(wù)的模型,所以BERT預(yù)訓(xùn)練模型需要使用下游任務(wù)的數(shù)據(jù)進(jìn)行微調(diào)訓(xùn)練。微調(diào)時(shí)使用的數(shù)據(jù)通常的建模方式是對(duì)文本對(duì)進(jìn)行獨(dú)立編碼,之后采用雙向交叉注意力機(jī)制進(jìn)行文本建模。而B(niǎo)ERT由于其本身所使用的自注意機(jī)制可以對(duì)文本對(duì)的編碼,在此過(guò)程中實(shí)際上已經(jīng)實(shí)現(xiàn)了兩個(gè)句子之間的雙向交叉注意力的作用。答案選擇任務(wù)的數(shù)據(jù)源為文本對(duì)數(shù)據(jù),在微調(diào)過(guò)程中只需將此任務(wù)特定的輸入輸出形式送入BERT模型并采用端到端的方式微調(diào)模型中的所有參數(shù)。預(yù)處理模塊通過(guò)對(duì)原始文本進(jìn)行數(shù)據(jù)清洗后,將問(wèn)題和答案轉(zhuǎn)換為BERT模型的輸入形式。模型的輸入形式如下:BERT_Input(Sentence1,Se ntences2)=[CLS] Sentence1[SEP]
其中,[CLS]與[SEP]為BERT模型的特殊輸入標(biāo)志。[CLS]向量代表整個(gè)句子的句向量表示,用于分類任務(wù),[SEP]向量代表句子中的詞向量表示。
我們通過(guò)將訓(xùn)練數(shù)據(jù)送入語(yǔ)言模型中訓(xùn)練,從而讓每個(gè)位置的矢量輸出捕獲句子中的語(yǔ)義信息。BERT模型可以根據(jù)詞語(yǔ)在句子中的位置向量來(lái)捕獲詞語(yǔ)的深層信息。在答案選擇任務(wù)上,模型微調(diào)方法如圖1所示,模型輸入如下所示:
圖1 答案選擇模型結(jié)構(gòu)Fig.1 Answer selection model structure
在基于Google公布的BERT代碼中本文使用了其中進(jìn)行分類型任務(wù)的下模型訓(xùn)練,其中針對(duì)部分參數(shù)進(jìn)行微調(diào)修改如表1所示[3]:
表1 模型參數(shù)Tab.1 Model parameters
基于用戶角度對(duì)功能進(jìn)行需求分析:
(1)法律智能問(wèn)答:系統(tǒng)提供的三種法律問(wèn)答方面為:法律問(wèn)題,法律案例,法律規(guī)章,其中需要程序能做到返回關(guān)聯(lián)度最高的文本,以便用戶查閱。
(2)法律測(cè)試:收錄了相關(guān)法律普及問(wèn)題,便于用戶學(xué)習(xí)后測(cè)試,并返回用戶選擇的正確與否。
(3)法律資料庫(kù):用于與用戶鍵入文本的匹配。
解決以上問(wèn)題需要使用到的相關(guān)技術(shù)為:
(1)網(wǎng)絡(luò)爬蟲(chóng):用于收集數(shù)據(jù)集,并對(duì)數(shù)據(jù)進(jìn)行初步的清理和整理。
(2)Fine-tuning BERT的預(yù)訓(xùn)練:將進(jìn)行了數(shù)據(jù)清洗和整理之后的數(shù)據(jù)送入BERT中文預(yù)訓(xùn)練模型中進(jìn)行訓(xùn)練。
(3)信息檢索:使用ES搜索引擎,對(duì)大量數(shù)據(jù)錄入搜索引擎中建立索引,等到用戶鍵入相關(guān)問(wèn)題之后進(jìn)行初次答案篩選。
(4)BERT預(yù)測(cè)答案:將問(wèn)題和初次篩選的答案送入BERT模型中進(jìn)行上下文預(yù)測(cè),并通過(guò)對(duì)候選答案評(píng)分進(jìn)行從高到低的排序。
(5)BERT模型加載:由于在實(shí)際部署情況中用戶需要反復(fù)使用BERT模型,所以此處本文此處選擇放棄使用無(wú)法預(yù)加載的ckpt模型而采取可預(yù)加載的pb模型,來(lái)滿足用戶需求。
(6)問(wèn)題預(yù)處理:將用戶輸入的問(wèn)題句中的語(yǔ)氣詞,雜項(xiàng)詞和停用詞進(jìn)行清理,使檢索獲得更好的結(jié)果。
基于以上核心問(wèn)題和解決方案,本文設(shè)計(jì)了如圖2所示的問(wèn)答程序流程:
圖2 問(wèn)答功能程序流程Fig.2 Question-anwser program procedure
由于深度學(xué)習(xí)領(lǐng)域的訓(xùn)練十分依賴數(shù)據(jù),所以對(duì)于數(shù)據(jù)量的解決方案我們使用網(wǎng)絡(luò)爬蟲(chóng)的方案解決,而數(shù)據(jù)中的冗余或錯(cuò)誤數(shù)據(jù)則需要我們后續(xù)的數(shù)據(jù)清洗步驟:
(1)查看獲取的數(shù)據(jù)是否損壞。
(2)將特殊字符替換為常規(guī)字符,對(duì)于難以處理的特殊字符可以考慮刪除。
(3)考慮到后期輸入訓(xùn)練的格式,需要對(duì)文本進(jìn)行文本格式的排版檢查。
(4)基于CSV訓(xùn)練集文件中采取逗號(hào)或者制表符作為分割,需要對(duì)文本進(jìn)行檢查以免沖突造成錯(cuò)誤。
(5)采取UTF-8的編碼。
本文中模型的數(shù)據(jù)集來(lái)源于網(wǎng)絡(luò)爬蟲(chóng),在經(jīng)過(guò)數(shù)據(jù)清理后按照訓(xùn)練集,驗(yàn)證集,測(cè)試集比例為6∶1∶1的情況分割,由于原始數(shù)據(jù)集中只有問(wèn)題與答案是上下文的數(shù)據(jù),每一條數(shù)據(jù)都智能制作正例,負(fù)例無(wú)法直接制作,所以我們需要通過(guò)余弦相似度計(jì)算不同問(wèn)題之間的相似程度,對(duì)每個(gè)問(wèn)題做一次計(jì)算然后把其他問(wèn)題按照相似度由高到低的順序排序,其中25%~75%區(qū)間內(nèi)隨機(jī)抽取一個(gè)問(wèn)題,并將抽取到的問(wèn)題對(duì)應(yīng)的答案作為原問(wèn)題的答案,以此制作負(fù)例。此外我們還需要將數(shù)據(jù)集中的長(zhǎng)文本切割,由于數(shù)據(jù)集中存在個(gè)別樣例中的答案文本能長(zhǎng)達(dá)1000字符,所以需要將長(zhǎng)文本切割為短文本。在保證切分后能保持原句語(yǔ)義的情況下,我們采取以下方案:
(1)將答案文本按照逗號(hào)或句號(hào)切分為短句集,將當(dāng)前答案語(yǔ)句的內(nèi)容置空。
(2)遍歷短句集,遍歷完成后進(jìn)入五。
(3)將當(dāng)前短句加入答案語(yǔ)句,如果發(fā)現(xiàn)加入后答案語(yǔ)句長(zhǎng)度大于128,則短句不加入,跳轉(zhuǎn)至四,否則跳轉(zhuǎn)至二。
(4)將問(wèn)題語(yǔ)句與當(dāng)前答案語(yǔ)句和標(biāo)簽制作為CSV訓(xùn)練文件,將當(dāng)前答案語(yǔ)句的內(nèi)容置空,跳轉(zhuǎn)至二。
(5)如果答案語(yǔ)句的長(zhǎng)度小于16,則不處理并結(jié)束算法,若大于16,將問(wèn)題語(yǔ)句與當(dāng)前答案語(yǔ)句和標(biāo)簽制作為CSV訓(xùn)練文件并結(jié)束算法。
本文中的自動(dòng)問(wèn)答中的答案選擇模型是基于Transformer預(yù)訓(xùn)練模型的答案選擇模型,并且在嘗試與BiLSTM網(wǎng)絡(luò)結(jié)合,以及調(diào)整輸入層嘗試構(gòu)造新的模型。針對(duì)于與訓(xùn)練模型對(duì)數(shù)據(jù)量的要求,本文采取了以下策略:
(1)預(yù)訓(xùn)練模型的微調(diào)策略:采用基于遷移學(xué)習(xí)的二次微調(diào)策略,首先采用大規(guī)模答案選擇數(shù)據(jù)集進(jìn)行一次微調(diào),之后采用目標(biāo)域數(shù)據(jù)二次微調(diào),將預(yù)訓(xùn)練模型微調(diào)到目標(biāo)域。
(2)基于信息檢索的數(shù)據(jù)擴(kuò)充策略:對(duì)于目標(biāo)域訓(xùn)練數(shù)據(jù)問(wèn)題,我們提出了利用外源知識(shí)庫(kù),為預(yù)訓(xùn)練模型提供更為豐富的語(yǔ)義信息。
通過(guò)以上步驟,我們可以得到我們需要的Finetuning BERT模型,此模型的應(yīng)用過(guò)程如圖3所示:
圖3 深度學(xué)習(xí)訓(xùn)練過(guò)程Fig.3 Deep learning training procedure
數(shù)據(jù)量即訓(xùn)練時(shí)間如表2所示:
表2 訓(xùn)練集大小和訓(xùn)練時(shí)間Tab.2 Traing dataset size and training time spent
目前此項(xiàng)目實(shí)現(xiàn)了一個(gè)較高準(zhǔn)確率和速度的法律智能問(wèn)答系統(tǒng),相信在未來(lái)有可能會(huì)出現(xiàn)在BERT模型+信息檢索技術(shù)的基礎(chǔ)上再添加一些技術(shù)的方法來(lái)繼續(xù)提高準(zhǔn)確率或速度。由于自然語(yǔ)言處理技術(shù)正在快速發(fā)展,不可否認(rèn)越來(lái)越多的BERT改進(jìn)版模型也在不斷提出,今后還會(huì)出現(xiàn)良好的自然語(yǔ)言處理方法,法律智能問(wèn)答系統(tǒng)使用新技術(shù)后會(huì)在準(zhǔn)確率和速度上繼續(xù)提升,達(dá)到令用戶基本滿意的程度。并且基于此模型問(wèn)答系統(tǒng)能在響應(yīng)時(shí)間和準(zhǔn)確率(通過(guò)比較模型對(duì)答案的范圍值中相關(guān)度是否大于0.5)可以認(rèn)為此系統(tǒng)符合使用習(xí)慣,準(zhǔn)確率數(shù)據(jù)如表3所示,運(yùn)行等待時(shí)間如表4所示:
表3 模型準(zhǔn)確率Tab.3 Model accuracy
表4 等待時(shí)間Tab.4 Time spent during process
計(jì)算公式如下:
準(zhǔn)確率=(預(yù)測(cè)正確的正例數(shù)+預(yù)測(cè)正確的負(fù)例數(shù))/(測(cè)試集中的總條數(shù))
正例準(zhǔn)確率=預(yù)測(cè)正確的正例數(shù)/測(cè)試集中的正例條數(shù)
負(fù)例準(zhǔn)確率=預(yù)測(cè)正確的負(fù)例數(shù)/測(cè)試集中的負(fù)例條數(shù)