張邵潔
中國石化潤滑油有限公司
本文在闡述語言識別和自然語言理解(NLU)技術發展趨勢和應用場景的基礎上,提出了中國石化潤滑油公司智能語音查詢系統的解決方案,為企業各級經營管理人員、一線銷售服務人員提供更加智能、及時、準確的決策輔助信息。通過調用訊飛開放平臺的接口程序進行語音識別,配置開源的自然語言處理配置服務實現語句意圖和屬性的抽取,正確地在移動端識別了用戶對銷售指標的查詢意圖,并返回正確結果;在系統查詢準確率測試中,正確率達90.7%。
目前,以智能天線、軟件無線技術等為關鍵技術的第四代移動通訊系統已經全面建立,手機、電腦、電視、Pad、LED等移動設備也得到了大規模普及,人類已經進入了信息互通、信息共享的多屏時代。同時,企業運營管理的方式也積極向多元化發展,企業高層和基層員工需要借助信息技術的能力,突破時間和空間的限制,隨時隨地地查看企業運營狀況。在此背景下,移動互聯網以及相應的移動商業智能分析(BI)就成為了企業進行實時分析、決策和業務管控的有力工具。
然而,現有的移動終端設備鍵盤通常較小,導致文字輸入不便,同時也無法處理步行、駕車等特定場景下的人機交互。由于這些交互方式的局限性,因此人們在與機器的信息交流中,需要一種更加方便、自然的方式,即使用人類的自然語言來代替傳統的以鍵盤、鼠標等為工具的人機交互方式。
語音識別技術,也被稱為自動語音識別(Automatic Speech Recognition 簡稱ASR),是以語音為研究對象,通過語音信號處理和模式識別讓計算機自動識別人類口述語言。中文語音識別的原理是通過數據訓練得到聲學模型和語音模型,利用語音輸入和信號預處理得到音頻信號,并利用特征提取技術得到音頻信號的技術特征,將特征輸入到聲學模型和語音模型,最后得到正確的識別文字。這其中,關鍵的技術是特征提取以及聲學模型和語音模型的建立。在技術上實現特征提取和模型建立主要有2種方法:傳統的隱馬爾可夫模型(HMM)[1]和端到端的深度神經網絡(DNN)[2]。目前,語音識別技術主要是通過DNN實現的,特定場景下最高可以達到97%的識別率。在國內,2011年科大訊飛首次將 DNN 技術運用到語音云平臺,并提供給開發者使用,并在訊飛語音輸入法和訊飛口訊等產品中得到應用。百度成立了 IDL(深度學習研究院),專門研究深度學習算法,目前已有多項深度學習技術在百度產品上線,在語音識別、OCR識別(光學字符識別)、人臉識別、圖像搜索等應用上取得了突出效果。此外,國內其他公司如搜狗、云知聲等紛紛開始在深度學習技術的基礎上開放了語音識別功能[3]。
構建一個語音交互系統,首先要對用戶的語音進行正確識別,即解決“讓機器知道你在說什么”的問題,接下來,需要進一步讓機器去理解這段語音并做出特定的反應,這就需要自然語言理解技術的應用。自然語言理解(Natural Language Understanding,簡稱NLU)是人工智能的分支學科,主要研究用計算機模擬人的語言交際過程,使計算機能理解和運用人類社會的自然語言如漢語、英語等,實現人機之間的自然語言通信,以代替人的部分腦力勞動,包括查詢資料、解答問題、摘錄文獻、匯編資料以及一切有關自然語言信息的加工處理[4]。目前,許多國外頂級技術品牌已經開始為用戶提供基于NLU技術的個性化語音搜索服務,包括Google的Google NOW、蘋果的Siri、微軟的Cortana、亞馬遜的Alexa和三星的Bixby。同時,國內也有一些公司開始擁有自主語音語義相關技術并提供服務,如出門問問、云知聲、思必馳、百度度秘和騰訊小鯨等產品,主要應用領域包括嵌入式系統、硬件產品、本地化生活服務、連續對話機器人、智能家居及車載市場等方面。此外,科大訊飛的“訊飛語音云”包括語音合成、語音識別和搜索、語音聽寫等技術,其主要業務是面向企業用戶的服務,將自己的人工智能服務授權給其他企業應用。阿里巴巴、百度、騰訊、京東等互聯網公司也紛紛推出了包含語音識別、自然語言理解等功能在內的人工智能開放服務。
潤滑油業務作為中國石化直接面向市場和消費者的業務之一,市場競爭一直非常激烈。中國石化潤滑油有限公司(以下簡稱潤滑油公司)奉行“以客戶為中心”的經營理念,積極探索互聯網時代的潤滑油業務專業化發展道路。為滿足內部客戶、外部客戶的需求,努力提供更周到更細致的服務體驗,潤滑油公司積極嘗試借助互聯網、大數據、機器學習等先進的信息技術,實現人機交互、智能查詢,為各級管理及銷售人員快速提供數據決策支持,從而提升企業運營效率和客戶滿意度,拓展產品價值空間,大力提升市場競爭力。
2012年起,潤滑油公司啟動了企業數據倉庫系統的配套建設。至今為止,潤滑油公司數據倉庫系統已經滿足了機關層面的全口徑統計以及其12個銷售代表處、5家銷售分公司和34家地市經營部的日常銷售統計和客戶統計的管理和分析需要。2014年7月1日,潤滑油公司ERP(企業資源計劃)大集中系統完成了實施[5],滿足了有限公司的運作要求。BW(商務信息倉庫)系統同步進行了配套建設,實現了業務統計的連續性。2015年后,BW建設主要內容重點放在了效益分析工作上,通過建立較為精準的產品、客戶、銷售經理利潤貢獻分析模型,實現了各項營銷費用與產品及客戶的合理匹配和分攤[6]。隨著當前信息技術的發展,潤滑油公司一線業務人員及中高層領導對銷售、財務等數據的推送及時性和查詢快捷性提出了更高的要求。
潤滑油公司信息化應用水平在全國石化單位中處于領先地位,對于BI(商務智能)分析工具的使用率非常高,同時也在積極進行敏捷BI、移動BI等新技術的嘗試和應用。2016年起,潤滑油移動端數據分析系統開始建設,利用手機等移動設備展示常用的BW報表和重要指標數據,并開發了數據主動推送機制、自定義查詢條件等功能,滿足業務人員及中高層領導對銷售、財務等數據的快速獲取。據統計,“中國石化潤滑油有限公司移動數據分析”使用查詢次數突破50 000次/a[7]。
為了支持潤滑油公司一線業務決策,真正做到“人人分析”和“實時分析”,本文將在潤滑油公司多年積累的商務智能和移動數據分析建設經驗的基礎上,結合ASR與NLU技術,構建智能語音查詢系統,以滿足各層次用戶快速準確地查詢信息的需求。
智能語音查詢系統的主要設計思路是基于現有潤滑油移動端數據分析平臺,添加語音查詢的功能。現有的報表往往邏輯簡單、信息單一,業務人員需要通過交互式的反復查詢才能最終獲取想要的所有結果。而通過語音查詢,可以讓業務人員便捷的按照不同維度組合展現數據,并進行交互式查詢。
根據需求分析,確定了智能語音查詢系統的具體查詢功能,部分查詢內容見表1。
其主要查詢場景是:選擇一種或多種維度下指標的組合,將查詢語音輸入智能查詢系統,返回相應的產品銷售量,如“查詢重慶高汽包裝油的銷量”、“我想知道工業油在茂名直銷的買了多少?”等。其中,由于銷售代表處和單位2個維度有重合的指標,如“天津”等,系統默認的查詢維度為“單位”,但如果在語音中指出“銷售代表處”,如詢問“銷售代表處天津的船用油銷量是多少”,則在系統中查詢該維度下的銷售量并返回。
智能語音查詢系統主要包括“語音識別”和“自然語言處理”兩大主要功能?!罢Z音識別”旨在讓計算機能夠“聽懂”人類的語音,將語音中包含的文字信息“提取”出來,“自然語言處理”旨在讓計算機能夠“理解”人類的文字,將包含在自然語言中意圖、語義等信息“提取”出來。兩者相輔相成,滿足各層次用戶數據挖掘需求。
系統通過自開發ASR接口集成外部ASR系統實現語音識別,同時,通過自開發NLU模塊實現自然語言處理。應用程序可通過接口服務發送語音或文本信息并獲取語義解析后的結果;此外,系統及相應的模型還將在收集數據樣本信息的過程中不斷自我更新,實現意圖和實體識別的迭代優化以及查詢準確性的逐步提升。其總體架構見圖1。
語言輸入、語音的正確識別、語意和意圖的抽取、查詢SQL語句的拼接以及數據展示是智能語音查詢系統的主要處理內容,如圖2所示。
語音輸入服務主要基于中石化移動應用平臺實現,APP框架界面基于React-Native開發。主要技術要點及實現流程如下:界面根據移動終端(IOS、Android)類型通過中石化移動應用統一封裝的JS橋,調用底層錄音組件。啟動錄音組件進行語音錄入,待語音錄入結束后,將語音轉為Base64位格式進行本地存儲,再調用Java語音識別服務平臺接口將語音文件轉換為文字。具體語言識別接口開發過程見下一小節。
語音識別接口開發
經過一段時間的語音識別開放平臺技術選型比較,我們選擇了業內一致推薦和廣泛使用的訊飛開放平臺作為語音識別的接口選擇。訊飛開放擁有領先的語音識別技術,核心技術達到國際領先水平,語音識別準確率已經超過98%,在業界遙遙領先,同時,其系統的語音輸入速度、識別結果響應時間、系統運行效率也能夠滿足目前的需求。

