張思楠 郭佳 陸磊 周海辰 陳菁菁
關(guān)鍵詞:交通安全;青少年;宣傳教育;機器學(xué)習(xí)
1引言
青少年是道路交通事故的主要受害者之一。世界衛(wèi)生組織數(shù)據(jù)表明,2016年約有18萬名兒童死于道路交通事故,道路交通傷害成為所有年齡段的第八大死亡原因,也是5~29歲兒童和年輕人死亡的主要原因。我國每年約有1萬名兒童死于道路交通傷害,道路交通傷害是我國兒童第1位死亡原因。
交通安全意識匱乏,是導(dǎo)致青少年交通安全事故發(fā)生的重要原因之一。青少年交通安全知識宣傳教育是研究者長期關(guān)注的重要研究課題。王麗等[1]發(fā)現(xiàn)不同學(xué)校在交通安全知識與行為等方面存在顯著差異,并提出對低年級學(xué)生應(yīng)該側(cè)重于交通安全知識教育,對高年級學(xué)生注重交通行為規(guī)范。Gao等[2]調(diào)查研究了國內(nèi)五所幼兒園,結(jié)果表明學(xué)生不喜歡閱讀相關(guān)書籍和觀看視頻等傳統(tǒng)的交通教育方式。孟子慕等[3]基于深度學(xué)習(xí)算法,開發(fā)了兒童交通安全人機互動問答機器人。周麗嫦等[4]通過設(shè)計交通安全游戲,加強幼兒的交通安全意識。
首先,現(xiàn)有的校園交通安全教育宣傳大多集中于每年的全國道路交通安全宣傳日,無法達到長效宣傳效果。其次,青少年活潑好動,動手能力強,對枯燥的文本宣傳方式不感興趣。綜上所述,有必要研究開發(fā)一款操作簡單便捷、教育形式靈活多樣、用戶互動參與度高的交通安全宣傳教育軟件,以對青少年進行交通安全教育。
項目組研發(fā)了一種適用于青少年交通安全法規(guī)知識教育的語音對話機器人軟件,通過語音互動方式進行《道路交通安全法》的學(xué)習(xí),從而提高青少年學(xué)習(xí)交通安全知識的主動性和趣味性,切實增強青少年的交通安全意識。
2軟件設(shè)計
2.1整體技術(shù)流程
交通安全對話軟件基于機器學(xué)習(xí)Sklearn框架,以PyCharm作為軟件的開發(fā)環(huán)境,可視化界面采用wxPython工具包完成。交通安全對話軟件針對的咨詢問題比較明確,大多涉及交通規(guī)則知識,常見的問題和法律法規(guī)可以通過相關(guān)網(wǎng)站獲得。其次,還需要小部分的娛樂話題,用于增加聊天的趣味性。軟件技術(shù)路線圖如圖1所示。
2.2基于搜索和語料庫的聊天功能
由于該軟件的定位比較明確,適用人群為青少年群體,因此在軟件功能和界面的設(shè)計上較為簡單清晰。整個頁面由兩個聊天對話框和兩個按鈕組成,兩個聊天對話框分別展示使用者和后臺所輸出的語音,兩個按鈕分別實現(xiàn)開始聊天和結(jié)束聊天功能。
聊天對話實現(xiàn)的大致流程如下。
(1)語音識別(Speech Recognition):對用戶輸入的語音進行語音識別,并把識別到的文本展示到前端界面。
(2)分詞(Word Segmentation):對識別后的文本采用jieba模塊進行分詞操作。
(3)數(shù)據(jù)預(yù)處理(Data Preprocessing):用戶輸入的語音極大可能帶有其他冗余字詞,首先要對分詞后的文本進行檢查并糾正。建立停用詞表,詞表包含助詞、連詞、量詞等對文本分類沒有實質(zhì)性影響的無關(guān)信息詞匯[5],去除無關(guān)詞可以更好地與提問者所提出的問題進行匹配。
(4)計算文本相似度(Text Similarity):對預(yù)處理后的數(shù)據(jù)和語料庫中的問題進行比對,采用基于行連接存儲的稀疏矩陣計算文本之間的相似度。
(5)排序(Sort):根據(jù)計算的文本相似度進行排序,獲取相似度最高的3個問答作為返回結(jié)果。
(6)過濾結(jié)果(Filter Results):將上一步驟結(jié)果做最后一層過濾,采用模糊匹配技術(shù),將相似度最高的問答作為結(jié)果語音輸出給用戶,同時將文本展示在對話框中。
2.3基于機器學(xué)習(xí)的問題類別預(yù)測功能
該問答軟件針對的領(lǐng)域比較明確,為快速匹配交通安全相關(guān)知識,需要建立自定義詞表。詞表里存放交通領(lǐng)域中經(jīng)常出現(xiàn)的詞匯,用以和用戶輸入的語音進行比對。采用邏輯表達式、樸素貝葉斯等方法對用戶輸入的問題進行預(yù)測分類。
3具體流程和相關(guān)技術(shù)分析
3.1語音識別
利用Python中的PyAudio庫進行語音的識別。PyAudio提供了PortAudio的Python語言版本,該庫具有錄音、播放、生成wav文件等功能,是一個跨平臺的音頻I/O庫。在用戶說話時進行錄音,生成對應(yīng)的wav文件,應(yīng)用百度API進行語音識別,并轉(zhuǎn)寫成中文文本,供其他步驟使用。
3.2數(shù)據(jù)處理
在數(shù)據(jù)處理部分,除上述建立停用詞表和自定義詞表外,還需要對主要語料庫進行填充。將《道路交通安全法》以[類別、問題、回答]的格式保存到CSV外部文件。在程序中讀取語料庫采用pickle工具包,將預(yù)處理后的語料庫CSV文件序列化至本地,進而在下次使用語料庫時不需要再次進行預(yù)處理,能夠有效節(jié)省處理的時間。同樣,修改語料庫后則需重新將CSV文件序列化至本地,生成對應(yīng)的模型文件。
3.3TF-IDF
在文本分類過程中,需要識別輸入文本中的重要特征詞匯,軟件使用TF-IDF技術(shù)[6]評估詞匯的重要程度。TF-IDF的原理是字詞的重要性會隨著它在文件中出現(xiàn)的次數(shù)成正比增加,同時會隨著它在語料庫中出現(xiàn)的頻率成反比下降。換言之,一個詞語在一篇文章中出現(xiàn)次數(shù)越多,同時在所有文檔中出現(xiàn)次數(shù)越少,越能夠代表該文章,因此可以通過計算TF和IDF的值來衡量文字特征重要程度。引入TF-IDF的目的在于為后續(xù)的樸素貝葉斯分類器服務(wù),樸素貝葉斯無論是訓(xùn)練或是預(yù)測,均要求輸入必須是數(shù)學(xué)形式,才能輸入分類器中進行訓(xùn)練和預(yù)測。Sklearn框架實現(xiàn)的TF-IDF算法不能完全滿足程序的要求,為解決訓(xùn)練和預(yù)測時維度不同的問題,需要對算法針對性做兩處改進。一是對于訓(xùn)練和預(yù)測樣本的TF-IDF處理均放置在一個函數(shù)中完成,可以保證數(shù)學(xué)矩陣輸出時的維度一致性;二是使用toarry函數(shù)將TF-IDF處理得到的稀疏矩陣轉(zhuǎn)換為稠密矩陣,保證維度一致,方便后續(xù)進行進一步處理。
3.4樸素貝葉斯分類
軟件使用的語料庫分為娛樂聊天語料庫和交通安全知識語料庫兩種,需要使用貝葉斯分類器對用戶輸入進行分類,以便匹配不同的數(shù)據(jù)庫完成更加精準的輸出。Python中sklearn根據(jù)不同場景提供了三種常用的樸素貝葉斯模型,即
GaussianNB,MultinomialNB和BernoulliNB。為了測試模型與軟件所使用語料庫的匹配程度,以軟件使用的交通知識語料庫和娛樂語料庫為數(shù)據(jù)基礎(chǔ),建立模型測試數(shù)據(jù)集和訓(xùn)練數(shù)據(jù)集。分別使用三種模型對數(shù)據(jù)集進行訓(xùn)練和預(yù)測,得到的模型指標如圖2所示。
如圖2所示,在小規(guī)模訓(xùn)練集下,樸素貝葉斯算法的三種模型指標比較穩(wěn)定,在三個模型中MultinomialNB和BernoulliNB多用于文本分類,但BernoulliNB適用于二元離散值樣本特征。軟件所使用的數(shù)據(jù)集中特征量較大,不宜使用BernoulliNB。MultinomialNB在處理交通數(shù)據(jù)集時所表現(xiàn)的綜合效果最好,與數(shù)據(jù)集更匹配[7]。
3.5fuzz模糊匹配
當用戶提出的問題需要與語料庫中的問題進行對比時,使用字符串模糊匹配(fuzzy string matching)實現(xiàn)。用戶的輸入經(jīng)過一系列格式化處理轉(zhuǎn)換為可以適配的格式后,與事先構(gòu)建的語料庫問題進行匹配,返回匹配程度高的問題并將對應(yīng)的答案作為程序的輸出。輸出的結(jié)果進行格式化處理,轉(zhuǎn)換為語音進行文字播報,同時輸出至圖形化用戶交互界面。
4結(jié)束語
(1)本文介紹了基于機器學(xué)習(xí)的交通安全對話軟件從設(shè)計到實現(xiàn)的全過程。依托Python對《道路交通安全法》進行了文本分割、特征識別,利用機器學(xué)習(xí)sklearn框架建立了文本識別匹配模型。(2)在文本識別的基礎(chǔ)上,對比了樸素貝葉斯的三種模型指標,結(jié)果表明軟件所使用的MultinomialNB模型在交通數(shù)據(jù)集上有更好的表現(xiàn)。(3)在軟件的基礎(chǔ)上,可以建立家庭、學(xué)校和社會三位一體的長效宣傳教育機制,從而不斷提高青少年的交通安全意識,增強交通法規(guī)意識。(4)從實際應(yīng)用方面考慮,首先,末來仍需不斷更新語料庫,并擴大問答軟件的聊天范圍,進一步提高軟件的可互動性。其次,可以將軟件移植到硬件機器人上,使軟件更具獨立性和趣味性。