顧涵文
(北京語言大學(xué)信息科學(xué)學(xué)院,北京 100083)
隨著電子設(shè)備的普及,越來越多的人開始使用在電子設(shè)備上打字的方式替代傳統(tǒng)的手寫記筆記方式,使用打字方式記錄下來的知識具有易于修改,便于整理的特點,同時在電子設(shè)備上進(jìn)行知識的記錄也便于知識的分享傳播。近年來NLP 領(lǐng)域迅速發(fā)展,自然語言處理技術(shù)趨于成熟,將文本檢錯和文本分類等技術(shù)應(yīng)用于記知識分享系統(tǒng)中,可以極大提高使用者的知識記錄效率。本文構(gòu)建一個基于NLP 技術(shù)的知識分享系統(tǒng),讓用戶能快速對記錄的內(nèi)容進(jìn)行分類,提取關(guān)鍵詞等操作,提高知識整理的效率。
Springboot 基于Spring4.0 技術(shù)開發(fā),繼承了Spring 技術(shù)AOP(面向切面編程)、DI(依賴注入)、IOC(控制反轉(zhuǎn))等優(yōu)秀特性,同時使用特定方式來配置,簡化了Spring 應(yīng)用的開發(fā)過程,同時,Springboot 也整合大量的框架,有效避免了依賴包的版本沖突,讓開發(fā)者能更關(guān)注于業(yè)務(wù)邏輯。
MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡單的XML 或注解來配置和映射原生信息,將接口和Java 的POJOs (Plain Ordinary Java Object, 普通的Java 對象)映射成數(shù)據(jù)庫中的記錄。Mybatis-Plus 是一個Mybatis 的增強(qiáng)工具,它在Mybatis 的基礎(chǔ)拓展了需多功能,提高了開發(fā)效率。
Vue 是輕量級的前端漸進(jìn)式框架,采用自底向上增量開發(fā)的設(shè)計,使開發(fā)者將注意力集中在視圖層,也易于與第三方庫或已有項目整合。
ElementUI 是一套為開發(fā)者、設(shè)計師和產(chǎn)品經(jīng)理準(zhǔn)備的基于Vue 2.0 的桌面端組件庫,由餓了么團(tuán)隊維護(hù),是最流行的vue 框架之一。
本系統(tǒng)主要目標(biāo)用戶為學(xué)生、教師等知識工作者。以學(xué)生為例,學(xué)生在學(xué)習(xí)的過程中需要通過回顧筆記的方式來鞏固自己的學(xué)習(xí)成果,在查看筆記的過程中往往需要歸納重點,并按照知識內(nèi)容對文章進(jìn)行分類,通過NLP 技術(shù)對文本生成標(biāo)簽,可以快速幫助學(xué)生對筆記進(jìn)行整理和復(fù)習(xí),同時,學(xué)生在記錄筆記的過程中也會偶爾出現(xiàn)一些小錯誤,如錯別字等,利用NLP 技術(shù)可以迅速發(fā)現(xiàn)這些錯誤,糾正學(xué)生錯誤的用詞習(xí)慣。本系統(tǒng)使用NLP 技術(shù),可以在用戶記錄筆記后根據(jù)筆記內(nèi)容對筆記進(jìn)行自動分類與自動糾錯。在筆記記錄之后,學(xué)生之間還存在分享的需求,本系統(tǒng)支持將筆記通過系統(tǒng)直接分享或者以pdf 或png 格式導(dǎo)出,通過系統(tǒng)分享之后其他用戶可以在對應(yīng)筆記的討論區(qū)下進(jìn)行討論,也可以下載筆記,對筆記進(jìn)行評分。同時,學(xué)生還有可能迫切需要某一領(lǐng)域的筆記,針對這種情況,同學(xué)可以進(jìn)入任務(wù)管理頁面,發(fā)布任務(wù)并設(shè)置相應(yīng)的回報,在系統(tǒng)發(fā)布任務(wù)后系統(tǒng)會自動將任務(wù)信息發(fā)送給在相關(guān)標(biāo)簽下有過良好創(chuàng)作內(nèi)容的用戶,當(dāng)用戶完成學(xué)生提出的任務(wù),即可獲得相應(yīng)獎勵。有時候?qū)W生會討論同一課題或者上同一門課程,這個時候可以在系統(tǒng)上新建學(xué)習(xí)小組。在學(xué)習(xí)小組中的筆記資料將由小組成員共享。由需求分析產(chǎn)生的用例圖如圖1 所示。
圖1 用例圖
在業(yè)務(wù)背景下進(jìn)行調(diào)研后,抽取出領(lǐng)域模型如圖2 所示。
圖2 領(lǐng)域模型圖
對比其他筆記分享系統(tǒng),本系統(tǒng)的特色就是采用了NLP技術(shù)對用戶記錄的筆記進(jìn)行了文本糾錯,便于用戶及時發(fā)現(xiàn)文本中的錯誤并進(jìn)行修改,文本糾錯功能使用了自然語言處理領(lǐng)域常用BERT (Bidirectional Encoder Representations from Transformers)。先訓(xùn)練BERT 模型,再將需要糾錯的語句傳入已經(jīng)訓(xùn)練好的BERT 模型中,獲取句子中每個位置上詞語的候選置信度,同時計算每個位置上候選詞與原詞的相似度,然后獲得糾錯概率并將詞語按概率重新排序,判斷排名第一位的詞語糾錯概率是否超過閾值,然后再決定是否提示用戶進(jìn)行筆記修改。筆記糾錯流程圖如圖3 所示。
圖3 自動糾錯流程圖
4.2.1 記錄筆記順序圖
用戶在記筆記頁面輸入筆記并點擊提交,應(yīng)用控制在收到筆記內(nèi)容后將會檢查筆記信息并將筆記內(nèi)容傳遞給核對控制對象,核對控制對象向筆記目錄對象獲取筆記目錄信息,再由筆記目錄對象獲取筆記信息,同時核對控制調(diào)用NLP 服務(wù)API 獲取糾錯信息及分類信息,最后,當(dāng)筆記信息,筆記目錄信息與糾錯信息及分類信息返回,應(yīng)用控制對象會將成功提交的消息返回至知識記錄頁面,順序圖如圖4 所示。
圖4 記錄筆記順序圖
4.2.2 知識分享順序圖
用戶在知識分享頁面點擊分享筆記,應(yīng)用控制在確認(rèn)消息內(nèi)容后將會將請求傳遞給核對控制對象,核對控制對象向分享目錄對象獲取筆記分享目錄信息,再由分享目錄對象向分享內(nèi)容對象獲取分享目錄信息,分享內(nèi)容對象再向筆記對象獲取筆記信息,最后,當(dāng)筆記信息,分享內(nèi)容信息與分享目錄信息返回,應(yīng)用控制對象會將分享成功的消息返回至知識分享頁面,順序圖如圖5 所示。
圖5 知識分享順序圖
4.2.3 任務(wù)功能
4.2.3.1 發(fā)布任務(wù)順序圖。用戶在任務(wù)發(fā)布頁面點擊任務(wù)發(fā)布,任務(wù)發(fā)布頁面向應(yīng)用控制對象確認(rèn)任務(wù)發(fā)布請求,應(yīng)用控制對象再調(diào)用核對控制對象檢查信息,核對控制對象向任務(wù)目錄對象獲取任務(wù)目錄信息,最后任務(wù)目錄對象再調(diào)用任務(wù)信息對象創(chuàng)建任務(wù),順序圖如圖6 所示。
圖6 發(fā)布任務(wù)順序圖
4.2.3.2 完成任務(wù)順序圖。用戶在任務(wù)完成頁面點擊完成任務(wù),頁面向應(yīng)用控制對象提交完成,應(yīng)用控制向核對控制對象發(fā)送檢查信息,核對控制對象向任務(wù)目錄對象獲取任務(wù)目錄信息,任務(wù)目錄對象向任務(wù)信息對象獲取任務(wù)信息,任務(wù)信息對象再向任務(wù)發(fā)布用戶請求返回任務(wù)是否達(dá)到完成標(biāo)準(zhǔn)信息,順序圖如圖7 所示。
圖7 完成任務(wù)順序圖
本系統(tǒng)采用經(jīng)典的三層架構(gòu)模式,由控制層(Controller)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),服務(wù)層(Service)參負(fù)責(zé)業(yè)務(wù)邏輯的實現(xiàn),數(shù)據(jù)訪問層(Dao)層進(jìn)行數(shù)據(jù)的增刪改查。在具體的業(yè)務(wù)中體現(xiàn)為用戶輸入筆記后由Controller 層將筆記轉(zhuǎn)發(fā)至Service 層,Service 層負(fù)責(zé)調(diào)用API 返回筆記的糾錯建議及文章標(biāo)簽與分類建議,并調(diào)用Dao 層進(jìn)行筆記數(shù)據(jù)的存儲,系統(tǒng)架構(gòu)圖如圖8 所示。
圖8 系統(tǒng)架構(gòu)圖
系統(tǒng)主要實現(xiàn)了記錄筆記與分享管理等功能。系統(tǒng)主頁面如圖9 所示,包括我的筆記,分享管理,學(xué)習(xí)小組,任務(wù)管理以及賬戶信息板塊。
圖9 系統(tǒng)主頁面圖
本文使用面向?qū)ο蟮脑O(shè)計思想,通過需求分析,確定了知識分享系統(tǒng)的用例模型與領(lǐng)域模型,進(jìn)而繪制了順序圖,確定了系統(tǒng)架構(gòu),最后使用Springboot 等技術(shù)對系統(tǒng)進(jìn)行了實現(xiàn)。使用此系統(tǒng)對筆記進(jìn)行記錄,對比一般的糾錯系統(tǒng),本系統(tǒng)可以實現(xiàn)自動糾錯,知識分享,小組協(xié)作等功能,提高了工作效率,豐富了用戶體驗。