要更好的了解語音交互,那么就不得不了解背后的技術(shù)知識,國慶花了幾天大致看完了宗成慶的《統(tǒng)計自然語言處理》,這本書主要講的是語言交互里最關(guān)鍵的部分,即Natural languge Processing。為了自我梳理,把本書和看的吳軍的《數(shù)學(xué)之美》 一起匯總了下,整理出來給需要的童鞋。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供定海網(wǎng)站建設(shè)、定海做網(wǎng)站、定海網(wǎng)站設(shè)計、定海網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、定海企業(yè)網(wǎng)站模板建站服務(wù),10多年定海做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。本文分四個部分,相對比較長,而且又是技術(shù)的,可能會比較難看進去,但是….要堅持。
一,語音交互的系統(tǒng)構(gòu)成
二,語音交互面臨的困難
三,自然語言處理的關(guān)鍵技術(shù)
四,具體場景語音交互實現(xiàn)的技術(shù)原理
一,語音交互的構(gòu)成
語音交互一般包括三個模塊:
語音識別 ASR(Automatic Speech Recognition),主要工作是將聲音信息轉(zhuǎn)化為文字。
自然語言處理 NLP(Natural Language Processing),主要工作是理解人們想要表達的意思,并給出合理的反饋。
語音合成TTS( Text To Speech),主要工作是指將文字轉(zhuǎn)化為聲音
《統(tǒng)計自然語言處理》給了更細致和完整的的人機對話系統(tǒng)組成結(jié)構(gòu),主要包括如下6個技術(shù)模塊:
1,語音識別模塊(speech recognizer)
實現(xiàn)用戶輸入語音到文字的識別轉(zhuǎn)換,識別結(jié)果一般以得分高的前n(n≥1)個句子或詞格(word lattice)形式輸出。(把用戶說的語音轉(zhuǎn)成文字)
2,語言解析模塊 (language parser)
對語音識別結(jié)果進行分析理解,獲得給定輸入的內(nèi)部表示。(即把用戶說的轉(zhuǎn)成機器理解的語言)
3,問題求解模塊(problem resolving)
依據(jù)語言解析器的分析結(jié)果進行問題的推理或查詢,求解用戶問題的答案。 (即解決用戶問題的模塊,比如調(diào)用的百度搜索)
4,對話管理模塊(dialogue management)
是系統(tǒng)的核心,一個理想的對話管理器應(yīng)該能夠基于對話歷史調(diào)度人機交互機制,輔助語言解析器對語音識別結(jié)果進行正確的理解,為問題求解提供幫助,并指導(dǎo)語言的生成過程??梢哉f,對話管理機制是人機對話系統(tǒng)的中心樞紐。( 能夠記錄歷史對話數(shù)據(jù),通過訓(xùn)練能夠給到用戶更好的回答)
5,語言生成模塊(language generator)
根據(jù)解析模塊得到的內(nèi)部表示,在對話管理機制的作用下生成自然語言句子。 (把回答的機器語言再轉(zhuǎn)換成 口語語言)
6,語音合成模塊(speech synthesizer)
將生成模塊生成的句子轉(zhuǎn)換成語音輸出。(把口語語言再轉(zhuǎn)化成語音)
二,語音交互的面臨的困難
下圖是知乎問題 為什么 Siri 聽懂了我的話,還是不能做出有效的回答或準(zhǔn)確的操作?的內(nèi)容,很好的例證了語音交互里的的問題在于 語義理解,即準(zhǔn)確的理解用戶的對話目的。Siri可以很好的識別語音,即能知道用戶說的是“ 明天早上9點幫我預(yù)約出租車去公司“,但是卻不能理解你的對話目的,到底是要設(shè)定預(yù)約提醒日歷,還是要提前預(yù)約出租車。
而造成Siri不能理解用戶的原因是,1,原本的對話有多個含義,2, 原本的對話里 滴滴打車對于Siri來說是未知語言。(當(dāng)時內(nèi)置系統(tǒng)并沒有對接滴滴)
因此語音交互最終需要解決的關(guān)鍵問題是歧義消解(disambiguation)問題,和未知語言現(xiàn)象的處理問題。
理解了這個背景,我們在和Siri對話或者設(shè)計語音交互的功能時就能理解它們?yōu)槭裁床荒茏龀鲇行У幕卮?。下面一篇講的就是怎么做語義理解。
三,自然語言處理的關(guān)鍵技術(shù)
怎么讓機器去理解 “ 明天早上9點幫我預(yù)約出租車去公司“ 這句話, 就像對于一個2年紀(jì)小孩子,它可能聽得懂但是看不懂,那么我們是不是先要要教她這句話是這樣讀:
“ 明天/早上/9點/幫/我/預(yù)約/出租車/去/公司”——即 中文分詞
然后教她意思是 “明天早上9點/幫我/預(yù)約出租車/去公司”——即 句法結(jié)構(gòu)
然后告訴她這里的“預(yù)約”不是預(yù)約提醒,即語義分析
最后 “剛說的明天早上9點幫我預(yù)約出租車去公司。 但是我現(xiàn)在不需要了”—是轉(zhuǎn)折,即篇章分析
1,中文分詞
詞是對話最小單元,因此理解一句話的前提是能夠知道對話里用了哪些詞。
比如:“上海大學(xué)城書店在哪里”,就需要拆分成“上海/大學(xué)城/書店/在/哪里”,而不是: “上海大學(xué)/城/書店/在/哪里”
下面是《數(shù)學(xué)之美》吳軍講的 分詞的統(tǒng)一方法,他講的比較直接好了解,就直接截圖了。
不同應(yīng)用的 分詞顆粒度大小是不同的,早期谷歌的分詞采用Basic Technology公司的通用分詞器,分詞結(jié)果沒有針對搜索進行優(yōu)化,后期還專門為搜索設(shè)計和實現(xiàn)了自己的分詞系統(tǒng)。
2, 句法分析(syntactic parsing)
文中的解釋是句法分析是自然語言處理中的關(guān)鍵技術(shù)之一,其基本任務(wù)是確定句子的句法結(jié)構(gòu)。 其實說簡單點, 我的理解是,中文分詞是把一句話拆分成 word1, word2, word3,那么句法分析就是把一句拆分成 主語,謂語,賓語….。
通過句法分析,能夠更快的理解一句話,比如在理解英文對話的時候,雖然有些形容詞看不懂,但是我們找到動詞和主語或賓語后,能夠大致知道這句話的意思。
基于概率上下文無關(guān)文法(probabilistic (或stochastic)context-free grammar, PCFG或SCFG)的短語結(jié)構(gòu)分析方法可以說是目前最成功的語法驅(qū)動的統(tǒng)計句法分析方法,有興趣的可以深入了解下。
3,語義分析
語義分析主要是詞義消歧和語義角色標(biāo)注。
詞義消歧主要是因為一詞多義非常普遍,如,英語中的單詞bank的含義可以是“銀行”,也可以是“河岸”,到底是哪個需要根據(jù)上下文環(huán)境,自動排除歧義。
比如 “ take me to the bank in the north “ 到底是去北邊的銀行還是去北邊的河岸。
詞義消歧方法分為有監(jiān)督的消歧方法(supervised disambiguation)和無監(jiān)督的消歧方法(unsupervised disambiguation)。在有監(jiān)督的消歧方法中,可以根據(jù)訓(xùn)練數(shù)據(jù)得知一個多義詞所處的不同上下文與特定詞義的對應(yīng)關(guān)系,那么,多義詞的詞義識別問題實際上就是該詞的上下文分類問題,一旦確定了上下文所屬的類別,也就確定了該詞的詞義類型。
在無監(jiān)督的詞義消歧中,由于訓(xùn)練數(shù)據(jù)未經(jīng)標(biāo)注,因此,首先需要利用聚類算法對同一個多義詞的所有上下文進行等價類劃分,如果一個詞的上下文出現(xiàn)在多個等價類中,那么,該詞被認為是多義詞。然后,在詞義識別時,將該詞的上下文與其各個詞義對應(yīng)上下文的等價類進行比較,通過上下文對應(yīng)等價類的確定來斷定詞的語義。
4,篇章分析
篇章在英文中常用“discourse”表示,在漢語里常有篇章、語篇或者話語之說。篇章分析的最終目的是從整體上理解篇章,最重要的任務(wù)之一是分析篇章結(jié)構(gòu)。
在對話的過程中我們很少長篇大論,但是在多輪對話時,一整段對話其實是一個篇章。所以需要理解每句話之間或者說篇章的結(jié)構(gòu)。
比如:“ 幫我定個明天早上7點的鬧鐘“ “ 算了,太早了,幫我改成8點“ 那么通過理解兩句話的結(jié)構(gòu),我們知道需要去取消之前7點的鬧鐘,并設(shè)置一個8點的鬧鐘。
四,人機對話系統(tǒng)的實現(xiàn)技術(shù)
下面是《統(tǒng)計自然語言處理》里介紹的一種口語解析方法——基于規(guī)則和HMM的統(tǒng)計解析方法,文章并沒有說這是人機對話系統(tǒng)的標(biāo)準(zhǔn)實現(xiàn)技術(shù),而且表示這種做法有一定缺陷。 我們只需要了解這種根據(jù)詞匯分類,語義組塊分析后生成機器能夠理解的對話分析機制。
基于規(guī)則和HMM的統(tǒng)計口語解析方法是
由詞匯分類模塊對其詞匯進行詞義分類,即把句子中的每一個詞映射到相應(yīng)的詞義類中。語義組塊分析器從句子對應(yīng)的詞義類序列中分析出語義組塊,組塊分析器輸出的是一個語義組塊序列。統(tǒng)計解析模塊從語義組塊序列分析出句子IF表示的主要框架。語義組塊解釋模塊把各個語義組塊解釋為相應(yīng)的IF表達式片段。 經(jīng)過對上述兩部分的合并,得到最終的IF(interchange format)表達式(國際語音翻譯先進研究聯(lián)盟C-STAR采用的一種稱作中間轉(zhuǎn)換格式的語義表示形式,以有利于多語言互譯)。
1,IF表達式格式:
Speaker:Speech-Act[+Concept]*[(Argument=Value[,Argument=Value]*)]
例:明天我想預(yù)訂一個單人間。
IF:c:give-information+reservation+room(room-spec=(room-type=single, quantity=1), reservation-spec=(time=(relative-time=tomorrow)))
該IF的含義為:說話人為“c”,該句子的意圖是提供信息,主題概念為“預(yù)訂房間”,關(guān)于“房間”的具體信息由一組“屬性-值”對描述:房間類型(room-type)為單人間(single),數(shù)量(quantity)為1;“預(yù)訂”的具體要求通過“相對時間(relative-time)”這一參數(shù)描述,參數(shù)值取“明天(tomorrow)”。
2.詞匯分類
據(jù)詞匯的語義功能,把每個詞匯劃分到不同的類。其分類依據(jù)是詞匯在句子中的語義功能,語義功能相同的詞匯歸為一類,例如,“單人間”和“雙人房”屬于同一個語義類;“大”和“小”雖然詞義不同,但在句子中的語義功能是相同的,所以,把它們也歸為一類。
3,語義組塊分析
根據(jù)語義組塊具體的意義,對語義組塊進行了語義分類。例如,所有對時間的表達,“明天”、“后天”、“星期一”、“三天后”等,都歸屬于時間類語義組塊,記作TIME;對房間類型的表達,如“單人間”、“雙人間”、“一個人住的房間”、“寬敞的房間”等,都歸屬于房間類語義組塊,記作ROOM_TYPE。
4,統(tǒng)計解析過程
手工標(biāo)注一定數(shù)量的語料。對于語料中的每一個句子,首先對它進行語義組塊分析,得到該句子對應(yīng)的組塊序列,然后給出該句子的IF語義表示,最后把IF語義表示線性化并且和語義組塊序列對齊。用這些語料來對模型的參數(shù)進行訓(xùn)練,就得到一個統(tǒng)計解析模型。
對于一個需要解析的句子,首先對它進行語義組塊分析,得到該句子對應(yīng)的語義組塊序列,然后把語義組塊序列作為統(tǒng)計解析模型的輸入,則解析模型的輸出就是輸入句子的線性化后的IF框架。
5,組塊解釋方法
在語義組塊分析時,通過規(guī)則方法獲得語義組塊的同時,也可以得到語義組塊內(nèi)部的層次結(jié)構(gòu),但這種層次結(jié)構(gòu)并不是我們所需要的IF表示,因此,我們設(shè)計了語義組塊解釋模塊,用來把這種層次結(jié)構(gòu)轉(zhuǎn)換為IF表示。語義組塊解釋模塊是與組塊分析模塊配合工作的,組塊分析過程中用到的每一條規(guī)則都對應(yīng)一個規(guī)則的解釋方法,利用這些解釋方法可以把規(guī)則所涉及的詞匯解釋為相應(yīng)的IF表示。循環(huán)調(diào)用生成語義組塊的每一條規(guī)則所對應(yīng)的解釋子程序,就可以得到該語義組塊對應(yīng)的IF層次表示。
6,IF的生成
從上面的介紹可以看出,基于HMM的解析模塊輸出的結(jié)果和語義組塊解釋的結(jié)果都只是IF的片段,只有把它們合并才能得到完整的IF表示。語義組塊解釋模塊把每個語義組塊轉(zhuǎn)換為IF片段,同時每個語義組塊經(jīng)過統(tǒng)計解析模塊解析后,又對應(yīng)一個標(biāo)注符號,并且該標(biāo)注符號最終要作為IF表示中的一個結(jié)點。在各組塊合并時,IF生成器把語義組塊解釋結(jié)果作為該結(jié)點的子結(jié)點,把經(jīng)過簡化處理的concepts序列還原為原來的concepts序列,這樣就得到了IF表示。
至此,本文講完了,感謝&撒花。并推薦 宗成慶的這本《統(tǒng)計自然語言處理》。
新聞標(biāo)題:關(guān)于語音交互,你不得不知的技術(shù)知識
網(wǎng)站URL:http://www.rwnh.cn/article2/cpppoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、標(biāo)簽優(yōu)化、虛擬主機、全網(wǎng)營銷推廣、響應(yīng)式網(wǎng)站、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)