摘 要:為解決在線課程學(xué)習(xí)過程中所遇問題得不到及時(shí)解答的情況,設(shè)計(jì)并實(shí)現(xiàn)在線課程自動(dòng)問答系統(tǒng)。首先收集課程中真實(shí)問題作為訓(xùn)練數(shù)據(jù)集,其次基于BERT模型構(gòu)建雙塔神經(jīng)網(wǎng)絡(luò)模型,將問題成對(duì)輸入模型,以語義相似問題的特征向量盡可能相似為訓(xùn)練目的。訓(xùn)練模型中的參數(shù)后,準(zhǔn)確率和F1-Score性能指標(biāo)上的值分別達(dá)到0.931和0.918。使用訓(xùn)練好的模型將問題集和學(xué)習(xí)者提出的問題都轉(zhuǎn)為特征向量,使用Faiss召回問題特征向量集中與學(xué)習(xí)者的問題最相似的問題,最后返回最相似的問題所對(duì)應(yīng)的答案。系統(tǒng)具有較高的準(zhǔn)確性和有效性,能夠?yàn)樵诰€課程學(xué)習(xí)提供支持。
關(guān)鍵詞:自動(dòng)問答系統(tǒng);BERT模型;語義相似度;在線學(xué)習(xí)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2024)20-0083-04
Design and Implementation of an Automatic Question and Answer System Based on BERT Model
ZHOU Qiaokou
(School of Information Engineering, Nanjing Normal University Taizhou College, Taizhou 225300, China)
Abstract: To address the situation where problems encountered during online course learning cannot be answered in a timely manner, an automatic question and answer system is designed and implemented. Firstly, real problems in the course are collected as training datasets. Then, a two-tower neural network model is constructed based on the BERT model. It enters the problem in pairs into the model, and the training objective is to train the feature vectors of semantically similar questions to be as similar as possible. After training the parameters of model, the values on accuracy and F1-Score performance indicators reaches 0.931 and 0.918, respectively. This paper uses the trained model to convert the problem sets and the questions proposed by learners into feature vectors, and uses Faiss to recall the most similar questions to the learner's questions in the feature vector sets. Finally, it returns the corresponding answers of the most similar questions. The system has high accuracy and effectiveness, which can provide support for online course learning.
Keywords: automatic question and answer system; BERT model; semantic similarity; online learning
0 引 言
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,催生了在線教育的興起。在線教育以網(wǎng)絡(luò)為媒介實(shí)現(xiàn)教學(xué)資源的共享和教學(xué)活動(dòng)的開展。具有受眾面廣、可反復(fù)學(xué)習(xí),沒有空間與地域的限制,教學(xué)資源豐富、多樣等優(yōu)點(diǎn),已經(jīng)成為當(dāng)下主流的學(xué)習(xí)方式之一[1]。但也正因?yàn)樵诰€教育自身時(shí)空分離的特性,使得學(xué)生與教師時(shí)空分離,教師無法像傳統(tǒng)課堂教學(xué)那樣及時(shí)解答學(xué)生在線學(xué)習(xí)過程中遇到的問題,嚴(yán)重影響學(xué)習(xí)者學(xué)習(xí)的積極性,從而影響學(xué)習(xí)者的學(xué)習(xí)效率和質(zhì)量[2-3]。目前解決在線學(xué)習(xí)過程中遇到的問題有以下幾種方案:1)采用搜索引擎,但網(wǎng)絡(luò)中無關(guān)信息較多,費(fèi)時(shí)費(fèi)力往往找不到最佳答案;2)論壇或聊天室的形式,但常常都是學(xué)生之間相互問答,教師很少參與,且有些問題也無法得到及時(shí)回復(fù)[4];3)自動(dòng)問答系統(tǒng),普遍采用FAQ(Frequently-Asked Questions)列表問答的形式回答學(xué)生的問題,但列表中的問題有限,且并不能支持學(xué)生個(gè)性化問答[5]。基于知識(shí)圖譜的問答系統(tǒng),依賴專業(yè)領(lǐng)域的知識(shí)圖譜,需要進(jìn)行大量的數(shù)據(jù)標(biāo)注、實(shí)體識(shí)別和關(guān)系抽取工作,過程較為復(fù)雜[6]。另一種基于神經(jīng)網(wǎng)絡(luò)的問答系統(tǒng)比較受歡迎,通過Embedding的方式表示問題,從語料庫中學(xué)習(xí)出問題的語義進(jìn)行問題和答案的匹配[7]。
綜上所述,自動(dòng)問答系統(tǒng)是解決在線課程問題無法及時(shí)解答的有效途徑之一。本文探討基于BERT模型構(gòu)建自動(dòng)問答系統(tǒng)的相關(guān)技術(shù),主要思路為:首先利用BERT模型將問題轉(zhuǎn)為語義向量,然后使用雙塔神經(jīng)網(wǎng)絡(luò)模型學(xué)習(xí)問題中潛在的句法和語義特征,更好的理解問題,將問題轉(zhuǎn)為特征向量,保存到問題特征集文件中。當(dāng)學(xué)習(xí)者提問時(shí),使用訓(xùn)練好的模型將問題轉(zhuǎn)為特征向量,使用Faiss召回問題集中與學(xué)習(xí)者所提問題最相似的問題,最后返回匹配問題所對(duì)應(yīng)的答案。使用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)提取問題特征,減少了FAQ通過復(fù)雜算法提取特征方面的不足,同時(shí)解決傳統(tǒng)FAQ不支持學(xué)生個(gè)性化問答的問題,對(duì)幫助學(xué)習(xí)者完成在線學(xué)習(xí)有著重要的意義。
1 相關(guān)技術(shù)
1.1 BERT模型
BERT是一種用于自然語言處理的深度學(xué)習(xí)模型。模型整體結(jié)構(gòu)由多層雙向的Transformer中的Encoder構(gòu)成,整體框架如圖1所示。這種雙向性使得BERT能夠更好地理解詞的上下文關(guān)系,從而學(xué)到更加豐富的語言表示[8]。BERT模型的訓(xùn)練過程分為Pre-training和Fine-tuning兩個(gè)階段。Pre-training階段,模型首先在設(shè)定的通用任務(wù)上,利用無標(biāo)簽的數(shù)據(jù)進(jìn)行訓(xùn)練。訓(xùn)練好的模型獲得了一套初始化參數(shù)之后,再到Fine-tuning階段,模型被遷移到特定的任務(wù)中,利用有標(biāo)簽的數(shù)據(jù)繼續(xù)調(diào)整參數(shù),直到在特定任務(wù)上重新收斂。BERT模型有兩種主要的預(yù)訓(xùn)練模型如BERT-Base和BERT-Large,兩種預(yù)訓(xùn)練模型有著不同數(shù)目的Encoder layers、Attention heads以及Hidden size,適用不同的應(yīng)用場景。文中的自動(dòng)問答系統(tǒng)中使用BERT-Base預(yù)訓(xùn)練模型構(gòu)建神經(jīng)網(wǎng)絡(luò)模型,其包含12個(gè)Encoder layers、12個(gè)Attention heads、Hidden size為768,總共約有110M個(gè)參數(shù)[9]。
1.2 Faiss框架
Faiss是Facebook AI團(tuán)隊(duì)開發(fā)的一種高效的相似性搜索和聚類的工具[10]。它能夠快速處理大規(guī)模的數(shù)據(jù),并支持高維空間中進(jìn)行相似性搜索,對(duì)于10億量級(jí)的索引可以做到毫秒級(jí)檢索的性能。Faiss的使用分為三個(gè)步驟:第一步創(chuàng)建索引,使用faiss.Index類創(chuàng)建索引;第二步插入向量,使用faiss.Index類的add()方法將向量矩陣插入到索引中;第三步向量搜索,使用faiss.Index類的search()方法在索引中搜索與給定向量最相似的k個(gè)向量,k為用戶指定的參數(shù)。為了平衡搜索效率、占用內(nèi)存、準(zhǔn)確率等性能指標(biāo),F(xiàn)aiss提供了多種索引類型,例如:IndexFlatL2、IndexIVFFlat、IndexIVFPQ等。文中因?yàn)閿?shù)據(jù)集較小,追求較高的準(zhǔn)確率,因而使用簡單直接的IndexFlatL2索引。
2 自動(dòng)問答系統(tǒng)的設(shè)計(jì)
2.1 數(shù)據(jù)集的構(gòu)建
沒有公開的在線課程問答系統(tǒng)的數(shù)據(jù)集,需要自行收集整理在線課程學(xué)習(xí)者的問題,在此基礎(chǔ)上通過規(guī)范格式、過濾冗余等操作構(gòu)建用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練的數(shù)據(jù)集。以智能終端應(yīng)用開發(fā)課程為例,收集教學(xué)過程中學(xué)生的問題1 000條,這些問題中存在較多的重復(fù)問題,問題不同但表達(dá)的意思相同,除去重復(fù)問題整理后得到800條問題,然后由任課教師撰寫每個(gè)問題的答案,將問題和答案通過編號(hào)一一對(duì)應(yīng)起來,分別保存在Q_list.csv和A_list.csv兩個(gè)文件中。對(duì)于Q_list.csv中的問題進(jìn)一步處理,為每個(gè)問題生成一個(gè)表達(dá)不同但語義相同的問題,同時(shí)為每個(gè)問題隨機(jī)的匹配另一個(gè)不相關(guān)的問題,增加label項(xiàng),如果兩個(gè)問句語義相同,則label值為1,否則label值為-1,共計(jì)1 600條數(shù)據(jù),將整理后的問題文件保存為question_data.csv。具體格式及部分內(nèi)容如表1所示。
2.2 構(gòu)建神經(jīng)網(wǎng)絡(luò)模型
直接使用BERT模型將問題轉(zhuǎn)為特征向量用于計(jì)算問題相似度效果并不理想,需要根據(jù)具體任務(wù)搭建合適的下游模型,文中采用PyTorch深度學(xué)習(xí)框架搭建神經(jīng)網(wǎng)絡(luò)模型。首先創(chuàng)建torch.utils.data.Dataset的子類,從question_data.csv文件中加載數(shù)據(jù)集,使用預(yù)訓(xùn)練模型“bert-base-chinese”加載token對(duì)sentenceA和sentenceB分別進(jìn)行分詞和編碼為每個(gè)句子生成:input_ids、token_type_ids以及attention_mask三個(gè)張量。將編碼后的sentenceA和sentenceB分別送入BERT模型,抽取模型最后一層輸出的隱藏狀態(tài)序列其形狀為[512*768],512為設(shè)定的句子長度,768為句子中每個(gè)詞的向量維度;然后將兩個(gè)句子的last_hidden_state送入到池化層,將特征向量變?yōu)閇1*768]維,最后將兩個(gè)句子的特征向量送入CosineEmbeddingLoss層計(jì)算損失,然后通過反向傳播更新模型參數(shù),模型的訓(xùn)練過程如圖2所示。
模型中使用CosineEmbeddingLoss計(jì)算sentenceA和sentenceB之間的損失,其主要思想是:將兩個(gè)句子的向量投影到單位超球面,然后通過計(jì)算這兩個(gè)向量的余弦相似度來度量它們之間的相似性。預(yù)選相似度的值范圍從-1到1,其中1表示完全相似,-1表示完全不相似。計(jì)算公式如:
(1)
其中M為一個(gè)控制邊際的超參數(shù),用于確保Anchor樣本與Positive樣本之間的相似度高于Anchor樣本與Negative樣本之間的相似度,可取值范圍為:[-1,1],本文實(shí)驗(yàn)中取值的0.3。
模型中使用TrainingArguments類統(tǒng)一設(shè)置超參數(shù),其中主要的參數(shù)設(shè)置如表2所示。
其中train_batch_size和eval_batch_size分別表示訓(xùn)練和驗(yàn)證時(shí)的批次大小。evaluation_strategy表示評(píng)估策略,其值可以為steps或者epoch文中設(shè)置為steps,表示每個(gè)驗(yàn)證階段結(jié)束后進(jìn)行評(píng)估。learning_rate表示學(xué)習(xí)率。metric_for_best_model用于指定比較不同模型的度量標(biāo)準(zhǔn)。weight_decay表示正則化參數(shù),用于抑制模型的過擬合,提高模型的泛化性。
在評(píng)估模型的性能時(shí)采用準(zhǔn)確率(Accuracy)和F1-Score兩個(gè)指標(biāo)。準(zhǔn)確率反映了正確分類的樣本占總樣本的比例,F(xiàn)1-Score是精準(zhǔn)率(Precision)和召回率(Recall)的加權(quán)調(diào)和平均,兩個(gè)指標(biāo)的定義如下:
Accuracy=(TP+TN)/(TP+FP+TN+FN) (2)
F1-Score=2(Precision×Recall)/(Precision+Recall)(3)
其中TP為真正例:樣本為正例被正確預(yù)測(cè)為正例;TN為真反例:預(yù)測(cè)為負(fù)樣本,真實(shí)也為負(fù)樣本;FP為假正例:樣本反例被錯(cuò)誤預(yù)測(cè)為正例,F(xiàn)N為假反例:樣本正例被錯(cuò)誤預(yù)測(cè)為反例。
2.3 模型訓(xùn)練及結(jié)果分析
實(shí)驗(yàn)中,模型的訓(xùn)練次數(shù)Epoch設(shè)置為4,每個(gè)Epoch中batch_size為32,即每次輸入32條數(shù)據(jù)進(jìn)行訓(xùn)練,每10個(gè)Batch_size輸出一次性能指標(biāo)值,訓(xùn)練結(jié)果如圖3所示。第1個(gè)Epoch訓(xùn)練結(jié)束后,Accuracy和F1-Score分別為:0.92和0.889,因?yàn)锽ERT為預(yù)訓(xùn)練模型,已經(jīng)包含了大量語言、語句、語義的理解,使得模型整體性能較好。當(dāng)接近第3個(gè)Epoch時(shí),Accuracy和F1-Score先后獲得最高值,分別為:0.931和0.918,隨后兩個(gè)指標(biāo)趨于平穩(wěn),模型逐步收斂,比訓(xùn)練初期模型的性能有所提升,表明在具體任務(wù)中對(duì)BERT模型的二次訓(xùn)練能夠提升模型的性能。
模型訓(xùn)練完畢后,使用torch.save()方法將訓(xùn)練好的模型保存到磁盤文件命名為DualModel.model。下一步,定義build_features()方法按批次從數(shù)據(jù)集中讀取問題集,進(jìn)行分詞、編碼送入訓(xùn)練好的DualModel模型將問題集轉(zhuǎn)為問題特征向量集,并將問題特征向量集保存到磁盤文件命名為Features.pt。
2.4 問題匹配及回答
當(dāng)學(xué)習(xí)者提出問題時(shí),首先通過torch.load()方法從磁盤中加載DualModel模型以及Features問題特征向量集。使用Faiss創(chuàng)建IndexFlatL2索引,將Features問題特征向量集插入到索引中。然后將學(xué)習(xí)者的問題進(jìn)行分詞、編碼經(jīng)過DualModel模型轉(zhuǎn)為問題特征向量。使用index.search()方法找出與學(xué)習(xí)者所提問題最相似的問題向量,返回其問題編號(hào)。最后根據(jù)問題編號(hào)從A_list.csv文件中尋找問題編號(hào)對(duì)應(yīng)的答案,返回答案給學(xué)習(xí)者,問題匹配流程如圖4所示。
2.5 模型的部署與應(yīng)用
自動(dòng)問答系統(tǒng)分為客戶端和服務(wù)器端兩個(gè)部分。客戶端為基于Android平臺(tái)開發(fā)的用戶問答APP,服務(wù)器端為使用Flask框架部署的“雙塔神經(jīng)網(wǎng)絡(luò)模型”。APP使用OkHttp3第三方庫處理網(wǎng)絡(luò)請(qǐng)求,當(dāng)用戶提問時(shí),將用戶問題封裝到JSONObject對(duì)象中再序列化為字符串,通過Request對(duì)象以POST的方式發(fā)送給服務(wù)器。服務(wù)器的Flask執(zhí)行@app.route路由定義的post()方法,從請(qǐng)求中解析出用戶的問題,發(fā)送給模型,并將模型返回的問題答案使用json.dumps()方法轉(zhuǎn)為JSON格式的字符串發(fā)送給APP。APP最終從response中解析出問題的答案,顯示到用戶界面。APP運(yùn)行界面如圖5所示。
3 結(jié) 論
本文探討了基于BERT模型設(shè)計(jì)在線課程問答系統(tǒng)的主要思路和關(guān)鍵技術(shù),所實(shí)現(xiàn)的系統(tǒng)具有如下優(yōu)點(diǎn):1)個(gè)性化提問。學(xué)習(xí)者輸入的問題不僅僅是已有數(shù)據(jù)集中的問答對(duì),對(duì)于同一個(gè)問題不同的描述只要表達(dá)的語義相同,那么通過模型轉(zhuǎn)換得到的特征向量就具有較高的相似度,從而為學(xué)習(xí)者返回最合適的答案。2)問題回答的有效性。問答系統(tǒng)中用于訓(xùn)練的數(shù)據(jù)集均為在線課程中學(xué)習(xí)者所提的真實(shí)問題,確保問題的真實(shí)性和答案的有效性。
系統(tǒng)同樣存在一些不足:1)客戶端界面不是很友好。2)問題回答的準(zhǔn)確率還有上升的空間。下一步將擴(kuò)大訓(xùn)練數(shù)據(jù)集,嘗試多種模型的融合,進(jìn)一步提升問答系統(tǒng)的性能,同時(shí)改善用戶界面,提升用戶體驗(yàn),更好的支持在線課程的學(xué)習(xí)。
參考文獻(xiàn):
[1] 葛巖,崔璐,郭超.在線學(xué)習(xí)需求分析及優(yōu)化策略研究 [J].高等工程教育研究,2023(6):125-131.
[2] 倪紅軍,周俊雯,葉苗.課程思政背景下移動(dòng)Web綜合開發(fā)課程建設(shè)的思考與探索[J].北京聯(lián)合大學(xué)學(xué)報(bào),2022,36(2):35-39.
[3] 趙志立,陸福相.以學(xué)生為中心的個(gè)性化在線教育模式探討 [J].軟件導(dǎo)刊,2023,22(6):312-316.
[4] 閆悅,郭曉然,王鐵君.問答系統(tǒng)研究綜述 [J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2023,32(8):1-18.
[5] 王娜,李杰.基于AHP-熵權(quán)法的FAQ問答系統(tǒng)用戶滿意度評(píng)價(jià)研究——以高校圖書館問答型機(jī)器人為例 [J].情報(bào)科學(xué),2023,41(9):164-172.
[6] 楊喆,許甜,勒哲.基于知識(shí)圖譜的羊群疾病問答系統(tǒng)的構(gòu)建與實(shí)現(xiàn) [J].華中農(nóng)業(yè)大學(xué)學(xué)報(bào),2023,42(3):63-70.
[7] 柴夢(mèng)杰.基于LSTM神經(jīng)網(wǎng)絡(luò)在線個(gè)性化問題解答的設(shè)計(jì)研究 [D].上海:上海師范大學(xué),2019.
[8] 何傳鵬,黃勃,周科亮.基于BERT與Loc-Attention的文本情感分析模型 [J].傳感器與微系統(tǒng),2023,42(12):146-150.
[9] DEVLIN J,CHANG M W,LEE K,et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding [J/OL].arXiv:1810.04805 [cs.CL].[2024-02-28].https://arxiv.org/abs/1810.04805.
[10] 戴琳琳,閻志遠(yuǎn),景輝.Insightface結(jié)合Faiss的高并發(fā)人臉識(shí)別技術(shù)研究 [J].鐵路計(jì)算機(jī)應(yīng)用,2020,29(10):16-20.
作者簡介:周巧扣(1982—),男,漢族,江蘇泰州人,副教授,碩士,研究方向:機(jī)器學(xué)習(xí)、移動(dòng)應(yīng)用開發(fā)。