音詞典得到該音節(jié)對應(yīng)的所有漢字,對于每一個漢字,計算該字與已確定的文字中最后一個詞的二元語法概率,當(dāng)概率大于預(yù)先設(shè)定的閾值δ時,才保留該字。已確定的文字中最后一個詞的獲取方法為將已確定的文字采用漢語自動分詞系統(tǒng)進行分詞,并取分詞結(jié)果中最后一個詞;
[0090]對混淆音節(jié)集合ConfPinyinSet中的所有音節(jié),進行上述操作,合并其保留的漢字結(jié)果并去除重復(fù)漢字,可得到混淆音字的集合ConfCharSet = (ConfChar1, ConfChar2,…,ConfCharJ,其中q為混淆音字的個數(shù);
[0091]步驟114、對于本次用戶修正后的正確字CorrectChar,取得其拼音CorrectPinyin,將 CorrectPinyin 與步驟 112 中得到的混淆音節(jié)集合 ConfPinyinSet中的每一個混淆音節(jié)進行組合,即對于任意ConfPinyinte ConfPinyinSet,得到CombinedPinyint= CorrectPinyin+ConfPinyin t;查找列有所有漢語詞及其拼音的詞典,如果CombinedPinyint是某個漢語詞的拼音并且該漢語詞的第一個字是CorrectChar,則將該漢語詞加入到集合ConfWordSet中。最后可得到一個混淆音詞的集合ConfWordSet =(Conffford1,…,Conffford2,…,ConfffordrI,其中 r 為 ConfWordSet 中漢語詞的個數(shù);
[0092]步驟115、對于任一個混淆音字ConfCharuG ConfCharSet,創(chuàng)建以ConfCharu為內(nèi)容的詞網(wǎng)格結(jié)點;對于任一個混淆音詞ConfWordve ConfWordSet,創(chuàng)建以ConfWordv為內(nèi)容的詞網(wǎng)格結(jié)點。
[0093]在一個實施例中,一句語音對應(yīng)的正確結(jié)果是“制定噴漆修復(fù)的計劃”,通過識別引擎得到的初始結(jié)果是“制定本氣修復(fù)的計劃”。當(dāng)用戶修正到“本”對應(yīng)的候選列,發(fā)現(xiàn)該列的所有候選都不包含正確字“噴”,因此用戶通過輸入將當(dāng)前列修正為“噴”,此時,算法會查看“本”字的下一列“氣”字所處的列。假設(shè)“氣”還有其它候選“起、奇”,首先獲取“氣”這一列所有候選的拼音{qi},接著利用音節(jié)混淆矩陣計算{qi}與各漢語音節(jié)的混淆概率,經(jīng)閾值(設(shè)置為0.6)過濾后得到混淆音節(jié)集合{qi,ji}。對拼音查找所有漢字,通過閾值(設(shè)置為0.5)限制保留語言模型得分較高的字,最終得到了一批混淆音字{其、七、幾、記}。另外,取“噴”字的拼音“pen”,與之前得到的混淆音節(jié){qi,ji}組合,得到兩個音節(jié)組合{pen qi, pen ji},對音節(jié)組合查找對應(yīng)的漢字詞組,得到{噴漆、噴氣、盆亓、噴劑}。由于“盆亓”的第一個字“盆”不是用戶輸入的修正字“噴”,因此從集合中刪除“盆亓”這個詞,最終得到混淆音詞集合{噴漆、噴氣、噴劑}。最后,為得到的混淆音字“其”、“七”、“幾”、“記”和混淆音詞“噴漆、噴氣、噴劑”分別建立詞網(wǎng)格結(jié)點。
[0094]詞網(wǎng)格連接,具體如下所示:
[0095]詞網(wǎng)格連接的主要任務(wù)是:將詞網(wǎng)格精簡算法得到的精簡詞網(wǎng)格與本次用戶反饋前的詞網(wǎng)格中對應(yīng)未確定文字的部分進行連接;將通過詞網(wǎng)格擴充算法創(chuàng)建的混淆音字和混淆音詞對應(yīng)的結(jié)點加入到詞網(wǎng)格中,即為這些混淆音字和混淆音詞的結(jié)點設(shè)置前驅(qū)結(jié)點和后繼結(jié)點。
[0096]詞網(wǎng)格精簡算法得到的精簡詞網(wǎng)格中,各結(jié)點順序連接,設(shè)其中最后一個結(jié)點為Nodej,倒數(shù)第二個結(jié)點為Nodej+詞網(wǎng)格連接算法的具體步驟如下:
[0097]步驟211、對于詞網(wǎng)格擴充算法中創(chuàng)建的所有混淆音字結(jié)點,將每一個結(jié)點都連接至Nodej之后作為其后繼結(jié)點;
[0098]步驟212、如果Nodej對應(yīng)的詞為單個漢字,則執(zhí)行下述操作:對于詞網(wǎng)格擴充算法中創(chuàng)建的所有混淆音詞結(jié)點,將每一個結(jié)點都連接至Nodep1之后作為其后繼結(jié)點;如果Nodej對應(yīng)的詞為多個漢字的詞,則直接執(zhí)行步驟213 ;
[0099]步驟213、對于當(dāng)前修正的候選列Candi的下一候選列Cand i+1中的所有候選字,取得在原始詞網(wǎng)格中與這些候選字相對應(yīng)的結(jié)點,并將這些結(jié)點分為兩類:一類是結(jié)點對應(yīng)的詞以Candi+1中的候選字結(jié)尾的(包括結(jié)點對應(yīng)的詞為單個候選字本身),另一類是結(jié)點對應(yīng)的詞不以Candi+1中的候選字結(jié)尾的;將第一類結(jié)點在詞網(wǎng)格中的后繼結(jié)點放入一個集合Set中;對于第二類結(jié)點,為其中每個結(jié)點生成一個順序連接的結(jié)點序列,該結(jié)點序列中的每個結(jié)點分別對應(yīng)原結(jié)點對應(yīng)的詞中位于Candi+1中的候選字之后的漢字串經(jīng)分詞之后得到的一個詞,將原結(jié)點在本次用戶反饋前的詞網(wǎng)格中的所有后繼結(jié)點連接至該結(jié)點序列的最后一個結(jié)點,將該結(jié)點序列的第一個結(jié)點加入集合Set ^fSet中的每一個結(jié)點分別連接至每一個混淆音字結(jié)點之后;如果Nodej對應(yīng)的詞為單個漢字,將Set中的每一個結(jié)點分別連接至每一個混淆音詞結(jié)點之后;
[0100]步驟214、如果在修正當(dāng)前候選列CandJt,修正后的正確字CorrectChar存在于Candi的候選字中,則執(zhí)行下述步驟,否則直接執(zhí)行步驟215:取得CorrectChar在本次用戶反饋前的詞網(wǎng)格中對應(yīng)的結(jié)點,并將這些結(jié)點分為三類:第一類是CorrectChar作為結(jié)點對應(yīng)的詞中的最后一個字(包括結(jié)點對應(yīng)的詞為CorrectChar本身),第二類是結(jié)點對應(yīng)的詞為多個字且CorrectChar為其第一個字,第三類是結(jié)點對應(yīng)的詞為三字或三字以上且CorrectChar不是其第一個字和最后一個字;將第一類結(jié)點的后繼結(jié)點連接至Nodej作為其后繼結(jié)點;如果Nodej的結(jié)點對應(yīng)的詞為單個漢字,則繼續(xù)執(zhí)行下述操作,否則操作結(jié)束:將第二類結(jié)點連至Nodep1作為其后繼結(jié)點;對于第三類結(jié)點,為每個結(jié)點生成一個順序連接的結(jié)點序列,該結(jié)點序列中的每個結(jié)點分別對應(yīng)原結(jié)點對應(yīng)的詞中位于CorrectChar之后的漢字串經(jīng)分詞之后得到的一個詞,將原結(jié)點在本次用戶反饋前的詞網(wǎng)格中的所有后繼結(jié)點連接至該結(jié)點序列的最后一個結(jié)點,將該結(jié)點序列的第一個結(jié)點連接至Noc^作為其后繼結(jié)點;
[0101]步驟215、如果在修正當(dāng)前候選列CandJt,修正后的正確字CorrectChar不存在于Candi的候選字中,則:對于當(dāng)前修正的候選列Candi的所有候選字,取得在本次用戶反饋前的詞網(wǎng)格中與這些候選字相對應(yīng)的結(jié)點,并將這些結(jié)點分為兩類:一類是結(jié)點對應(yīng)的詞以Candi中的候選字結(jié)尾的(包括結(jié)點對應(yīng)的詞為單個候選字本身),另一類是結(jié)點對應(yīng)的詞不以Candi中的候選字結(jié)尾的;將第一類結(jié)點在用戶反饋前的詞網(wǎng)格中的后繼結(jié)點連接至Nodejt為其后繼結(jié)點;如果Nodej對應(yīng)的詞為單個漢字,則繼續(xù)執(zhí)行下述操作,否則操作結(jié)束:對于第二類結(jié)點,為其中每個結(jié)點生成一個順序連接的結(jié)點序列,該結(jié)點序列中的每個結(jié)點分別對應(yīng)原結(jié)點對應(yīng)的詞中位于Candi*的候選字之后的漢字串經(jīng)分詞之后得到的一個詞,將原結(jié)點在本次用戶反饋前的詞網(wǎng)格中的所有后繼結(jié)點連接至該結(jié)點序列的最后一個結(jié)點,將該結(jié)點序列的第一個結(jié)點連接至Nodej作為其后繼結(jié)點。
[0102]下面給出一個實施例,以形象地說明詞網(wǎng)格連接算法的步驟,如附圖8所示:
[0103]在附圖8所示實施例中,用戶通過候選選擇修正確定了 “人”字,從而得到已確定的文字“中國人”。在詞網(wǎng)格精簡算法中,通過分詞程序得到“中國/人”這兩個詞,然后創(chuàng)建了附圖8中最左邊框圖中的精簡詞網(wǎng)格。附圖8中,左數(shù)第2個框圖是候選字“人”在用戶反饋前的詞網(wǎng)格中對應(yīng)的節(jié)點及其后續(xù)結(jié)點。另一方面,通過詞網(wǎng)格擴充算法,得到了一個混淆音字結(jié)點“銘”和一個混淆音詞結(jié)點“人命”,如附圖8中左數(shù)第3個框圖所示。
[0104]在詞網(wǎng)格連接算法中:
[0105]步驟311、將混淆音字結(jié)點“銘”連接至精簡詞網(wǎng)格的最后一個結(jié)點“人”之后;
[0106]步驟312、本例中,精簡詞網(wǎng)格中最后一個結(jié)點對應(yīng)的詞“人”是單個字,所以還需要把混淆音詞結(jié)點“人命”連接至精簡詞網(wǎng)格的倒數(shù)第二個結(jié)點“中國”之后;
[0107]步驟313、當(dāng)前修正的候選列的下一候選列中候選字為“是”,“似”,…,“實”,它們在用戶修正前的詞網(wǎng)格中對應(yīng)的結(jié)點如附圖8中左數(shù)第二個框圖中所示,全部是單個漢字的結(jié)點。因此,“是”,“似”,…,“實”對應(yīng)的結(jié)點全部連接至混淆音字“銘”和混淆音詞“人命”之后;
[0108]步驟314、由于修正后的正確字“人”存在于候選列表之中,因此:取得“人”在用戶修正前的詞網(wǎng)格中對應(yīng)的所有結(jié)點,從附圖8中左數(shù)第二個框圖中可以看到,共有3個對應(yīng)的對點,分別是“大人物”、“人民”和“人”,正好分別對應(yīng)詞網(wǎng)格連接算法中的3類。第一類是對應(yīng)的詞以“人”結(jié)尾或只包含“人”的結(jié)點,在本例中即為“人”字對應(yīng)的結(jié)點。將用戶反饋前的詞網(wǎng)格中“人”對應(yīng)結(jié)點的后繼結(jié)點“名”連接至精簡詞網(wǎng)格中“人”對應(yīng)的結(jié)點之后作為其后