本發(fā)明涉及搜索技術(shù)領(lǐng)域,尤其是一種語音搜索列表的實(shí)現(xiàn)方法。
背景技術(shù):
現(xiàn)有技術(shù)中,語音識別系統(tǒng)在進(jìn)行搜索列表時,無法將列表項(xiàng)的屬性關(guān)聯(lián);或者即使關(guān)聯(lián),但需要手工排列組合可能的發(fā)音。例如,對于第一種情況,在通訊錄里有總務(wù)科張三和人事科章山,兩個人名發(fā)音相似,如果用戶說“打電話給人事科章山”,語音識別可能會返回“打電話給人事科張三”。這里人名和部門這兩個屬性沒有關(guān)聯(lián),導(dǎo)致識別出錯誤的聯(lián)系人。再例如,對于第二種情況,用戶需要在附近的飯店列表中選出“麥當(dāng)勞(珠江路5000號)”和“肯德基(長江路6000號)”,需要進(jìn)行排列所有可能的發(fā)音序列。比如對于第一個麥當(dāng)勞,就生成如下發(fā)音序列:“麥當(dāng)勞”,“珠江路麥當(dāng)勞”,“珠江路5000號麥當(dāng)勞”,“珠江路5000號”和“珠江路”;對于第二個肯德基,就生成如下發(fā)音序列:“肯德基”,“長江路肯德基”,“長江路6000號肯德基”,“長江路6000號”和“長江路”。這種屬性關(guān)聯(lián)方法的缺陷為不靈活,程序必須列出所有序列;運(yùn)算量大,隨著列表屬性增加,可能的發(fā)音序列變得很大。綜合以上兩種情況,現(xiàn)有技術(shù)沒有解決好靈活性和復(fù)雜性的矛盾。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題在于,提供一種語音搜索列表的實(shí)現(xiàn)方法,可以降低計(jì)算復(fù)雜性,同時增加了靈活性。
為解決上述技術(shù)問題,本發(fā)明提供一種語音搜索列表的實(shí)現(xiàn)方法,包括如下步驟:
(1)列表預(yù)處理:
一個列表,提取每個列表項(xiàng)C的所有屬性的關(guān)鍵字,切詞且去除重復(fù),得到詞匯樣本V(v1,v2,…vn),有n個獨(dú)立的詞;
(2)語音識別
將詞匯樣本V傳送給語音識別器,并加載UNIGRAM語言模型,進(jìn)行語音識別,得到N-BEST結(jié)果R,其中每個結(jié)果t為識別出的詞,w為該詞的權(quán)重;
(3)計(jì)算似然估計(jì)值
對每個列表項(xiàng)C,計(jì)算其歸一化的似然估計(jì)值lik(C);
lik(c)=∏reR f(c|r)
f(c|r)=∏ter g(t|c)
其中,a、b為預(yù)設(shè)的常數(shù),c為一個列表項(xiàng),r為一個語音識別結(jié)果,t為一個識別的詞,w為一個識別的詞t的權(quán)重;
(4)列表搜索;根據(jù)列表項(xiàng)的似然估計(jì)值重新排序,選出似然估計(jì)值最大的列表項(xiàng)。
優(yōu)選的,步驟(1)中,詞匯樣本V必須去除重復(fù)詞匯。
優(yōu)選的,步驟(2)中,語音識別器裝載詞匯樣本V和UNIGRAM語言模型,識別輸入語音數(shù)據(jù)并輸出N-BEST結(jié)果。
優(yōu)選的,步驟(2)中,語音識別器加載的UNIGRAM語言模型是動態(tài)生成的,而UNIGRAM語法是固定的,不依賴于列表而變化,每種語言只需有一個UNIGRAM語法。
優(yōu)選的,步驟(2)中,語音識別器為嵌入式語音識別器或任何支持N-BEST結(jié)果的語音識別器。
優(yōu)選的,步驟(2)中,權(quán)重為概率或信任值。
優(yōu)選的,步驟(2)中,詞匯樣本V中可以增加常用連接詞和介詞。
優(yōu)選的,步驟(3)中,計(jì)算似然估計(jì)值基于樸素貝葉斯概率模型,并且使用了所有N-BEST結(jié)果。
優(yōu)選的,步驟(3)中,a、b為預(yù)設(shè)的常數(shù),根據(jù)試驗(yàn)數(shù)據(jù)來設(shè)置。
優(yōu)選的,步驟(3)中,計(jì)算似然估計(jì)值方法與語音識別器無關(guān)。
本發(fā)明的有益效果為:很好的解決了語音搜索列表的靈活性和復(fù)雜性的矛盾,降低了計(jì)算復(fù)雜性,同時增加了靈活性。
附圖說明
圖1是本發(fā)明的方法流程示意圖。
圖2是本發(fā)明的語音識別流程示意圖。
圖3是本發(fā)明的已獲取N-BEST結(jié)果后的實(shí)現(xiàn)方法流程示意圖。
具體實(shí)施方式
如圖1和圖2所示,一種語音搜索列表的實(shí)現(xiàn)方法,包括如下步驟:
(1)列表預(yù)處理:
一個列表,提取每個列表項(xiàng)C的所有屬性的關(guān)鍵字,切詞且去除重復(fù),得到詞匯樣本V(v1,v2,…vn),有n個獨(dú)立的詞;
(2)語音識別
將詞匯樣本V傳送給語音識別器,進(jìn)行語音識別,得到N-BEST結(jié)果R,其中每個結(jié)果t為識別出的詞,w為該詞的權(quán)重;權(quán)重為概率或信任值等;N-BEST為一種搜索算法,結(jié)果為N個最優(yōu)路徑;
(3)計(jì)算似然估計(jì)值
對每個列表項(xiàng)C,計(jì)算其歸一化的似然估計(jì)值lik(C);
lik(c)=∏reR f(c|r)
f(c|r)=∏ter g(t|c)
其中,a、b為預(yù)設(shè)的常數(shù),c為一個列表項(xiàng),r為一個語音識別結(jié)果,t為一個識別的詞,w為一個識別的詞t的權(quán)重;
(4)列表搜索;根據(jù)列表項(xiàng)的似然估計(jì)值重新排序,選出似然估計(jì)值最大的列表項(xiàng)。
如圖3所示,為已獲取N-BEST結(jié)果后的實(shí)現(xiàn)方法流程示意圖。依次取下一個列表項(xiàng)c,初始化似然估計(jì)值lik(c)=1,取下一個N-BEST結(jié)果r,取下一個詞t;若r包含t,則lik(c)=lik(c)*wt*a;若r不包含t,則lik(c)=lik(c)*wt*b;獲得似然估計(jì)值lik(c);若還有未取詞,則繼續(xù)取詞重復(fù)上述步驟;若還有未取的N-BEST結(jié)果,則繼續(xù)取下一個N-BEST結(jié)果,重復(fù)上述步驟。
以用戶需要在列表中使用語音選擇一個快餐店為例。用戶需要在列表
[{“id”:0,“name”:”麥當(dāng)勞”,“address”:”珠江路5000號”,“phone”:“555-12345678”},
{“id”:1,“name”:”肯德基”,“address”:”長江路6000號”,“phone”:“555-87654321”}]中使用語音選擇一個快餐店,具體步驟如下:
(1)提取關(guān)鍵字,得到列表[“麥當(dāng)勞”,“珠江路5000號”,“555-12345678”,“肯德基”,“長江路6000號”,“555-87654321”];
(2)切詞,并且除去重復(fù),得到詞匯樣本列表V=[“麥當(dāng)勞”,“珠江路”,“5000號”,“555-12345678”,“12345678”“肯德基”,“長江路”,“6000號”,“555-87654321”,“87654321”];
(3)將此詞匯樣本V傳給語音識別器,每個語音識別器都有特定的方法;
(4)語音識別,假設(shè)用戶說“珠江路麥當(dāng)勞”,得到N-BEST結(jié)果R=
{{“珠江路”:0.9,“麥當(dāng)勞”:0.8},
{{“珠江路”:0.8,“麥當(dāng)勞”:0.6,“6000號”:0.2},
{“珠江路”:0.7,“肯德基”:0.2,“6000號”:0.1}}
(5)計(jì)算似然估計(jì)值,假設(shè)(a=0.5,b=0.1)
麥當(dāng)勞的似然估計(jì)值lik(0)=(0.5*0.9)*(0.5*0.8)*(0.5*0.8)*(0.5*0.6)*(0.1*0.2)*(0.5*0.7)*(0.1*.0.2)*(0.1*0.1)=3e-8
肯德基的似然估計(jì)值lik(1)=(0.1*0.9)*(0.1*0.8)*(0.1*0.8)*(0.1*0.6)*(0.5*0.2)*(0.1*0.7)*(0.5*0.2)*(0.5*0.1)=1e-9;
(6)重新排序,選出似然估計(jì)值最大的列表項(xiàng)“麥當(dāng)勞”,因?yàn)辂湲?dāng)勞的似然估計(jì)值大于肯德基的似然估計(jì)值。
盡管本發(fā)明就優(yōu)選實(shí)施方式進(jìn)行了示意和描述,但本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,只要不超出本發(fā)明的權(quán)利要求所限定的范圍,可以對本發(fā)明進(jìn)行各種變化和修改。