專利名稱::語音查詢中的辨音方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及語音查詢中的辨音技術(shù),特別涉及對未經(jīng)訓(xùn)練的非特定人的語音查詢進行基于知識的辨音方法。
背景技術(shù):
:知識服務(wù)是知識社會的一個新興產(chǎn)物。在知識型社會中,人們對信息和知識的需求越來越大,并且希望隨時隨地地獲得所需要的信息和知識。信息和知識服務(wù)就是指通過某種形式的知識反饋,滿足用戶提出的知識需求的過程。它具有豐富性、層次性、智能性和高效性的特點。人機交互,是研究人和計算機以及它們相互影響的技術(shù)。人機界面是指計算機和它的使用者之間的對話的接口,是計算機系統(tǒng)的重要組成部分?,F(xiàn)在關(guān)于人機交互界面的研究,隨著硬件性能的日益提高和各種輔助輸入設(shè)備的產(chǎn)生,越來越向多通道化,智能化的方向發(fā)展。這種人機界面允許用戶使用不同的輸入渠道,比如語音、手勢和手寫輸入等多種形式。采用語音交互來提供服務(wù),使用戶完全脫離手、眼的勞動,不需要手工輸入查詢需求,也不需要看屏幕,只需利用口、耳即可快速輕松地獲得所需要的知識。語音界面可以廣泛應(yīng)用到臺式機、電話、手機、PDA等高技術(shù)產(chǎn)品中,為用戶提供更大的便利。它對于外在的環(huán)境和條件要求不高,一部電話或一個手機就可以在機場、車?yán)?、家里、飯店或者外出郊游時,對知識進行實時地語音查詢和學(xué)習(xí),極大地方便了用戶的使用。語音查詢系統(tǒng),因為其建立在龐大的包羅萬象的知識庫上,可查詢的豐富知識遠遠大于一個普通的數(shù)據(jù)庫系統(tǒng),而且各個學(xué)科的知識是相互關(guān)連在一起的,可以利用各個學(xué)科知識之間存在的聯(lián)系進行推理,得出知識庫中本沒有的知識,提供豐富多彩的知識服務(wù)。語音識別技術(shù)發(fā)展到今天,已經(jīng)取得了顯著的成效,而且也已經(jīng)應(yīng)用到許多領(lǐng)域,但是識別率離真正的應(yīng)用還有一定距離,它對用戶及環(huán)境太過敏感,尤其在識別一些專業(yè)文本時,更是錯誤頻頻。常見的語音識別軟件如IBMViaVoice,它本身就自帶了糾錯功能,雖然它在一般文本的語音識別中有較高的識別率,但是還存在著不少問題,它對用戶的發(fā)音及其周圍的環(huán)境過于敏感。如果用戶口音較重或說話時環(huán)境噪聲較大,那么識別率就會大大降低。另外要想有好的識別率,一個用戶必須訓(xùn)練大量的樣本,即便如此還是會出現(xiàn)各種錯誤,這樣很不利于語音識別技術(shù)的實際應(yīng)用。語音咨詢服務(wù)面向的是各種層次的用戶,用戶一般通過電話或手機進行語音輸入,由于電話屏蔽噪聲能力差,而且用戶不可能事先花很多時間和精力去訓(xùn)練,所以識別率非常低,而這些語音識別軟件本身的“辨音”能力又不夠強大,因而使得實時語音查詢很難有廣泛的應(yīng)用。例如用IBMViaVoice2000朗讀“糖尿病有哪些癥狀”,由于朗讀時語速稍快,ViaVoice的識別結(jié)果竟變成“糖尿病有哪些振作”。其原因就在于目前的語音系統(tǒng)一般都是以語料庫為基礎(chǔ)對文本進行分析,從而漏掉了知識的許多重要信息。如果從知識的角度進行分析推理,“糖尿病”是中醫(yī)概念,跟其有聯(lián)系的屬性中“癥狀”與“振作”語音距離最近。因此經(jīng)過語音分析和知識分析后,“振作”替換為“癥狀”才使得“糖尿病有哪些振作”有意義。當(dāng)然,這種分析的結(jié)果可能有多個假設(shè)(即替換),我們需要對不同的假設(shè)應(yīng)用背景知識進行逐個過濾,找出最符合用戶意思的假設(shè)來。近幾年,知識的大規(guī)模獲取、形式化加工和分析已越來越受到人們的重視。國外比較知名的有CYC工程、BKB、CommonKADS、KIF和WordNet等。美國的Cyc工程從《大英百科全書》和其他知識源手工地整理人類常識性知識,建立一個龐大的人類常識知識庫;美國的BKB研究致力于建立一個大學(xué)水平的植物學(xué)知識庫;歐洲的CommonKADS方法學(xué)提供了一套工程化的開發(fā)知識系統(tǒng)的方法論,設(shè)計了一套知識模型語言;KIF是Stanford大學(xué)的學(xué)者們研制的一種不同的知識表示之間的交換方法;WordNet知識庫是由Princeton大學(xué)開發(fā)的一個龐大的語言知識庫系統(tǒng)。國內(nèi),青年學(xué)者曹存根于1995年提出了的國家知識基礎(chǔ)設(shè)施(NKI)的概念。國家知識基礎(chǔ)設(shè)施是一個龐大的、可共享的、可操作的知識群體,它的主要目的是構(gòu)建一個海量領(lǐng)域知識庫,其中不但包含各個學(xué)科的公共知識(包括醫(yī)學(xué)、軍事、物理、化學(xué)、數(shù)學(xué)、化工、生物、氣象、心理學(xué)、管理學(xué)、金融、歷史、考古、地理、地質(zhì)、文學(xué)、建筑學(xué)、音樂、美術(shù)、法律、哲學(xué)、信息科學(xué)、宗教、民俗,等等),而且還融入了各學(xué)科專家的個人知識,并在領(lǐng)域知識的基礎(chǔ)上構(gòu)建人類常識庫。語音查詢系統(tǒng)是一個以NKI跨學(xué)科知識庫中的海量知識為基礎(chǔ),并通過語音來查詢各學(xué)科知識的多用戶智能應(yīng)用系統(tǒng)。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種任意層次的、領(lǐng)域可定制的通用知識查詢語言,為辨音分析提供基礎(chǔ),并對語音錯誤進行測度,定量分析和糾正的辨音模型和算法,最大限度地提高對語音查詢文本的糾錯率,使“計算機辨音”達到實用化的程度。為實現(xiàn)上述目的,語音查詢中的辨音方法包括步驟利用現(xiàn)有語音識別接口對語音進行識別,在識別后,還包括步驟確定用戶可定制的知識查詢語言;形成基于知識的辨音模型;基于知識、查詢語言和辨音模型的快速辨音算法。本發(fā)明對于外在的環(huán)境和條件要求不高,一部電話或一個手機就可以在機場、車?yán)?、家里、飯店或者外出郊游時,對知識進行實時地語音查詢和學(xué)習(xí),極大地方便了用戶的使用。圖1為用戶語音查詢的流程圖它描述如何接受用戶語音查詢,將查詢的知識答案返回用戶;圖2為多層次用戶知識查詢語言語法圖;圖3為辨音系統(tǒng)流程圖,描述NKI知識服務(wù)器對用戶語音查詢文本的辨音過程;圖4為相似智能分詞實例,描繪出對用戶語音查詢文本進行相似分詞的步驟;圖5為實驗結(jié)果數(shù)據(jù),列出了IBMViaVoice對用戶語音查詢的識別結(jié)果及本發(fā)明的辨音結(jié)果。具體實施例方式在圖1中,用戶使用手機、電話或PDA等工具進行語音查詢,首先我們利用現(xiàn)有的語音識別接口(如IBMViaVoice)進行識別,得到語音查詢文本,其中可能包含各種錯誤;然后利用辨音系統(tǒng)在知識查詢語言和大規(guī)模知識庫的基礎(chǔ)上進行分析推理,得到正確的用戶查詢,最后調(diào)用我們的自然語言查詢模塊找到符合用戶需求的知識信息并反饋給用戶。如果我們的知識庫沒有答案,會通過索引去查詢用戶定制的知識庫,以達到通用性的目的。在圖3中,先根據(jù)辨音模型及查詢模板庫、知識庫,對用戶語音查詢文本進行相似智能分詞,再檢索查詢模板庫,找到與之匹配的模板,然后對各候選模板進行知識驗證。如果找到了相關(guān)的知識,則辨音成功,該分詞結(jié)果對應(yīng)的句子就是對用戶語音查詢文本的辨音結(jié)果,并將查詢答案反饋給用戶。1.我們介紹本發(fā)明中的多層次、領(lǐng)域可定制的知識查詢語言和存儲模式。首先,我們對知識庫中的所有屬性進行聚類,將查詢方式相似的屬性聚在一起,抽象出共同的查詢模式,形成具有繼承關(guān)系的知識查詢語言;其次定義具體屬性的提問方式;最后利用編譯程序自動生成查詢模板集?;痉柮枋觥鰀efquery查詢語言引導(dǎo)關(guān)鍵詞■繼承查詢語言之間的繼承關(guān)系。它繼承所有的上層語言,使得自身的表達能力比上層語言更強■<關(guān)于本層語言的解釋>對本層語言的說明,是一個字符串?!鎏釂栍|發(fā)器表示用戶提問的觸發(fā)條件。一旦用戶提問觸發(fā)此條件時,立即執(zhí)行查詢動作getc(A,C’)或getv(C,A)■<?C>待查詢概念的標(biāo)示變量■<?C’>待查詢相關(guān)概念的標(biāo)示變量■<?C>={getc(A,C’)}從知識庫中提取那些槽A的值為C’的所有概念C?!?amp;lt;?C’>={getc(C,A)}從知識庫中提取概念C在槽A的上的值?!?amp;lt;可領(lǐng)域定制術(shù)語>可以是用戶提問中可能出現(xiàn)的一般性關(guān)鍵詞,也可以是表示領(lǐng)域可定制的術(shù)語變量。■<X|Y|...|Z>這是我們發(fā)明的一項縮寫符號。它表示兩個含義。第一,X,Y,...Z為查詢語言關(guān)鍵詞。第二,在用戶查詢中,使用X,Y,...,或Z的意義是一樣的,均得到相同的答案。用巴克斯范式表示就是,<X|Y|...|Z>∷=X|Y|...|Z。另外,我們將X,Y...Z稱為必要詞,它們在當(dāng)前位置必須且只能出現(xiàn)其中一個。■[<X|Y|...|Z>]表示X,Y,...Z這些詞在該處可以省略,我們將其稱為可去詞,將[]稱為可去符。■<!提問主題詞>一個有著相同或相似意義的詞的聚類,如<!什么疑問詞>=<什|什么|哪|哪些|何|啥|...>?!?amp;lt;?C的提問模式>表示查詢<?C>時可能的提問方式。其語法是?C<可領(lǐng)域定制疑問詞>■<?C’的提問模式>表示查詢<?C>時可能的提問方式。其語法是?C’<可領(lǐng)域定制疑問詞>通用查詢語言的巴克斯范式如下defquery<本層語言>[繼承<上層語言>]{說明<關(guān)于本層語言的解釋>提問觸發(fā)器<可領(lǐng)域定制術(shù)語>,<?C>={getc(A,C’)},<可領(lǐng)域定制術(shù)語>,<?C’>={getc(C,A)},<可領(lǐng)域定制術(shù)語><?C>的提問模式<?C’>的提問模式}為了具體應(yīng)用通用查詢語言,我們以“事件地點”為例,關(guān)于“事件地點”的提問主題描述如下defquery事件地點(){說明用于提問事件的地點。提問觸發(fā)器1<?C>={getc(A,C’)};<?副詞>;[<是|為>][<在|于>];<?C’>={getc(C,A)};<?事件>?C<!什么疑問詞><?本體詞>?C’<!地點疑問詞>}在“defquery事件地點語言”中有1個提問觸發(fā)器。根據(jù)具體情況,設(shè)計者可以定義任意多個。利用這一語言,設(shè)計者可以定義更具體的事件地點查詢語言。對具體屬性來說,例如,為定義“出生地點”和“發(fā)生地點”的查詢語言,設(shè)計者可以簡單地采用繼承的方法,定義如下defquery出生地點(?事件={<出生|生>},?本體詞={<人>})繼承事件地點defquery發(fā)生地點(?事件={<發(fā)生|出現(xiàn)>},?本體詞={<人>})繼承事件地點為便于進行模板匹配,我們用一個編譯程序?qū)⒍x好的知識查詢語言編譯為知識查詢模板,然后寫入查詢模板庫里。例如,對屬性“出生地點”對應(yīng)的查詢語言編譯后的查詢模板為#出生地點<C>;[<是|為>][<在|于>];<!地點疑問詞>;<出生|生>@C’<!什么疑問詞><人>;[<是|為>][<在|于>];<C’>;<出生|生>@C其中“@C’”表示該模板提問屬性值,即某概念C的屬性“出生地點”的值;“@C”表示該模板是提問概念,即知識庫中哪個概念的屬性“出生地點”的值為C’。2.我們介紹本發(fā)明中的辨音模型。未經(jīng)語音訓(xùn)練的非特定人在非特定場合下進行語音查詢時,由于受到噪聲、電話線路及朗讀者的發(fā)音等因素的影響,目前的語音識別技術(shù)還很難得到滿意的識別效果,識別后的文本會帶有各種各樣的錯誤,有些錯誤非常離譜,人看了都搞不清是什么意思。因此為了使計算機能夠真正“辨音”,首先我們需要設(shè)計一種辨音模型,對用戶可能出現(xiàn)的語音錯誤進行歸類、定量分析和準(zhǔn)確測度。辨音模型包括錯誤的發(fā)生原因、相似度的計算、辨音的觸發(fā)條件、多種辨音結(jié)果中最優(yōu)解的選取規(guī)則以及知識的推理機制等。我們要實現(xiàn)一個最佳平衡既要糾正最多的錯字(哪怕錯的比較離譜),又要保證正確的字不被誤糾,而在實際中是很難找到這樣一個最佳點的。在上面我們舉過一個例子,用IBMViaVoice朗讀“糖尿病有哪些癥狀”,識別結(jié)果竟為“糖尿病有哪些振作”。其原因是ViaVoice沒有從知識的角度來分析,它認為“振作”本身是一個詞,而且離“癥狀”的距離也不是很近,即相似度不夠高,所以沒有糾正這個錯誤。當(dāng)然這是一種保險的做法,保證正確的字或詞語不會被誤糾,但是卻降低了糾錯率,影響了識別精度。我們需要結(jié)合本體和知識,研究一種達到最佳平衡的辨音模型,以最大限度地提高糾錯率。1)錯誤原因。由于用戶是利用語音查詢的,那么語音查詢文本中出現(xiàn)的錯誤都是語音錯誤,其特點是,錯別字是字形不一定相似,但發(fā)音相同或相似的漢字。如上例中的“振”與“癥”發(fā)音相同,“作”與“狀”雖然發(fā)音不同但相似。2)錯誤分類。從知識的角度來分,用戶出現(xiàn)的錯誤可分為以下三類●概念錯誤例1提出有多少人正確彝族有多少人例2黃旗的原料有哪些正確黃芪的原料有哪些例1的“提出”,例2的“黃旗”,都屬于概念錯誤,該類錯誤的特點是知識庫的概念弄錯了,提問句型并沒錯?!窬湫湾e誤例3中國有那些城市正確中國有哪些城市對應(yīng)的知識查詢模板為<C>;<下轄|包括|有>;<!什么疑問詞>[<!地區(qū)地點名詞>]@C′(“!什么疑問詞”中沒有“那些”,只有“哪些”)例4美國和十獨具正確美國何時獨立對應(yīng)的知識查詢模板為<C>;<!時間疑問詞>;<獨立|自由>@C′(“!時間疑問詞”中沒有“和十”,只有“何時”)該類錯誤的特點是知識庫的概念C沒錯,但是提問句型有錯,我們將這種錯誤稱作句型錯誤。●混合錯誤例5肩負著是核實獨立的正確柬埔寨是何時獨立的該類錯誤的特點是概念錯誤和模板錯誤同時出現(xiàn)。3)相似度的計算。我們糾正的錯字都有一個共同點,錯別字和正確字語音相似,因此我們需要通過相似度的計算來確定某漢字糾不糾正,如何糾正。為了對語音錯誤進行準(zhǔn)確測度,本發(fā)明提出了一種相似度的計算模型(本發(fā)明中提到的相似均指語音相似)。相似度用來表示兩個字之間或兩個詞之間的相似程度,值域為。從拼音的角度來看,一個漢字C是由一個聲母和一個韻母組成的,我們可以用(ic,v)來表示漢字,其中ic和v分別表示組成該漢字的聲母和韻母(有些漢字沒有聲母,則對應(yīng)ic=空)。于是我們可以將漢字“是”和“四”表示為(sh,i)和(s,i),這種表示形式與漢字的無調(diào)拼音一致。盡管GB-2312漢字共有6700多個,但是所有的漢字最終可以歸結(jié)為大約400個類。然后,我們從語音學(xué)的角度對這400個類進行分析,總結(jié)類間的發(fā)音相似度,表1出了部分類間的相似數(shù)據(jù)。給定任意兩個漢字C1=(ic1,v1)和C2=(ic2,v2),我們將它們的發(fā)音相似度PSIM(C1,C2)定義為●1,如果ic1=ic2且v1=v2●CSIM([(ic1,v1)],[(ic2,v2)]),如果ic1≠ic2或v1≠v2兩個漢語詞組W1=C1C2...Cn和W2=D1D2...Dn之間的發(fā)音相似度為PSIM(W1,W2)=∑PSIM(Ci,Di)/n表1部分類間的發(fā)音相似度我們再來介紹幾個定義定義1同音字如果字C和源字C’之間的相似度為1,則稱C是C’的同音字。定義2相似字如果字C和源字C’之間的相似度大于某閾值μ1,則稱C是相似字,且C相似于C’。定義3相似詞如果詞W和源詞W’之間的相似度大于某閾值μ2,而且詞中的字都對應(yīng)相似,則稱W為相似詞,且W相似于W’。定義4精確詞如果詞W在原文本對應(yīng)位置出現(xiàn),則稱W為精確詞。經(jīng)實驗測試,μ1=0.6,μ2=0.7。例如“癥狀”與“振作”PSIM(“癥”,“振”)=CSIM([(zh,eng)],[(zh,en)])=0.95>μlPSIM(“狀”,“作”)=CSIM([(zh,uang)],[(z,uo)])=0.7>μl因為“癥”與“振”,“狀”與“作”都對應(yīng)相似,而且PSIM(“癥狀”,“振作”)=[PSIM(“癥”,“振”)+PSIM(“狀”,“作”)]/2=/2=0.825>μ2,所以“振作”相似于“癥狀”,相似度為0.825。4)相似規(guī)則。在對用戶查詢進行辨音分析時,由于錯誤經(jīng)常很離譜,與正確的句子間的相似度不夠高,所以我們將相似字及相似詞的閾值放得很低,這樣一個句子就會出現(xiàn)成千上萬種相似結(jié)果,給辨音帶來了很大的工作量。為了實現(xiàn)快速辨音,我們要按照一定的規(guī)則來產(chǎn)生這些相似結(jié)果,使正確的結(jié)果最早出現(xiàn)。例如對用戶語音查詢“美國和十獨具”進行相似分析,以“美”為首的相似詞有“美國”,“湄公河”,“外國”,“美觀”,“韋伯”,“美”等;以“和”為首的相似詞有“何食物”,“何時”,“何事”,“合適”,“核實”,“合十”,“何”,“河”等。按這樣組合下去該語音查詢就有幾千種相似結(jié)果,而對每種結(jié)果我們都需要進行分析處理,所以我們要比較相似詞間的優(yōu)先級,先去處理最相似的詞。詞間優(yōu)先級的比較分為三種情況精確詞和精確詞的比較,相似詞和相似詞的比較,精確詞和相似詞的比較,我們針對這三種情況分別總結(jié)了相應(yīng)的優(yōu)先規(guī)則?!袢绻麅蓚€詞都是精確詞,則長度優(yōu)先。如上例中“美國”優(yōu)先于“美”?!袢绻麅蓚€詞都為相似詞,則同音字數(shù)多者優(yōu)先;若兩詞同音字數(shù)相同,則相似度優(yōu)先。如上例中“何時”優(yōu)先于“何”。●如果兩個詞一個為精確詞,另一個為相似詞,則相似詞優(yōu)于精確詞相似詞字數(shù)>=精確詞字數(shù)*2,且相似詞中的同音字數(shù)>=精確詞字數(shù)。如上例中相似詞“何時”優(yōu)先于精確詞“和”。5)辨音的觸發(fā)條件,即何時對用戶語音查詢進行辨音。因為辨音是需要消耗一定時間的,語音軟件識別后的用戶語音查詢文本可能有錯,也可能沒錯。我們不能對每次都執(zhí)行辨音處理,需要定義辨音的觸發(fā)條件。首先,對原查詢文本進行分詞,然后和知識查詢模板進行模板匹配。當(dāng)出現(xiàn)以下情形之一時,觸發(fā)辨音操作?!穹衷~失敗;●找不到和原查詢文本有任何匹配的知識查詢模板;●找到了和原查詢文本匹配的知識查詢模板,但相差較遠(知識查詢模板字數(shù)/原查詢文本字數(shù)<0.7);●找到了和原查詢文本完全匹配的知識查詢模板,但在知識庫里沒找到相關(guān)的知識。如果原查詢文本找到了相關(guān)的知識,則說明無誤,將該知識反饋給用戶。3.我們介紹本發(fā)明中的辨音算法。本發(fā)明中的辨音算法的本質(zhì)就是在多層次、可按領(lǐng)域定制的知識查詢語言和NKI知識庫的引導(dǎo)下,找到和用戶語音查詢文本最相似的語言形式?;痉柮枋鲋R庫詞典char*knodic[knodic_num];查詢模板詞典char*keydic[keydic_num];相似字結(jié)構(gòu)typedefstructclass_simzidata{charzi[2];∥相似字intsimdegree;∥該字與原字的相似度intdic_flag;∥查詢語言和知識庫中是否有該字為首的詞}class_simzidata;漢字相似表結(jié)構(gòu)<prelisting-type="program-listing">typedefstructclass_simzitable{charzi[2];∥漢字longkeydic_lb;∥該字在查詢模板詞典中的起始位置longkeydic_hb;∥該字在查詢模板詞典中的最后位置longknodic_lb;∥該字在知識庫詞典中的起始位置longknodic_hb;∥該字在知識庫詞典中的最后位置intsimzi_num;∥該字的相似字數(shù)class_simzidata*simzi;∥各相似字的信息}class_simzitable;∥分詞中的詞結(jié)構(gòu)typedefstructphrase{char*phrase_str;∥該詞內(nèi)容longlexi_no;∥該詞在查詢模板庫里的位置索引intvar_flag;∥該詞是知識庫概念還是查詢模板的詞}phrase;∥句子分詞信息表typedefstructdecompose_info{intphrase_count;∥包含的詞數(shù)intvar_phrase_count;∥概念數(shù)structphrase*phrase_head;∥該分詞結(jié)果中各詞的信息}decompose_info;</pre>用戶提問反饋的信息表結(jié)構(gòu)<prelisting-type="program-listing">typedefstructinfo_table{char*access_time;∥訪問時間<dpn="d12"/>char*action;∥動作查詢or添加char*question;∥對應(yīng)的完整問題charmatch_type[6];∥精確還是模糊匹配char*query_type;∥用戶提問的查詢類型char*concept;∥概念char*attr_name;∥屬性名char*attr_value;∥屬性值intvar_num;∥概念數(shù)char*var_list[VAR_COUNT];∥變量列表char*answer;∥反饋答案}info_table;<br/></pre>∥變量描述question用戶查詢IdentifyInfoTable辨音得到的知識反饋信息IdentifyResult辨音結(jié)果wordsegment用戶語音查詢文本的某相似分詞結(jié)果sen_set候選模板集sen某個候選模板SimziList與某字符相似的漢字集合SimciList相似詞集,按相似度遞減排序Success辨音成功的標(biāo)記∥函數(shù)描述AddSegTail(wordsegment,Wi)將詞Wi加入分詞結(jié)果wordsegmentCompWordSim(W1,W2)計算詞W1和W2的相似值GetText(wordsegment)得到分詞結(jié)果wordsegment對應(yīng)的句子InsertSimci(SimciList,W,simdata)將相似詞W及其相似值simdata插入到SimciList中,并保持SimciList的相似度遞減次序辨音主程序輸入用戶語音查詢文本question輸出辨音結(jié)果IdentifyResult,知識反饋信息IdentifyInfoTable<prelisting-type="program-listing">voidIdentifyProun(char*question,decompose_infowordsegment){∥若辨音已成功,則返回if(Success=1)return;if(question為空){∥如果該句已分詞完畢,則得到了一種完整的分詞結(jié)果,進行匹配驗證IdentifyInfoTable=ProcessSegment(wordsegment);∥如果該分詞找到了相關(guān)知識,則辨音成功if(IdentifyInfoTable非空){Success=1;∥該分詞對應(yīng)句子即為辨音結(jié)果IdentifyResult=GetText(wordsegment);}}else{∥繼續(xù)分詞Char=question;∥找到Char的相似字集SimziListForeverySiinSimziList{<dpn="d14"/>∥在知識庫詞典中查找以Si為首的相似詞if(zisim[neima].knodic_lb>0){for(i=Si.knodic_lb;i<=Si.knodic_hb;i++){∥得到該詞在原用戶查詢中對應(yīng)的字符串Initword=SubString(question,0,len(knodic[i]))∥計算該詞和原字符串的相似度simdata=CompWordSim(knodic[i],Initword);if(simdata>相似詞閾值){∥若相似,則將該詞相似結(jié)果按優(yōu)先度遞減的次序加入相似詞列表中InsertSimci(SimciList,knodic[i],simdata);}}}∥在查詢模板詞典中查找以Si為首的相似詞if(zisim[neima].keydic_lb>0){for(i=Si.keydic_lb;i<=Si.keydic_hb;i++){∥得到該詞在原用戶查詢中對應(yīng)的字符串Initword=SubString(question,0,len(keydic[i]))∥計算該詞和原字符串的相似度simdata=CompWordSim(keydic[i],Initword);if(simdata>相似詞閾值){∥若相似,則將該詞相似結(jié)果按優(yōu)先度遞減的次序加入相似詞列表中<dpn="d15"/>InsertSimci(SimciList,keydic[i],simdata);}}}}∥按相似度優(yōu)先級遞減次序生成分詞ForeveryWiinSimciList{∥將該相似詞加到當(dāng)前分詞結(jié)果AddSegTail(wordsegment,Wi);∥得到尚未處理的串RemainStr=SubString(question,0,len(Wi));∥遞歸處理剩下的串IdentifyProun(RemainStr,wordsegment);}}}</pre>匹配驗證程序輸入用戶查詢句子的某分詞結(jié)果wordsegment輸出該分詞結(jié)果的反饋信息表<prelisting-type="program-listing">info_tableProcessSegment(decompose_infowordsegment){∥求wordsegment中各詞在查詢模板庫里位置索引集的交集,得到該分詞結(jié)果在查詢模板庫中的出現(xiàn)空間sen_set=GetIntersection(wordsegment);∥對每個候選模板進行判斷篩選,看其是否與wordsegment匹配foreveryseninsen_set{if(wordsegment.變量個數(shù)?。絪en.變量個數(shù))<dpn="d16"/>continue;∥不匹配if(wordsegment.詞數(shù)<sen.必要詞數(shù)‖wordsegment.詞數(shù)>sen.詞數(shù))continue;if(sen.必要詞位置序列-wordsegment.非變量詞在模板中的位置序列?。絯ordsegmenmt.變量)continue;∥如果該模板滿足上述條件,而且成功地進行了知識驗證,則模板匹配成功。query_info_table=VerifyKnowledge(sen);if(query_info_table.answer!=NULL)retumquery_info_table;}returnempty;}</pre>如圖3所示,辨音的處理步驟如下1)根據(jù)辨音模型及查詢模板庫、知識庫,對用戶語音查詢文本進行相似智能分詞,每得到一種分詞結(jié)果,則轉(zhuǎn)2)。2)根據(jù)分詞結(jié)果檢索查詢模板庫,找到與之匹配的模板,然后判斷該模板在形式上是否與當(dāng)前分詞結(jié)果相匹配,從而得到候選模板集合。3)對各候選模板進行知識驗證。根據(jù)模板的提問類型以及實現(xiàn)的KAPI函數(shù)進行知識庫檢索。如果找到了相關(guān)的知識,則辨音成功,該分詞結(jié)果對應(yīng)的句子就是對用戶查詢文本的辨音結(jié)果,并將查詢答案反饋給用戶。如果沒找到相關(guān)知識,則轉(zhuǎn)1),繼續(xù)相似分詞處理。下面我們對各部分進行詳細說明。I.相似智能分詞分詞所用的詞典是知識庫詞典和查詢模板詞典,知識庫詞典包括知識庫出現(xiàn)的所有概念,而查詢模板詞典包括查詢模板庫里出現(xiàn)的所有關(guān)鍵詞及其在模板庫里的位置。用戶查詢文本中出現(xiàn)的詞既可能是知識庫概念的相似詞,也可能是查詢模板詞的相似詞。這里的分詞是相似分詞,生成與原查詢句子語音相似的所有分詞結(jié)果。經(jīng)實驗分析,非特定人在非特定場合下語音查詢的識別結(jié)果中的錯誤和正確的結(jié)果經(jīng)常有很大的差異,所以我們將相似度的閾值定義的很低,以提高辨音的正確率。這樣便使得相似分詞結(jié)果的數(shù)目非常龐大,多達幾千甚至幾萬個。我們采用相似詞排序的方法,使各分詞結(jié)果按照相似度遞減的次序出現(xiàn),每得到一種分詞結(jié)果,就去模板庫和知識庫里匹配驗證。一旦找到相關(guān)知識,則辨音成功,立刻返回,此時后面那些相似度低的分詞結(jié)果尚未出現(xiàn)。這樣便大大降低了辨音的時間復(fù)雜度。示例如圖4示,其中虛線部分的分詞結(jié)果程序沒有執(zhí)行到。II.模板匹配模板匹配的問題實際上就是判斷一個樣本屬于哪個類的問題,用戶提問句是待分析樣本,查詢模板庫里的各個模板是各種提問形態(tài)的類別。模板匹配的步驟如下對用戶查詢句子的某種相似分詞結(jié)果,作以下處理。1)首先根據(jù)各關(guān)鍵詞在模板庫里的位置索引,找到它們的出現(xiàn)空間,然后通過求交集得到該分詞結(jié)果的樣本出現(xiàn)空間。2)對樣本出現(xiàn)空間中的候選模板進行篩選,篩選的條件如下●分詞結(jié)果中的變量個數(shù)=模板的變量個數(shù)●模板的必要詞個數(shù)<=分詞結(jié)果總詞數(shù)<=模板總詞數(shù)分詞結(jié)果必須含有模板中所有的必要詞,缺一不可,即{模板中的必要詞位置序列}-{分詞結(jié)果中各非變量詞在模板中的位置序列}={分詞結(jié)果中出現(xiàn)的所有變量}●分詞結(jié)果中各詞出現(xiàn)次序和模板中各詞出現(xiàn)次序一致。這個條件決定是否有序匹配,考慮到用戶提問的自由性,可以排除該條件來實現(xiàn)無序匹配。根據(jù)這些條件的篩選我們得到了與該分詞結(jié)果在形式上相匹配的候選模板集合。III.知識驗證此時得到的候選模板還需要進行知識檢查,我們根據(jù)模板對應(yīng)的屬性以及提問類型去調(diào)用相應(yīng)的知識庫API函數(shù),看看能不能找到正確答案。KAPI是我們開發(fā)的關(guān)于知識庫操作的接口函數(shù),為上層應(yīng)用程序提供服務(wù)。常見KAPI的有∥根據(jù)概念和屬性得到屬性值get_attribute_value(concept,attribute),簡稱getv(C,A)∥根據(jù)屬性和屬性值得到概念get_concepts(attribute,attribute_value),簡稱getc(A,C’)∥得到一個概念所有的屬性get_all_attributes(concept)∥isa推理,判斷一個概念是不是另一個概念isa_reasoning(concept1,concept2)∥partof推理,判斷一個概念是不是另一個概念的一部分partof_reasoning(concept1,concept2)IV.實驗數(shù)據(jù)我們以IBMViaVoice2000作為語音識別接口,由多個沒有經(jīng)過任何語音訓(xùn)練的人在有噪聲的環(huán)境下來朗讀100個問題,圖5列出了部分數(shù)據(jù)。實驗數(shù)據(jù)表明經(jīng)過辨音,錯誤率從原來的65%降低到12%,取得了滿意的結(jié)果。權(quán)利要求1.一種語音查詢中的辨音方法,包括步驟利用現(xiàn)有語音識別接口對語音進行識別,在識別后,還包括步驟確定用戶可定制的知識查詢語言;形成基于知識的辨音模型;基于知識、查詢語言和辨音模型的快速辨音算法。2.按權(quán)利要求1所述的方法,其特征在于所述確定用戶可定制的知識查詢語言包括步驟將知識庫中的所有屬性進行聚類;定義具體屬性的提問方式;生成查詢模板集。3.按權(quán)利要求2所述的方法,其特征在于所述的屬性聚類包括步驟將查詢方式相似的屬性聚在一起;抽象出共同的查詢模式;4.按權(quán)利要求1所述的方法,其特征在于所述的現(xiàn)有語音識別接口是IBMViaVoice.5.按權(quán)利要求1所述的方法,其特征在于所述的形成基于知識的辨音模型包括步驟確定錯誤的發(fā)生原因;對糾正的漢字進行相似度計算;確定相似規(guī)則;定義辨音的觸發(fā)條件。6.按權(quán)利要求5所述的方法,其特征在于所述的確定錯誤的發(fā)生原因包括錯誤原因和錯誤分類。7.按權(quán)利要求6所述方法,其特征在于所述的錯誤分類包括概念錯誤、句型錯誤和混合錯誤。8.按權(quán)利要求1所述方法,其特征在于所述的對糾正的漢字進行相似度計算使用下述公式1,如果ic1=ic2且v1=v2CSIM([(ic1,v1)],[(ic2,v2)]),如果ic1≠ic2或v1≠v29.按權(quán)利要求5所述方法,其特征在于所述的相似規(guī)則包括如果兩個詞都是精確詞,則長度優(yōu)先;如果兩個詞都為相似詞,則同音字數(shù)多者優(yōu)先,若兩詞同音字數(shù)相同,則相似度優(yōu)先;如果兩個詞一個為精確詞,另一個為相似詞,則相似詞優(yōu)于精確詞。10.按權(quán)利要求5所述方法,其特征在于所述的定義辨音的觸發(fā)條件包括當(dāng)出現(xiàn)下述情形之一時,觸發(fā)辨音操作分詞失??;找不到和原查詢文本有任何匹配的知識查詢模板;找到了和原查詢文本匹配的知識查詢模板,但相差較遠;找到了和原查詢文本完全匹配的知識查詢模板,但在知識庫里沒有找到相關(guān)的知識。11.按權(quán)利要求1所述的方法,其特征在于所述的基于知識、查詢語言和辨音模型的快速辨音算法包括步驟根據(jù)辨音模型及查詢模板庫、知識庫,對用戶語音查詢文本進行相似智能分詞;根據(jù)分詞結(jié)果檢索查詢模板庫,找到與之匹配的模板,判斷該模板在形式上是否與當(dāng)前分詞結(jié)果相匹配;對各候選模板進行知識驗證,根據(jù)模板的提問類型以及實現(xiàn)的KAPI函數(shù)進行知識庫檢索。全文摘要一種語音查詢中的辨音方法,包括步驟利用現(xiàn)有語音識別接口對語音進行識別,在識別后,還包括步驟確定用戶可定制的知識查詢語言;形成基于知識的辨音模型;基于知識、查詢語言和辨音模型的快速辨音算法。本發(fā)明對于外在的環(huán)境和條件要求不高,一部電話或一個手機就可以在機場、車?yán)?、家里、飯店或者外出郊游時,對知識進行實時地語音查詢和學(xué)習(xí),極大地方便了用戶的使用。文檔編號G10L15/00GK1514387SQ0216027公開日2004年7月21日申請日期2002年12月31日優(yōu)先權(quán)日2002年12月31日發(fā)明者豐強澤,曹存根申請人:中國科學(xué)院計算技術(shù)研究所