表1 智能語音系統查詢內容

圖1 智能語音查詢系統功能架構
利用JAVA通過http 請求/響應模式,調用訊飛開放平臺提供的免費開源SDK,實現了語音轉換文字的功能。其主要的開發過程包括解壓下載JAR包,復制assets文件夾到項目中、在Manifests文件中添加權限、初始化SDK、封裝語音識別實體等內容。最后調用initSpeech方法,在TextView中得到正確的識別結果。
語音糾錯程序開發
在完成接口開發后,收集相關的語音查詢樣本,批量運行語音識別程序對樣本進行文字識別。基于測試結果發現,行業專有詞語音識別率只有34.79%,直接造成后續NLU無法正確抓取關鍵詞,并輸出正確的語義。經過分析,這種情況發生的原因是某些專有名詞不在訊飛平臺的語料庫內所導致。如“金工液”被識別為“金工業”,“工業油”被識別為“工業游”等情況,除此之外,類似“北京”、“上?!钡葘S械乩砻~均能被正確識別。
針對這種情況,開發了語音糾錯程序,首先將識別后的文本轉換為漢語拼音形式,同時建立易錯讀音和文字指標的對照表,再利用字符串的相似性判斷,將相近似的拼音結果轉換為查詢結果。如“查詢武漢的金工液”在訊飛識別端會識別為“查詢武漢的金工業”,由于“金工液”和“金工業”的拼音為“jingongye”,因此通過糾錯程序可將“查詢武漢的金工業”轉換為正確的文本,即“查詢武漢的金工液”。經過100個語音樣本的糾錯測試,通過糾錯程序可將語音識別正確率由35%提升到85%。語音識別糾錯程序如圖3所示。
面向數據庫的語言搜索系統,通常需要精確地理解文本語義并將之轉化為計算機可以理解處理的形式化表示,進而轉化為精確的SQL查詢語言。目前NLU方法主要分為兩類,一類是基于目前快速發展的深度學習技術,如embedding嵌入式學習算法[8],RNN、LSTM等遞歸型深度學習神經網絡[9],通過學習得到問句和語料庫、知識庫之間的映射關系。另一類是基于符號邏輯的NLU方法,利于符號化文法對自然語言問句進行分析并轉化為結構化。這種分析方法依賴于問句的語句規范性,當面對一些口語化、不規范的短文本時,很難得到精確的分析結果[10]。
意圖分類與屬性抽取
NLU的處理過程是將一段文字輸入,轉換為一種結構化的語義表示,在其實施方法上會分成2個步驟:用戶意圖的判定和屬性的結構化抽取。一個意圖和屬性抽取實例見圖4。
在圖4中,針對“我要查詢6月份重慶高汽包裝油的銷量”這一段短文本信息。第一個步驟是要理解用戶的意圖,即銷量查詢;第二個步驟為屬性抽取,即把地區、品種、時間等關鍵的信息處理出來,從而得到一個比較完整的結構化語義表示。
在處理意圖理解時,通常的方法是將其抽象為一個分類問題,并利用CNN神經網絡、SVM分類器等典型的機器學習方法進行分類。除此之外,處理意圖之前還需要對文本進行分詞以及對詞進行向量化表示,目前一般采取開源的jieba、SnowNLP、THULAC、NLPIR 等工具進行中文分詞[11],并采用word embedding或基于知識的語義表示法進行向量化處理[12]。
在處理屬性抽取時,業界一般會將其轉換為序列標注問題,如阿里巴巴的iDST NLU團隊采用了雙向LSTM加CRF解碼器的方式[13]。為配合較多的匹配結果,很多機構采取了大數據分析的方法,收集諸如 probase、Web文 本、Bing查詢日志和DBpedia多種數據資源的300多TB數據以及上億數量級的google查詢日志等數據,從數據中挖掘大量的屬性[14]。
服務配置

