吳中其,陳雋淇,馬啟偉,林芷泳,黃貝苗
(華南師范大學軟件學院,廣東 佛山 528225)
2021 年,中共中央辦公廳國務(wù)院印發(fā)《關(guān)于進一步減輕義務(wù)教育階段學生作業(yè)負擔和校外培訓負擔的意見》[1]。該政策結(jié)合了校外減負及校內(nèi)減負兩個方面,能夠切實地進行減負工作。但與此同時,如何引導中小學生開展探究性學習活動成為當下需要考慮的重要問題。
本文圍繞本系統(tǒng)對系統(tǒng)的功能設(shè)計、深度學習模型、前端架構(gòu)設(shè)計、數(shù)據(jù)庫設(shè)計與后端架構(gòu)設(shè)計這五個方面進行闡述。使用Qt 設(shè)計前端界面,選用GPT-2 模型作為本系統(tǒng)對話模型,采用了Python Flask 框架構(gòu)建后端系統(tǒng)進行本系統(tǒng)的設(shè)計。
科普聊天系統(tǒng)主要分為登錄/注冊、科普聊天、班級學習排名、班級學習情況統(tǒng)計和收藏夾5 個模塊。
(1)登錄/注冊:為滿足系統(tǒng)需要記錄用戶的學習情況并為其提供個性化服務(wù),用戶訪問本系統(tǒng)都需要在該模塊進行登錄。若用戶沒有賬戶,需在該模塊進行注冊。
(2)科普聊天:用戶可以通過語音輸入或者文字輸入的方式與系統(tǒng)進行對話。在對話過程中,系統(tǒng)將通過對用戶輸入的內(nèi)容進行分抽取,結(jié)合數(shù)據(jù)集中的科普背景知識生成流程的回答,通過多輪的對話讓用戶在無形中學習新知識。
(3)班級學習排名統(tǒng)計:該模塊以用戶在科普聊天模塊中所累計的積分為主,用戶的學習時長為輔,對每個用戶進行學習情況排名,以激勵用戶的學習熱情。
(4)學習情況統(tǒng)計:該模塊統(tǒng)計用戶當日的學習情況并實時展現(xiàn)給用戶,同時還將展現(xiàn)同組內(nèi)其他用戶的當日學習情況,通過橫縱對比更加深刻的了解自己的學習情況。
(5)收藏夾:當用戶在和系統(tǒng)對話的過程中,如果用戶覺得系統(tǒng)科普的內(nèi)容自己還未掌握或者科普內(nèi)容值得再次查看即可直接右鍵點擊對話內(nèi)容選擇收藏該對話,并在收藏界面進行查看,同時用戶還可以將不再需要的內(nèi)容取消收藏。
GPT-2 模型[2]由多層單向Transformer 的解碼器部分構(gòu)成,本質(zhì)上是自回歸模型。GPT-2 憑借其穩(wěn)定、優(yōu)異的性能吸引了業(yè)界的關(guān)注。GPT-2 在文本生成上有著驚艷的表現(xiàn),其生成的文本在上下文連貫性和情感表達上都超過了人們的預(yù)期。使用GPT-2 作為我們系統(tǒng)的對話模型具有合理性。
數(shù)據(jù)集方面,本文選取了Zhou 等學者[3]在知識驅(qū)動的中文多輪對話數(shù)據(jù)集KdConv 一文中構(gòu)建的數(shù)據(jù)集。由于KdConv 數(shù)據(jù)集結(jié)構(gòu)與GPT-2 模型的所需的輸入有所不同,因此本文提取了該數(shù)據(jù)集中的有效數(shù)據(jù),并進行了適應(yīng)性修改。
經(jīng)訓練后,模型具備了在流暢應(yīng)答的前提下進行科普的能力,可以滿足大多數(shù)場合中的對話需求。
QT 具有良好的跨平臺特性,能夠支持Microsoft Windows95/98、Microsoft Windows NT、Linux、Solaris、SunOS 等眾多操作系統(tǒng)。除此之外,Qt 具有良好的封裝機制,具有良好的可重用性,能為開發(fā)人員提供遍歷?;谏鲜隼碛?,本文使用Qt 技術(shù)來實現(xiàn)系統(tǒng)的前端模塊。
本項目使用組件化開發(fā),減少代碼冗余,將整個前端項目分成頁面邏輯層、數(shù)據(jù)請求層和路由轉(zhuǎn)發(fā)層。頁面邏輯層負責進行響應(yīng),接收用戶提供的文本數(shù)據(jù);數(shù)據(jù)請求層負責接收并向后端發(fā)送文本數(shù)據(jù),獲取請求結(jié)果;路由轉(zhuǎn)發(fā)層則負責進行頁面跳轉(zhuǎn),以及在每次跳轉(zhuǎn)時驗證用戶信息,阻止無權(quán)限訪問。用戶使用軟件流程圖如圖1 所示。
圖1 用戶使用軟件流程
3.1.1 登錄/注冊模塊設(shè)計
(1)注冊過程。注冊模塊通過前端獲取用戶注冊信息,對信息加密后傳輸?shù)较到y(tǒng)的后臺服務(wù)器中。服務(wù)器進行數(shù)據(jù)合法性驗證后,通過查詢數(shù)據(jù)庫數(shù)據(jù)判斷用戶的注冊信息是否重復,若不重復則動態(tài)生成SQL 語句將用戶信息插入數(shù)據(jù)庫表中,注冊模塊工作流程如圖2 所示。
圖2 用戶注冊模塊工作流程
(2)登錄過程。注冊模塊通過前端獲取用戶登錄信息,并將其輸入信息上傳至后臺服務(wù)器。服務(wù)器進行數(shù)據(jù)合法性驗證后,通過查詢數(shù)據(jù)庫數(shù)據(jù)判斷用戶的賬戶信息是否存在,及登錄口令是否正確,若存在且正確,根據(jù)用戶名簽發(fā)token,默認狀態(tài)下有效期為3h,超過3h 后token 失效,需要重新登錄。圖3 為用戶登錄模塊工作流程。
圖3 用戶登錄模塊工作流程
3.1.2 語音模塊設(shè)計
語音模塊使用Python Pyaudio 工具庫進行基本功能的實現(xiàn),并根據(jù)程序需求封裝為utils/audioManager 模塊。該模塊內(nèi)實現(xiàn)了申請音源輸入設(shè)備、申請音源輸出設(shè)備、寫音頻文件及讀音頻文件。其中utils/audioManager.recording 方法實現(xiàn)了自動錄音,可根據(jù)讀取音頻流的能量大小,動態(tài)判斷語音輸入是否結(jié)束。
3.1.3 對話模塊設(shè)計
采用GPT-2 模型實現(xiàn)我們的對話系統(tǒng)模塊,以這種方法構(gòu)建對話系統(tǒng),則可以在生成高信息量同時又不失流利的回復。對話模塊可視化頁面如圖4 所示。
圖4 用戶聊天界面
用戶可以通過在輸入框中打字與機器人聊天。如果語句中出現(xiàn)好的知識點,可以點擊語句進行收藏,收藏后的語句將會存儲在收藏模塊中。此外,每次對話都將會累計得分,并將得分的變化存儲在班級學習情況中。如果使用教師賬號進行登錄,還能夠查看班級學習排名。
本文采用MySQL 關(guān)系型數(shù)據(jù)庫對系統(tǒng)的進行設(shè)計。在該系統(tǒng)的數(shù)據(jù)庫中,本文以學生、教師對象是系統(tǒng)的主體,在數(shù)據(jù)庫中以用戶名作為唯一標識符,并通過用戶名與對話、組(班級)以及收藏進行對應(yīng)。對話設(shè)計為弱實體,依賴于學生實體而存在,屬性包括了一句對話輸入、一句對話輸出以及對話發(fā)生的時間等??破樟奶煜到y(tǒng)數(shù)據(jù)庫的E-R 圖如圖5 所示。整個系統(tǒng)實體的數(shù)據(jù)冗余程度在可接受的范圍內(nèi),基本兼顧了查詢效率和存儲性能。
圖5 科普聊天系統(tǒng)數(shù)據(jù)庫的E-R 圖
在后端框架中,本系統(tǒng)可以分為四個部分:數(shù)據(jù)傳輸層,數(shù)據(jù)處理層,數(shù)據(jù)庫接口層和安全層。其中,數(shù)據(jù)傳輸層負責獲取和提交前端數(shù)據(jù);數(shù)據(jù)處理層負責請求數(shù)據(jù)庫數(shù)據(jù)以及對數(shù)據(jù)進行處理;數(shù)據(jù)庫接口層實現(xiàn)對數(shù)據(jù)庫的訪問接口;安全層負責驗證用戶合法性以及攔截惡意請求等功能。
系統(tǒng)的實現(xiàn)采用了Python Flask 框架,同時配合使用Flask 中的SQLAlchemy 擴展進行ORM 映射,將數(shù)據(jù)庫表映射為Python 中的實體。
安全層中實現(xiàn)了用戶的Token 驗證模塊。前端獲取服務(wù)時需要帶上Token,本模塊會驗證Token 是否過期。對于合法發(fā)放Token 并且Token 有效的請求,后端才會響應(yīng)。
國家“雙減”政策的全面推行,對中小學校教育教學質(zhì)量和服務(wù)水平的要求進一步提高,填補課后服務(wù)需求缺口成為學校的一項重要工作。本文設(shè)計了能夠為中小學生提供優(yōu)質(zhì)的、富有趣味的科普知識資源的系統(tǒng),填補中小學校在課后服務(wù)資源方面的需求和缺口。我們在后續(xù)將會繼續(xù)改進該系統(tǒng),讓本系統(tǒng)在更大程度上更加能貼合個性化發(fā)展需求,進而促進個人的全面發(fā)展。