中文字幕无码日韩视频无码三区

語音查詢中的辨音方法

文檔序號:2836648閱讀:596來源:國知局

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