圖4 意圖和屬性抽取實例
在潤滑油公司智能語音系統的搭建中,NLU功能是最核心也是最重要的部分。經過技術選型和方案比較,選取了開源的RASA NLU開發框架作為系統的NLU功能模塊核心。RASA NLU是Github上一個開發團隊做的一個開源項目,優勢就是只提供框架流程,可自定義自己的NLU功能,可本地化部署,和google micro的閉源框架相比,不需要依賴互聯網。BMW、UBS等企業都在用RASA框架開發自己的產品。NLU服務搭建流程見圖5。
數據查詢的主要實現原理是:將NLU服務參數根據業務需求進行一一映射配置,即對象關系映射,把配置參數設置為數據源data source的模型結構配置,實現面向對象編程JAVA里不同類型系統的數據之間的轉換。
在本系統中,首先配置業務需求與參數定義;接著在JAVA端調用NLU提供的restful API接口服務,得到用戶意圖以及相應的屬性維度;再利用相應的對照映射關系表組成查詢對象和查詢條件;最后拼接生成SQL查詢語句,得到查詢結果。
前端界面取得Java返回的固定格式的查詢結果數據后,針對界面交互以及實際業務邏輯進行數據的加工處理,結合用戶體驗習慣渲染到瀏覽器界面。在潤滑油公司智能語音查詢系統中查詢“去年上海金工液銷量”的結果顯示界面見圖6。
由圖6可以看出,系統正確地顯示了查詢結果,并且顯示了查詢維度和查詢意圖,以及ASR、NLU、數據庫查詢各自花費的時間。
為了深入了解智能語音查詢系統的應用效果,我們選擇了如下的測試場景對查詢正確率進行測試:
測試人員:3人(2男,1女);
測試案例:每人50個測試語句,其中40個銷量意圖,10個其他意圖。
智能語音查詢系統查詢正確率測試結果見表2。
由表2可見,平均查詢正確率達到90.7%。通過分析發現,由于部分查詢字段為石化專有名詞,訊飛語言識別系統無法給出正確的識別結果,應用糾錯程序也無法全部改正此類識別錯誤。此外,測試員的普通話發音清晰度、語速及其周邊噪聲也會對識別的正確程度產生影響。此外,測試過程中還發現,由于訓練樣本充足,NLU模型通過訓練,得到了良好的性能。因此,本次測試中能夠正確識別的語音,均能夠通過NLU系統正確地解析意圖和抽取屬性,達到理想的查詢結果。
所搭建的潤滑油公司智能語音查詢系統主要實現了如下功能:
◇系統化:搭建了語音查詢智能系統雛形,實現了語音、語義結果的保存;
◇模塊化:按功能模塊化,以微服務的方式對外提供能力輸出;
◇接口化:語音識別、語義識別以及系統的能力輸出都包裝成標準接口,方便應用調用。
在未來的工作中,將著重實現多意圖、多屬性下的智能查詢,實現跨主題的語音查詢,并能夠滿足業務用戶的交互式查詢需求。在硬件配置方面,目前的系統搭建在測試環境下,性能較低,正式環境硬件架構將主要采用Nginx+keepalive的HA負載均衡方案,在2臺Server上部署語言識別、數據庫查詢和前端渲染服務,同時將NLU服務部署在帶有GPU的服務器上,可提升響應速度,滿足多用戶訪問、模型快速迭代的需求。

表2 智能語音查詢系統查詢正確率測試結果
本文所搭建的智能語音查詢系統實現了在現有潤滑油移動應用的基礎上添加語音識別的功能,同時對系統的各個關鍵環節做了深度測試和驗證。在未來的工作中,將以標準接口的方式提供語音查詢服務,推廣至集團內其他企業應用。