郝光兆 楊靜 吳迪 生龍
摘要:針對傳統教育在程序設計語言教學中的問題,為提高學生自主學習效率,突出學生的主體地位,設計和實現了一個基于自然語言處理技術的“Python程序設計”課程的智能答疑系統。該系統使用Python語言和Mongodb數據庫開發,采用Django模塊實現前端可視化。系統一方面幫助學生自主查詢“Python程序設計”課程相關知識,自動將準確、簡單、高效的答案返回給學習者,另一方面還支持教師進行輔助課程答疑。該系統的設計和實現突破了傳統答疑方式在時間、空間等因素的限制,是互聯網技術與教育領域深度融合背景下的教學成果。
關鍵詞:Python程序設計;智能答疑系統;自然語言處理
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)07-0086-03
Abstract: In view of the problems of traditional education in programming language , and highlighting the role of students in education, an intelligent Question-answering Systemof Python programming course based on natural language processing technology is designed and implemented in order to improve students' independent learning efficiency and highlight their predominant status. The system was developed in Python and the database used Mongodb, the module of Django is used to realize visualization. The system not only supports students to query the knowledge of Python programming course independently, which can return accurate, simple and efficient answers, but also supports asynchronous Question-answering. The system is the achievement under the background of deep integration of Internet technology and education field.
Key words: Python programming language; Question Answering System; natural language processing
1 背景
近幾年,隨著“互聯網+”的提出,我國不斷將互聯網的創新成果與教育領域深度融合,推動技術進步、提升互聯網在教育方面的創新力。而頗具聲勢的教育改革浪潮中,慕課(Massive Open Online Course, MOOC)和私播課(Small Private Online Courses, SPOC)等線上教育方式一時風靡全國,打破了傳統教育模式,這種教學手法讓學生更容易與教師交流、溝通。然而,每個學生的新觀點、新思維、新問題層出不窮,為更充分調動學生的積極性,培
養學生的學習興趣,使之有較強的獨立性和學習動機,突出學生的主體作用,采用答疑式教學,對課程來說,無疑是一條可取的新途徑[1-2]。
智能答疑系統(Question Answering System, QAS)又稱自動問答系統,是新一代信息檢索系統[3],它與慕課等線上教育不同,需要授課老師將教學知識、難題、易錯題整理保存到知識庫,然后學生可以根據自己所需答疑問題通過自主查詢系統獲取問題答案。由于Python語言井噴式發展,學習者眾多,本校就高校開展的“Python程序設計”課程自主設計和實現了智能答疑系統,該系統的設計與實現能夠為學習者解惑答疑,解決其入門難窺門徑的現實問題,提高學生自主學習效率,助其夯實基礎,同時也能節省教學資源。
2 “Python程序設計”課程智能答疑系統設計與實施
2.1 系統總體設計
本系統的基本架構可以分為用戶層、分析層、數據層三層。其中用戶層是用戶與系統交互的接口,負責用戶對問題的鍵入和系統檢索出的答案返回給用戶;分析層主要是對用戶鍵入的問題進行處理,包括對問句分析進行預處理,然后通過信息檢索計算相似度值確定最佳答案;數據層主要負責對本系統的停用詞庫、同義詞庫、Python知識問答對知識庫等的存儲。
“Python程序設計”課程智能答疑系統的基本流程如圖1所示,包括問句分析、信息檢索以及生成答案三個部分[4]。系統采用Python語言開發,利用不同自然語言處理技術分別對三大模塊進行分析和處理。Python語言jieba庫是常用的分詞工具包,其準確率已經達到95%以上,用于對問句分析階段的分詞處理和詞性標注;過濾停用詞是特征詞提取的重要流程之一,系統采用哈爾濱工業大學停用詞擴展表將句子中助詞、語氣詞、標點、虛詞等信息量較低的詞匯進行過濾;句子是短語的承載者,句子的語義可由句子的特征詞來表達,本系統采用基于統計與語義信息相結合的算法實現特征詞的提取。信息檢索的功能主要是用預處理后的關鍵詞與知識庫進行匹配檢索,在候選集中利用改進的基于知網(Hownet)的語義相似度計算從知識庫中匹配問題答案[5],相似度值大于閾值則直接輸出,否則轉入等待答疑模塊等待教師答疑。Mongodb數據庫是基于分布式文件存儲的數據庫,支持的數據結構松散,適合作為本系統的基于問答對的知識庫存儲。用戶層的交互是基于Django的B/S模式,這種輕量級前端框架使得前后端交互更加輕便,自助式的后臺管理的優點也讓教師端管理界面的搭建更便捷,便于將主要精力投入到其他研究和開發中。
2.2 系統主要功能
“Python程序設計”智能答疑系統主要面向高校Python程序設計學習者,系統用戶角色包括學生和教師,其中學生主要功能包括登錄模塊、自主答疑模塊、我要答疑和我的問題模塊,教師端包括用戶管理管理模塊、等待答疑模塊以及知識庫更新模塊[6]。具體如圖2所示:
2.2.1 學生端
1)登錄模塊。根據賬號和密碼登錄系統,可用于登記學生登錄信息,準確記錄學生檢索日志。該賬號和密碼是教師端已為授課學生注冊過的賬戶和密碼。
2)自主答疑模塊。本模塊是答疑系統的核心模塊,支持學生檢索鍵入的Python程序設計相關知識自然語句,按照指定規則與知識庫進行匹配,相似度值大于閾值0.8,直接將準確、詳細、簡單的答案返回給用戶。否則,系統自動提示問題返回失敗,詢問學生用戶是否將問題提交到“我要求助”模塊。
3)我要求助模塊。學生在本模塊中可將經自主答疑模塊無法正確查詢答案,可提交保存到此模塊等待教師答疑。
4)我的問題模塊。本模塊供學生查看所提問的問題列表以及教師答疑問題的答案。
2.2.2 教師端
1)用戶管理模塊。開發人員指定唯一系統管理員賬號,系統管理員可分配同權限功能教師端賬號,但不可消除系統管理員,教師可為學生分配賬號密碼,也可以拒絕待申請賬號和刪除已有賬號。
2)等待答疑模塊。教師在等待答疑列表中可以查看學生在“我要求助”問題的列表,教師可以對問題列表中的問題進行回答。本模塊有利于教師掌握學生對課程掌握薄弱之處,也利于補充知識庫的知識點。
3)知識庫更新模塊。教師在本端可將優質問答定期更新到知識庫,利于知識庫的補充和完善,使之能有效提高學生對知識檢索匹配結果,讓學生在答疑中效率更高,對教師的依賴性更少。
2.3 系統的知識庫建設
知識庫的全面是系統實現答疑功能的重要保障。選擇“百度知道”“百度百科”“知乎”等為知識來源,利用Scrapy組件編寫的網絡爬蟲進行數據抓取[7-8]。共抓取到Python基礎知識、程序設計、常見問題、Bug調試信息等3萬余對,同時結合本校開設的“Python程序設計”課程的知識整理成問答對共1600余對一并存入知識庫。教師答疑問題功能利于動態構建知識庫,根據學生的我要答疑列表問題,可不斷更新問答對知識,以保證知識庫的充分與全面。具體的知識庫組建模型如圖3所示。
3 實驗測評
本系統知識內容主要涵蓋了“Python程序設計”課程概念類、編程常見問題類、Bug調試類等多類問題,能有效滿足學生對Python程序設計課程的自主答疑需求。系統答疑問題返回答案準確性是本系統智能性的重要體現,本實驗測試用例隨機從互聯網上抽取上述3類Python程序設計知識若干道,來測試答案返回準確率。由于相似度匹配值小于閾值導致無返回結果按照返回答案錯誤處理,當出現有爭議答案時,采用少數服從多數的原則進行評判。評判結果如柱狀圖所示,藍色柱狀圖代表該類實驗用例問題總數,橙色柱狀圖代表該類 實驗用例正確答案返回總數,綜合答疑答案返回正確率達到85%以上。
經實驗數據可以看出,概念類的實驗結果較后兩者好,但正確答案返回問題總數正確率與理想狀態仍有差距。這是由于程序設計中編程類與Bug調試類問題靈活性高,知識庫的存儲不夠全面,導致后者較前面準確率差。中文分詞等自然語言處理技術對系統準確率也有一定影響。但系統功能目前還在不斷完善,教師對學生“我要求助”的問題作答后可不斷更新知識庫,可以在一定程度上提高系統答疑準確率。同時本系統的研究應用不僅僅局限于“Python程序設計”課程的答疑,我校對其他課程的知識庫也在采集研究開發中。
4 結束語
“Python程序設計”課程智能答疑系統是以互聯網為基礎設施的在教育領域的創新發展新成果,不僅能高效答疑Python程序設計知識問題,還能充分發揮學生的主觀能動性去發現問題、解決問題,潛移默化地將答疑式學習方式融入學生思想當中,這也利于其他學科的學習。同時基于數字化、網絡化的答疑平臺突破了教學時空和設備的限制,也能避免教師重復勞動,有效減輕教師工作壓力。此外,系統的可延展性豐富,在將來的工作中,會不斷對系統進行更新和維護,讓系統精度更高,涉及課程數目更廣,努力讓系統在高校中發揮更大的作用。
參考文獻:
[1] 宋海萍, 范麗娟. 論答疑式教學的教育價值及有效策略[J]. 大學教育, 2013(21): 138-140.
[2] 倪宇虹, 韓秀娟. 試析開放教育中答疑講解式教學模式[J]. 吉林廣播電視大學學報, 2018(3): 5-6.
[3] 王東升, 王衛民, 王石, 等. 面向限定領域問答系統的自然語言理解方法綜述[J]. 計算機科學, 2017, 44(8): 1-8, 41.
[4] 陳志云, 商月, 錢冬明. 基于知識圖譜的智能答疑系統研究[J]. 計算機應用與軟件, 2018, 35(2): 178-182.
[5] 孫潤志, 于放. 基于《知網》的詞語相似度計算方法[J]. 計算機系統應用, 2015, 24(7): 155-158.
[6] 張曉瑩, 盧衛, 程一艦, 等. 面向慕課的在線SQL自動評測系統及應用[J]. 實驗技術與管理, 2018, 35(4): 16-22.
[7] 韓貝, 馬明棟, 王得玉. 基于Scrapy框架的爬蟲和反爬蟲研究[J]. 計算機技術與發展, 2019(2): 1-5.
[8] 李倩倩. 限定域問答系統自動建庫及檢索研究與系統設計實現[D]. 哈爾濱: 哈爾濱工業大學, 2017.
【通聯編輯:謝媛媛】