袁瑞雪
摘要:應(yīng)用人工智能技術(shù),以Android studio為開(kāi)發(fā)工具,采用Python語(yǔ)言,通過(guò)Android調(diào)用第三方語(yǔ)音識(shí)別接口,設(shè)計(jì)能夠進(jìn)行語(yǔ)音識(shí)別輸入與文字轉(zhuǎn)換、根據(jù)發(fā)送信息進(jìn)行自動(dòng)回復(fù)、可以和其他程序結(jié)合進(jìn)行訓(xùn)練的簡(jiǎn)易聊天機(jī)器人。
關(guān)鍵詞:聊天機(jī)器人;自然語(yǔ)言處理;語(yǔ)音交互
中圖分類(lèi)號(hào):TN929 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2019)10-0144-02
0 引言
隨著社會(huì)信息化進(jìn)程的日益加快,人們希望能夠用自然語(yǔ)言與計(jì)算機(jī)進(jìn)行交流,聊天機(jī)器人的市場(chǎng)因此產(chǎn)生。聊天機(jī)器人旨在通過(guò)自然語(yǔ)言處理等技術(shù),對(duì)人們提出的問(wèn)題進(jìn)行理解,通過(guò)檢索知識(shí)庫(kù)等方式產(chǎn)生對(duì)應(yīng)的回復(fù)[1-2]。它是一種模擬人類(lèi)的對(duì)話模式,使用自然語(yǔ)言與人類(lèi)進(jìn)行交流的程序。它不僅能回答用戶所提的問(wèn)題,還能人性化地與用戶交流,同時(shí)提醒或者安排用戶完成一些任務(wù)。研究聊天機(jī)器人的相關(guān)技術(shù),尤其是對(duì)話理解等問(wèn)題,對(duì)促進(jìn)人機(jī)交互方式的發(fā)展具有重要意義[3-4]。本設(shè)計(jì)旨在通過(guò)Android智能終端與機(jī)器人聊天,進(jìn)行語(yǔ)音識(shí)別輸入與文字間的轉(zhuǎn)換,理解輸入發(fā)送的信息并進(jìn)行自動(dòng)回復(fù),最終將問(wèn)題的輸入以及對(duì)話的效果以APP的形式展示。
1 語(yǔ)料獲取和處理
對(duì)話系統(tǒng)的關(guān)鍵基礎(chǔ)就是數(shù)據(jù)集,即語(yǔ)料庫(kù)。但目前開(kāi)源的語(yǔ)料庫(kù)很少,該系統(tǒng)選取了兩個(gè)語(yǔ)料庫(kù)進(jìn)行對(duì)比,分別是電影獨(dú)白語(yǔ)料庫(kù)和公開(kāi)的小黃雞語(yǔ)料庫(kù)。本文選擇學(xué)習(xí)訓(xùn)練時(shí)間比較快的小黃雞語(yǔ)料來(lái)進(jìn)行學(xué)習(xí)。
原始語(yǔ)料文本不能用來(lái)直接訓(xùn)練,需要進(jìn)行句子和向量間的轉(zhuǎn)換;然后是構(gòu)建語(yǔ)料問(wèn)答對(duì),對(duì)其進(jìn)行拆分;最后保存和訓(xùn)練語(yǔ)料模型即深度模型,實(shí)現(xiàn)語(yǔ)音識(shí)別輸入與文字的轉(zhuǎn)換,理解輸入發(fā)送的信息并進(jìn)行自動(dòng)回復(fù)并以APP形式展示。
2 Android客戶端交互設(shè)計(jì)
安卓交互模塊主要具有如下四個(gè)功能:(1)語(yǔ)音識(shí)別輸入:軟件調(diào)用科大訊飛接口,具有語(yǔ)音識(shí)別輸入的功能,直接對(duì)語(yǔ)音內(nèi)容進(jìn)行識(shí)別,轉(zhuǎn)換為文本內(nèi)容發(fā)送給服務(wù)器;(2)文字鍵入:除了語(yǔ)音識(shí)別輸入,還可以文字的鍵入;(3)信息顯示:內(nèi)容顯示界面,包括軟件名稱,聊天框,聊天內(nèi)容,語(yǔ)音識(shí)別功能和發(fā)送按鈕的顯示等;(4)語(yǔ)音播報(bào)輸出:在進(jìn)行回答結(jié)果信息顯示的同時(shí)可以進(jìn)行語(yǔ)音播放,同樣也是調(diào)用科大訊飛輸出結(jié)果。
3 語(yǔ)音聽(tīng)寫(xiě)和合成設(shè)計(jì)
該系統(tǒng)調(diào)用的是科大訊飛接口,它是國(guó)內(nèi)著名的語(yǔ)音技術(shù)提供商,專(zhuān)業(yè)于語(yǔ)音和文字產(chǎn)品,提供了語(yǔ)音識(shí)別和合成接口,可接入使用。該平臺(tái)為開(kāi)發(fā)者們提供了中文分詞、詞性標(biāo)注、語(yǔ)義角色標(biāo)注等NLP技術(shù)服務(wù)。
調(diào)用科大訊飛接口主要有以下步驟:注冊(cè)登陸科大訊飛開(kāi)放平臺(tái)(http://www.xfyun.cn/)、進(jìn)入控制臺(tái)、創(chuàng)建應(yīng)用,記下AppID、點(diǎn)擊開(kāi)通服務(wù)進(jìn)入語(yǔ)音聽(tīng)寫(xiě)去下載相對(duì)應(yīng)的SDK、下載安卓版本的SDK。
語(yǔ)音合成與語(yǔ)音聽(tīng)寫(xiě)識(shí)別剛好反過(guò)來(lái),是把文字內(nèi)容轉(zhuǎn)變?yōu)檎Z(yǔ)音信息,使得機(jī)器可以像人類(lèi)一樣說(shuō)話。
4 客戶端和服務(wù)端設(shè)計(jì)
客戶端模塊主要由語(yǔ)音聽(tīng)寫(xiě)和合成、網(wǎng)絡(luò)請(qǐng)求和UI繪制這個(gè)三個(gè)模塊組成。(1)語(yǔ)音聽(tīng)寫(xiě)和合成模塊:使用科大訊飛提供的語(yǔ)音聽(tīng)寫(xiě)和語(yǔ)音合成SDK,將語(yǔ)音內(nèi)容轉(zhuǎn)變成文本內(nèi)容返回和將文本內(nèi)容轉(zhuǎn)換為語(yǔ)音輸出;(2)網(wǎng)絡(luò)請(qǐng)求模塊:通過(guò)http協(xié)議,用get的請(qǐng)求方式將語(yǔ)句字符串發(fā)送到服務(wù)端;(3)UI繪制模塊:以適當(dāng)布局顯示用戶輸入的語(yǔ)句內(nèi)容和服務(wù)端返回的問(wèn)答字符串結(jié)果。
服務(wù)端的操作系統(tǒng)為mac,環(huán)境配置為python3.7和jdk。首先需要flask模塊,實(shí)例一個(gè)此類(lèi),該系統(tǒng)使用的是單一模塊_name_。用route告訴flask使用url來(lái)激發(fā)應(yīng)答函數(shù)。此函數(shù)將問(wèn)答模型對(duì)象中得到結(jié)果的函數(shù)返回給客戶端進(jìn)行信息的顯示。服務(wù)端模塊主要由請(qǐng)求解析模塊、語(yǔ)義解析模塊和應(yīng)答封裝這三個(gè)模塊所組成:(1)請(qǐng)求解析模塊:將http數(shù)據(jù)報(bào)的內(nèi)容解析到response對(duì)象中,供開(kāi)發(fā)者調(diào)用;(2)語(yǔ)義解析模塊:從請(qǐng)求解析模塊中提取文本,得到應(yīng)答語(yǔ)句,將其提供給應(yīng)答封裝;(3)應(yīng)答封裝:最后把應(yīng)答語(yǔ)句以json串的形式返回給開(kāi)發(fā)者調(diào)用。
5 模型訓(xùn)練和評(píng)估
5.1 模型訓(xùn)練
有基于seq2seq的train和train_anti兩種模型進(jìn)行訓(xùn)練,設(shè)置同樣的參數(shù)進(jìn)行訓(xùn)練比較,其中可以選LSTM和GRU這兩種模型,該系統(tǒng)采用2層隱藏層的神經(jīng)網(wǎng)絡(luò)模型,隱藏節(jié)點(diǎn)個(gè)數(shù)為128個(gè),學(xué)習(xí)率即步長(zhǎng)為0.001,迭代訓(xùn)練的迭代次數(shù)有20次,100次。
5.2 訓(xùn)練效果評(píng)估
交叉熵是Shannon信息論中一個(gè)重要概念,主要用于度量?jī)蓚€(gè)概率分布間的差異性信息。交叉熵的意義是對(duì)文本識(shí)別的難度。將交叉熵引入計(jì)算語(yǔ)言學(xué)消岐領(lǐng)域,采用語(yǔ)句的真實(shí)語(yǔ)義作為交叉熵的訓(xùn)練集的先驗(yàn)信息,將機(jī)器翻譯的語(yǔ)義作為測(cè)試集后驗(yàn)信息。計(jì)算兩者的交叉熵,并以交叉熵指導(dǎo)對(duì)歧義的辨識(shí)和消除。
交叉熵可在神經(jīng)網(wǎng)絡(luò)(機(jī)器學(xué)習(xí))中作為損失函數(shù)(Cross Entropy Loss)。
圖1展示了加入attention機(jī)制后兩種模型訓(xùn)練下的損失函數(shù)。
由圖可見(jiàn):隨著縱坐標(biāo)數(shù)值的增加損失函數(shù) L 越小;第二種模型收斂的速度更快,交叉熵一開(kāi)始更小,也更快達(dá)到1以下,優(yōu)于正常的seq2seq模型。
這種優(yōu)勢(shì)也是基于迭代次數(shù)的,在前期較少的輪數(shù)訓(xùn)練下,兩種訓(xùn)練效果區(qū)別不大。
訓(xùn)練輪數(shù)為20輪、100輪時(shí)同一問(wèn)題回答效果如圖2所示。
6 結(jié)語(yǔ)
本文針對(duì)閑聊機(jī)器人模型的背景,通過(guò)對(duì)其中可能涉及到的算法的閱讀與學(xué)習(xí),選擇了最符合本文特點(diǎn)的相應(yīng)算法,依托Andriod開(kāi)發(fā)環(huán)境搭建出整個(gè)聊天機(jī)器人系統(tǒng)。但在由于中文自然語(yǔ)言的復(fù)雜性,產(chǎn)生式聊天機(jī)器人容易構(gòu)建出無(wú)意義的回復(fù),如何將產(chǎn)生式深度模型應(yīng)用于閑聊機(jī)器人領(lǐng)域還需要深入的研究。
參考文獻(xiàn)
[1] 馮志偉.自然語(yǔ)言處理綜論(第二版)[M].北京:人民郵電出版社,2018.
[2] 周志華.機(jī)器學(xué)習(xí)[M].北京:清華大學(xué)出版社,2016.
[3] 鄭澤宇,顧思宇.Tensorflow:實(shí)戰(zhàn)Google深度學(xué)習(xí)框架[M].北京:電子工業(yè)出版社,2018.
[4] 張旭,崔陽(yáng),劉海平.Python自然語(yǔ)言處理[M].北京:人民郵電出版社,2014.