張思楠 郭佳 陸磊 周海辰 陳菁菁


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