張邵潔
中國石化潤滑油有限公司
本文在闡述語言識別和自然語言理解(NLU)技術(shù)發(fā)展趨勢和應(yīng)用場景的基礎(chǔ)上,提出了中國石化潤滑油公司智能語音查詢系統(tǒng)的解決方案,為企業(yè)各級經(jīng)營管理人員、一線銷售服務(wù)人員提供更加智能、及時、準確的決策輔助信息。通過調(diào)用訊飛開放平臺的接口程序進行語音識別,配置開源的自然語言處理配置服務(wù)實現(xiàn)語句意圖和屬性的抽取,正確地在移動端識別了用戶對銷售指標的查詢意圖,并返回正確結(jié)果;在系統(tǒng)查詢準確率測試中,正確率達90.7%。
目前,以智能天線、軟件無線技術(shù)等為關(guān)鍵技術(shù)的第四代移動通訊系統(tǒng)已經(jīng)全面建立,手機、電腦、電視、Pad、LED等移動設(shè)備也得到了大規(guī)模普及,人類已經(jīng)進入了信息互通、信息共享的多屏時代。同時,企業(yè)運營管理的方式也積極向多元化發(fā)展,企業(yè)高層和基層員工需要借助信息技術(shù)的能力,突破時間和空間的限制,隨時隨地地查看企業(yè)運營狀況。在此背景下,移動互聯(lián)網(wǎng)以及相應(yīng)的移動商業(yè)智能分析(BI)就成為了企業(yè)進行實時分析、決策和業(yè)務(wù)管控的有力工具。
然而,現(xiàn)有的移動終端設(shè)備鍵盤通常較小,導致文字輸入不便,同時也無法處理步行、駕車等特定場景下的人機交互。由于這些交互方式的局限性,因此人們在與機器的信息交流中,需要一種更加方便、自然的方式,即使用人類的自然語言來代替?zhèn)鹘y(tǒng)的以鍵盤、鼠標等為工具的人機交互方式。
語音識別技術(shù),也被稱為自動語音識別(Automatic Speech Recognition 簡稱ASR),是以語音為研究對象,通過語音信號處理和模式識別讓計算機自動識別人類口述語言。中文語音識別的原理是通過數(shù)據(jù)訓練得到聲學模型和語音模型,利用語音輸入和信號預處理得到音頻信號,并利用特征提取技術(shù)得到音頻信號的技術(shù)特征,將特征輸入到聲學模型和語音模型,最后得到正確的識別文字。這其中,關(guān)鍵的技術(shù)是特征提取以及聲學模型和語音模型的建立。在技術(shù)上實現(xiàn)特征提取和模型建立主要有2種方法:傳統(tǒng)的隱馬爾可夫模型(HMM)[1]和端到端的深度神經(jīng)網(wǎng)絡(luò)(DNN)[2]。目前,語音識別技術(shù)主要是通過DNN實現(xiàn)的,特定場景下最高可以達到97%的識別率。在國內(nèi),2011年科大訊飛首次將 DNN 技術(shù)運用到語音云平臺,并提供給開發(fā)者使用,并在訊飛語音輸入法和訊飛口訊等產(chǎn)品中得到應(yīng)用。百度成立了 IDL(深度學習研究院),專門研究深度學習算法,目前已有多項深度學習技術(shù)在百度產(chǎn)品上線,在語音識別、OCR識別(光學字符識別)、人臉識別、圖像搜索等應(yīng)用上取得了突出效果。此外,國內(nèi)其他公司如搜狗、云知聲等紛紛開始在深度學習技術(shù)的基礎(chǔ)上開放了語音識別功能[3]。
構(gòu)建一個語音交互系統(tǒng),首先要對用戶的語音進行正確識別,即解決“讓機器知道你在說什么”的問題,接下來,需要進一步讓機器去理解這段語音并做出特定的反應(yīng),這就需要自然語言理解技術(shù)的應(yīng)用。自然語言理解(Natural Language Understanding,簡稱NLU)是人工智能的分支學科,主要研究用計算機模擬人的語言交際過程,使計算機能理解和運用人類社會的自然語言如漢語、英語等,實現(xiàn)人機之間的自然語言通信,以代替人的部分腦力勞動,包括查詢資料、解答問題、摘錄文獻、匯編資料以及一切有關(guān)自然語言信息的加工處理[4]。目前,許多國外頂級技術(shù)品牌已經(jīng)開始為用戶提供基于NLU技術(shù)的個性化語音搜索服務(wù),包括Google的Google NOW、蘋果的Siri、微軟的Cortana、亞馬遜的Alexa和三星的Bixby。同時,國內(nèi)也有一些公司開始擁有自主語音語義相關(guān)技術(shù)并提供服務(wù),如出門問問、云知聲、思必馳、百度度秘和騰訊小鯨等產(chǎn)品,主要應(yīng)用領(lǐng)域包括嵌入式系統(tǒng)、硬件產(chǎn)品、本地化生活服務(wù)、連續(xù)對話機器人、智能家居及車載市場等方面。此外,科大訊飛的“訊飛語音云”包括語音合成、語音識別和搜索、語音聽寫等技術(shù),其主要業(yè)務(wù)是面向企業(yè)用戶的服務(wù),將自己的人工智能服務(wù)授權(quán)給其他企業(yè)應(yīng)用。阿里巴巴、百度、騰訊、京東等互聯(lián)網(wǎng)公司也紛紛推出了包含語音識別、自然語言理解等功能在內(nèi)的人工智能開放服務(wù)。
潤滑油業(yè)務(wù)作為中國石化直接面向市場和消費者的業(yè)務(wù)之一,市場競爭一直非常激烈。中國石化潤滑油有限公司(以下簡稱潤滑油公司)奉行“以客戶為中心”的經(jīng)營理念,積極探索互聯(lián)網(wǎng)時代的潤滑油業(yè)務(wù)專業(yè)化發(fā)展道路。為滿足內(nèi)部客戶、外部客戶的需求,努力提供更周到更細致的服務(wù)體驗,潤滑油公司積極嘗試借助互聯(lián)網(wǎng)、大數(shù)據(jù)、機器學習等先進的信息技術(shù),實現(xiàn)人機交互、智能查詢,為各級管理及銷售人員快速提供數(shù)據(jù)決策支持,從而提升企業(yè)運營效率和客戶滿意度,拓展產(chǎn)品價值空間,大力提升市場競爭力。
2012年起,潤滑油公司啟動了企業(yè)數(shù)據(jù)倉庫系統(tǒng)的配套建設(shè)。至今為止,潤滑油公司數(shù)據(jù)倉庫系統(tǒng)已經(jīng)滿足了機關(guān)層面的全口徑統(tǒng)計以及其12個銷售代表處、5家銷售分公司和34家地市經(jīng)營部的日常銷售統(tǒng)計和客戶統(tǒng)計的管理和分析需要。2014年7月1日,潤滑油公司ERP(企業(yè)資源計劃)大集中系統(tǒng)完成了實施[5],滿足了有限公司的運作要求。BW(商務(wù)信息倉庫)系統(tǒng)同步進行了配套建設(shè),實現(xiàn)了業(yè)務(wù)統(tǒng)計的連續(xù)性。2015年后,BW建設(shè)主要內(nèi)容重點放在了效益分析工作上,通過建立較為精準的產(chǎn)品、客戶、銷售經(jīng)理利潤貢獻分析模型,實現(xiàn)了各項營銷費用與產(chǎn)品及客戶的合理匹配和分攤[6]。隨著當前信息技術(shù)的發(fā)展,潤滑油公司一線業(yè)務(wù)人員及中高層領(lǐng)導對銷售、財務(wù)等數(shù)據(jù)的推送及時性和查詢快捷性提出了更高的要求。
潤滑油公司信息化應(yīng)用水平在全國石化單位中處于領(lǐng)先地位,對于BI(商務(wù)智能)分析工具的使用率非常高,同時也在積極進行敏捷BI、移動BI等新技術(shù)的嘗試和應(yīng)用。2016年起,潤滑油移動端數(shù)據(jù)分析系統(tǒng)開始建設(shè),利用手機等移動設(shè)備展示常用的BW報表和重要指標數(shù)據(jù),并開發(fā)了數(shù)據(jù)主動推送機制、自定義查詢條件等功能,滿足業(yè)務(wù)人員及中高層領(lǐng)導對銷售、財務(wù)等數(shù)據(jù)的快速獲取。據(jù)統(tǒng)計,“中國石化潤滑油有限公司移動數(shù)據(jù)分析”使用查詢次數(shù)突破50 000次/a[7]。
為了支持潤滑油公司一線業(yè)務(wù)決策,真正做到“人人分析”和“實時分析”,本文將在潤滑油公司多年積累的商務(wù)智能和移動數(shù)據(jù)分析建設(shè)經(jīng)驗的基礎(chǔ)上,結(jié)合ASR與NLU技術(shù),構(gòu)建智能語音查詢系統(tǒng),以滿足各層次用戶快速準確地查詢信息的需求。
智能語音查詢系統(tǒng)的主要設(shè)計思路是基于現(xiàn)有潤滑油移動端數(shù)據(jù)分析平臺,添加語音查詢的功能。現(xiàn)有的報表往往邏輯簡單、信息單一,業(yè)務(wù)人員需要通過交互式的反復查詢才能最終獲取想要的所有結(jié)果。而通過語音查詢,可以讓業(yè)務(wù)人員便捷的按照不同維度組合展現(xiàn)數(shù)據(jù),并進行交互式查詢。
根據(jù)需求分析,確定了智能語音查詢系統(tǒng)的具體查詢功能,部分查詢內(nèi)容見表1。
其主要查詢場景是:選擇一種或多種維度下指標的組合,將查詢語音輸入智能查詢系統(tǒng),返回相應(yīng)的產(chǎn)品銷售量,如“查詢重慶高汽包裝油的銷量”、“我想知道工業(yè)油在茂名直銷的買了多少?”等。其中,由于銷售代表處和單位2個維度有重合的指標,如“天津”等,系統(tǒng)默認的查詢維度為“單位”,但如果在語音中指出“銷售代表處”,如詢問“銷售代表處天津的船用油銷量是多少”,則在系統(tǒng)中查詢該維度下的銷售量并返回。
智能語音查詢系統(tǒng)主要包括“語音識別”和“自然語言處理”兩大主要功能?!罢Z音識別”旨在讓計算機能夠“聽懂”人類的語音,將語音中包含的文字信息“提取”出來,“自然語言處理”旨在讓計算機能夠“理解”人類的文字,將包含在自然語言中意圖、語義等信息“提取”出來。兩者相輔相成,滿足各層次用戶數(shù)據(jù)挖掘需求。
系統(tǒng)通過自開發(fā)ASR接口集成外部ASR系統(tǒng)實現(xiàn)語音識別,同時,通過自開發(fā)NLU模塊實現(xiàn)自然語言處理。應(yīng)用程序可通過接口服務(wù)發(fā)送語音或文本信息并獲取語義解析后的結(jié)果;此外,系統(tǒng)及相應(yīng)的模型還將在收集數(shù)據(jù)樣本信息的過程中不斷自我更新,實現(xiàn)意圖和實體識別的迭代優(yōu)化以及查詢準確性的逐步提升。其總體架構(gòu)見圖1。
語言輸入、語音的正確識別、語意和意圖的抽取、查詢SQL語句的拼接以及數(shù)據(jù)展示是智能語音查詢系統(tǒng)的主要處理內(nèi)容,如圖2所示。
語音輸入服務(wù)主要基于中石化移動應(yīng)用平臺實現(xiàn),APP框架界面基于React-Native開發(fā)。主要技術(shù)要點及實現(xiàn)流程如下:界面根據(jù)移動終端(IOS、Android)類型通過中石化移動應(yīng)用統(tǒng)一封裝的JS橋,調(diào)用底層錄音組件。啟動錄音組件進行語音錄入,待語音錄入結(jié)束后,將語音轉(zhuǎn)為Base64位格式進行本地存儲,再調(diào)用Java語音識別服務(wù)平臺接口將語音文件轉(zhuǎn)換為文字。具體語言識別接口開發(fā)過程見下一小節(jié)。
語音識別接口開發(fā)
經(jīng)過一段時間的語音識別開放平臺技術(shù)選型比較,我們選擇了業(yè)內(nèi)一致推薦和廣泛使用的訊飛開放平臺作為語音識別的接口選擇。訊飛開放擁有領(lǐng)先的語音識別技術(shù),核心技術(shù)達到國際領(lǐng)先水平,語音識別準確率已經(jīng)超過98%,在業(yè)界遙遙領(lǐng)先,同時,其系統(tǒng)的語音輸入速度、識別結(jié)果響應(yīng)時間、系統(tǒng)運行效率也能夠滿足目前的需求。
表1 智能語音系統(tǒng)查詢內(nèi)容
圖1 智能語音查詢系統(tǒng)功能架構(gòu)
利用JAVA通過http 請求/響應(yīng)模式,調(diào)用訊飛開放平臺提供的免費開源SDK,實現(xiàn)了語音轉(zhuǎn)換文字的功能。其主要的開發(fā)過程包括解壓下載JAR包,復制assets文件夾到項目中、在Manifests文件中添加權(quán)限、初始化SDK、封裝語音識別實體等內(nèi)容。最后調(diào)用initSpeech方法,在TextView中得到正確的識別結(jié)果。
語音糾錯程序開發(fā)
在完成接口開發(fā)后,收集相關(guān)的語音查詢樣本,批量運行語音識別程序?qū)颖具M行文字識別。基于測試結(jié)果發(fā)現(xiàn),行業(yè)專有詞語音識別率只有34.79%,直接造成后續(xù)NLU無法正確抓取關(guān)鍵詞,并輸出正確的語義。經(jīng)過分析,這種情況發(fā)生的原因是某些專有名詞不在訊飛平臺的語料庫內(nèi)所導致。如“金工液”被識別為“金工業(yè)”,“工業(yè)油”被識別為“工業(yè)游”等情況,除此之外,類似“北京”、“上?!钡葘S械乩砻~均能被正確識別。
針對這種情況,開發(fā)了語音糾錯程序,首先將識別后的文本轉(zhuǎn)換為漢語拼音形式,同時建立易錯讀音和文字指標的對照表,再利用字符串的相似性判斷,將相近似的拼音結(jié)果轉(zhuǎn)換為查詢結(jié)果。如“查詢武漢的金工液”在訊飛識別端會識別為“查詢武漢的金工業(yè)”,由于“金工液”和“金工業(yè)”的拼音為“jingongye”,因此通過糾錯程序可將“查詢武漢的金工業(yè)”轉(zhuǎn)換為正確的文本,即“查詢武漢的金工液”。經(jīng)過100個語音樣本的糾錯測試,通過糾錯程序可將語音識別正確率由35%提升到85%。語音識別糾錯程序如圖3所示。
面向數(shù)據(jù)庫的語言搜索系統(tǒng),通常需要精確地理解文本語義并將之轉(zhuǎn)化為計算機可以理解處理的形式化表示,進而轉(zhuǎn)化為精確的SQL查詢語言。目前NLU方法主要分為兩類,一類是基于目前快速發(fā)展的深度學習技術(shù),如embedding嵌入式學習算法[8],RNN、LSTM等遞歸型深度學習神經(jīng)網(wǎng)絡(luò)[9],通過學習得到問句和語料庫、知識庫之間的映射關(guān)系。另一類是基于符號邏輯的NLU方法,利于符號化文法對自然語言問句進行分析并轉(zhuǎn)化為結(jié)構(gòu)化。這種分析方法依賴于問句的語句規(guī)范性,當面對一些口語化、不規(guī)范的短文本時,很難得到精確的分析結(jié)果[10]。
意圖分類與屬性抽取
NLU的處理過程是將一段文字輸入,轉(zhuǎn)換為一種結(jié)構(gòu)化的語義表示,在其實施方法上會分成2個步驟:用戶意圖的判定和屬性的結(jié)構(gòu)化抽取。一個意圖和屬性抽取實例見圖4。
在圖4中,針對“我要查詢6月份重慶高汽包裝油的銷量”這一段短文本信息。第一個步驟是要理解用戶的意圖,即銷量查詢;第二個步驟為屬性抽取,即把地區(qū)、品種、時間等關(guān)鍵的信息處理出來,從而得到一個比較完整的結(jié)構(gòu)化語義表示。
在處理意圖理解時,通常的方法是將其抽象為一個分類問題,并利用CNN神經(jīng)網(wǎng)絡(luò)、SVM分類器等典型的機器學習方法進行分類。除此之外,處理意圖之前還需要對文本進行分詞以及對詞進行向量化表示,目前一般采取開源的jieba、SnowNLP、THULAC、NLPIR 等工具進行中文分詞[11],并采用word embedding或基于知識的語義表示法進行向量化處理[12]。
在處理屬性抽取時,業(yè)界一般會將其轉(zhuǎn)換為序列標注問題,如阿里巴巴的iDST NLU團隊采用了雙向LSTM加CRF解碼器的方式[13]。為配合較多的匹配結(jié)果,很多機構(gòu)采取了大數(shù)據(jù)分析的方法,收集諸如 probase、Web文 本、Bing查詢?nèi)罩竞虳Bpedia多種數(shù)據(jù)資源的300多TB數(shù)據(jù)以及上億數(shù)量級的google查詢?nèi)罩镜葦?shù)據(jù),從數(shù)據(jù)中挖掘大量的屬性[14]。
服務(wù)配置
圖4 意圖和屬性抽取實例
在潤滑油公司智能語音系統(tǒng)的搭建中,NLU功能是最核心也是最重要的部分。經(jīng)過技術(shù)選型和方案比較,選取了開源的RASA NLU開發(fā)框架作為系統(tǒng)的NLU功能模塊核心。RASA NLU是Github上一個開發(fā)團隊做的一個開源項目,優(yōu)勢就是只提供框架流程,可自定義自己的NLU功能,可本地化部署,和google micro的閉源框架相比,不需要依賴互聯(lián)網(wǎng)。BMW、UBS等企業(yè)都在用RASA框架開發(fā)自己的產(chǎn)品。NLU服務(wù)搭建流程見圖5。
數(shù)據(jù)查詢的主要實現(xiàn)原理是:將NLU服務(wù)參數(shù)根據(jù)業(yè)務(wù)需求進行一一映射配置,即對象關(guān)系映射,把配置參數(shù)設(shè)置為數(shù)據(jù)源data source的模型結(jié)構(gòu)配置,實現(xiàn)面向?qū)ο缶幊蘆AVA里不同類型系統(tǒng)的數(shù)據(jù)之間的轉(zhuǎn)換。
在本系統(tǒng)中,首先配置業(yè)務(wù)需求與參數(shù)定義;接著在JAVA端調(diào)用NLU提供的restful API接口服務(wù),得到用戶意圖以及相應(yīng)的屬性維度;再利用相應(yīng)的對照映射關(guān)系表組成查詢對象和查詢條件;最后拼接生成SQL查詢語句,得到查詢結(jié)果。
前端界面取得Java返回的固定格式的查詢結(jié)果數(shù)據(jù)后,針對界面交互以及實際業(yè)務(wù)邏輯進行數(shù)據(jù)的加工處理,結(jié)合用戶體驗習慣渲染到瀏覽器界面。在潤滑油公司智能語音查詢系統(tǒng)中查詢“去年上海金工液銷量”的結(jié)果顯示界面見圖6。
由圖6可以看出,系統(tǒng)正確地顯示了查詢結(jié)果,并且顯示了查詢維度和查詢意圖,以及ASR、NLU、數(shù)據(jù)庫查詢各自花費的時間。
為了深入了解智能語音查詢系統(tǒng)的應(yīng)用效果,我們選擇了如下的測試場景對查詢正確率進行測試:
測試人員:3人(2男,1女);
測試案例:每人50個測試語句,其中40個銷量意圖,10個其他意圖。
智能語音查詢系統(tǒng)查詢正確率測試結(jié)果見表2。
由表2可見,平均查詢正確率達到90.7%。通過分析發(fā)現(xiàn),由于部分查詢字段為石化專有名詞,訊飛語言識別系統(tǒng)無法給出正確的識別結(jié)果,應(yīng)用糾錯程序也無法全部改正此類識別錯誤。此外,測試員的普通話發(fā)音清晰度、語速及其周邊噪聲也會對識別的正確程度產(chǎn)生影響。此外,測試過程中還發(fā)現(xiàn),由于訓練樣本充足,NLU模型通過訓練,得到了良好的性能。因此,本次測試中能夠正確識別的語音,均能夠通過NLU系統(tǒng)正確地解析意圖和抽取屬性,達到理想的查詢結(jié)果。
所搭建的潤滑油公司智能語音查詢系統(tǒng)主要實現(xiàn)了如下功能:
◇系統(tǒng)化:搭建了語音查詢智能系統(tǒng)雛形,實現(xiàn)了語音、語義結(jié)果的保存;
◇模塊化:按功能模塊化,以微服務(wù)的方式對外提供能力輸出;
◇接口化:語音識別、語義識別以及系統(tǒng)的能力輸出都包裝成標準接口,方便應(yīng)用調(diào)用。
在未來的工作中,將著重實現(xiàn)多意圖、多屬性下的智能查詢,實現(xiàn)跨主題的語音查詢,并能夠滿足業(yè)務(wù)用戶的交互式查詢需求。在硬件配置方面,目前的系統(tǒng)搭建在測試環(huán)境下,性能較低,正式環(huán)境硬件架構(gòu)將主要采用Nginx+keepalive的HA負載均衡方案,在2臺Server上部署語言識別、數(shù)據(jù)庫查詢和前端渲染服務(wù),同時將NLU服務(wù)部署在帶有GPU的服務(wù)器上,可提升響應(yīng)速度,滿足多用戶訪問、模型快速迭代的需求。
表2 智能語音查詢系統(tǒng)查詢正確率測試結(jié)果
本文所搭建的智能語音查詢系統(tǒng)實現(xiàn)了在現(xiàn)有潤滑油移動應(yīng)用的基礎(chǔ)上添加語音識別的功能,同時對系統(tǒng)的各個關(guān)鍵環(huán)節(jié)做了深度測試和驗證。在未來的工作中,將以標準接口的方式提供語音查詢服務(wù),推廣至集團內(nèi)其他企業(yè)應(yīng)用。