本發(fā)明涉及互聯(lián)網(wǎng)技術(shù),特別涉及一種基于人工智能的召回糾錯(cuò)候選的方法和裝置。
背景技術(shù):
目前,人工智能技術(shù)已經(jīng)得到了廣泛應(yīng)用,人工智能(Artificial Intelligence),英文縮寫為AI,它是研究、開發(fā)用于模擬、延伸和擴(kuò)展人的智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新的技術(shù)科學(xué)。人工智能是計(jì)算機(jī)科學(xué)的一個(gè)分支,它企圖了解智能的實(shí)質(zhì),并生產(chǎn)出一種新的能以人類智能相似的方式做出反應(yīng)的智能機(jī)器,該領(lǐng)域的研究包括機(jī)器人、語言識別、圖像識別、自然語言處理和專家系統(tǒng)等。
如當(dāng)用戶進(jìn)行query檢索時(shí),由于疏忽等原因,經(jīng)常會(huì)輸入錯(cuò)誤的query,比如,將“Tsinghua”錯(cuò)誤地輸入為“Tainghua”,這就要求搜索引擎能夠?qū)τ脩糨斎脲e(cuò)誤的query進(jìn)行識別,并將錯(cuò)誤的部分糾正成用戶所需要的query。
現(xiàn)有技術(shù)中,通常會(huì)將用戶輸入的每個(gè)單詞分別與字典中的單詞進(jìn)行比較,如果用戶輸入的某個(gè)單詞在字典中不存在,則可認(rèn)為是一個(gè)輸入錯(cuò)誤,從而將該單詞作為一個(gè)待糾錯(cuò)的單詞,之后可提示給用戶多個(gè)糾錯(cuò)候選(拼寫建議),供用戶進(jìn)行選擇等。
為此,需要首先建表,即對詞典中的各單詞分別進(jìn)行以下處理:
以“Tsinghua”為例,可刪除其中的任意n個(gè)字母,剩余部分作為一個(gè)key,n的具體取值可根據(jù)實(shí)際需要而定,比如可取值為2,即采用雙刪除法進(jìn)行字母刪除,從而可得到“Tsinghua”對應(yīng)的key的集合{inghua,Tnghua,Tsghua,Tsihua,Tsihua,Tsinua,Tsinga,Tsingh,snghua,…,Tsingu},一共個(gè)key;
通過建倒排表可得到每個(gè)key和對應(yīng)的索引單詞之間的對應(yīng)關(guān)系,即有key->tsinghua;
另外,如果多個(gè)索引單詞對應(yīng)同一個(gè)key,可利用這多個(gè)索引單詞組成一個(gè)單詞鏈表,即有key->{索引單詞1,索引單詞2…}。
后續(xù),針對用戶輸入的任一待糾錯(cuò)的單詞,可按照與上述類似的方式,召回糾錯(cuò)候選,具體方式如下:
假設(shè)待糾錯(cuò)的單詞為“Tainghua”,那么可通過雙刪除法得到“Tainghua”對應(yīng)的key的集合{inghua,Tnghua,Taghua,Taihua,Taihua,Tainua,Tainga,Taingh,anghua,…,Taingu};
分別查找出上述集合中的每一個(gè)key對應(yīng)的索引單詞,并將各key對應(yīng)的查找結(jié)果進(jìn)行合并,去除其中重復(fù)的索引單詞,將剩余的索引單詞作為糾錯(cuò)候選。
并且,可按照出現(xiàn)次數(shù)由多到少的順序,對各糾錯(cuò)候選進(jìn)行排序,出現(xiàn)次數(shù)越多,則編輯距離越短,排序越靠前,比如,在將各key對應(yīng)的查找結(jié)果進(jìn)行合并后,發(fā)現(xiàn)索引單詞a共出現(xiàn)了3次,索引單詞b共出現(xiàn)了2次,那么相比于索引單詞b,索引單詞a的編輯距離更短,排序更靠前。
但是,上述方式在實(shí)際應(yīng)用中也會(huì)存在一定的問題,比如:建表過程存在較多冗余,單詞的字符長度越長,key的數(shù)目也會(huì)越多,相應(yīng)地重復(fù)存儲(chǔ)冗余也就越大,從而導(dǎo)致存儲(chǔ)效率和查找效率低下。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種基于人工智能的召回糾錯(cuò)候選的方法和裝置,能夠提高存儲(chǔ)和查找效率。
具體技術(shù)方案如下:
一種基于人工智能的召回糾錯(cuò)候選的方法,包括:
當(dāng)用戶進(jìn)行query檢索時(shí),針對用戶輸入的每個(gè)待糾錯(cuò)的單詞,分別統(tǒng)計(jì)出所述待糾錯(cuò)的單詞的字符長度;
若統(tǒng)計(jì)結(jié)果大于預(yù)先設(shè)定的閾值,則采用simhash算法確定出所述待糾錯(cuò)的單詞的指紋,并根據(jù)所述指紋召回所述待糾錯(cuò)的單詞的糾錯(cuò)候選。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該方法進(jìn)一步包括:
若所述統(tǒng)計(jì)結(jié)果小于或等于所述閾值,則采用雙刪除法召回所述待糾錯(cuò)的單詞的糾錯(cuò)候選。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該方法進(jìn)一步包括:
針對詞典中包括的每個(gè)字符長度大于所述閾值的單詞i,分別進(jìn)行以下處理:
采用simhash算法確定出所述單詞i的指紋,所述單詞i的指紋的字符長度與所述待糾錯(cuò)的單詞的指紋的字符長度相同;
將所述單詞i的指紋分為N段,N為大于1的正整數(shù),分別將每段的內(nèi)容加上所在段的段標(biāo)識后作為一個(gè)key,所述key對應(yīng)的索引單詞為所述單詞i;
將每個(gè)key和對應(yīng)的索引單詞進(jìn)行保存;
所述根據(jù)所述指紋召回所述待糾錯(cuò)的單詞的糾錯(cuò)候選包括:
將所述待糾錯(cuò)的單詞的指紋分為N段,分別將每段的內(nèi)容加上所在段的段標(biāo)識后作為一個(gè)key;
分別查找出所述待糾錯(cuò)的單詞對應(yīng)的每個(gè)key對應(yīng)的索引單詞,將查找出的各索引單詞作為所述待糾錯(cuò)的單詞的糾錯(cuò)候選。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該方法進(jìn)一步包括:
在召回所述待糾錯(cuò)的單詞的糾錯(cuò)候選之后,合并其中重復(fù)出現(xiàn)的糾錯(cuò)候選,并按照出現(xiàn)次數(shù)由多到少的順序,對各糾錯(cuò)候選進(jìn)行排序。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該方法進(jìn)一步包括:
在對各糾錯(cuò)候選進(jìn)行排序之后,確定所述待糾錯(cuò)的單詞是否存在上下文;
若存在上下文,則分別計(jì)算每個(gè)糾錯(cuò)候選與所述待糾錯(cuò)的單詞的上下文之間的契合度;
按照契合度由高到低的順序?qū)Ω骷m錯(cuò)候選進(jìn)行重新排序。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,該方法進(jìn)一步包括:
若不存在上下文,則針對每個(gè)糾錯(cuò)候選,分別確定出所述糾錯(cuò)候選在最近預(yù)定時(shí)長內(nèi)所有進(jìn)行過檢索的用戶對應(yīng)的檢索結(jié)果的標(biāo)題中出現(xiàn)的次數(shù)L,以及,所述待糾錯(cuò)的單詞被糾正為所述糾錯(cuò)候選的概率EM,根據(jù)L和EM計(jì)算出所述糾錯(cuò)候選的評分;
按照評分由高到低的順序?qū)Ω骷m錯(cuò)候選進(jìn)行重新排序。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,
所述根據(jù)L和EM計(jì)算出所述糾錯(cuò)候選的評分包括:
計(jì)算所述EM和預(yù)先設(shè)定的加權(quán)系數(shù)的乘積;
計(jì)算1減去所述加權(quán)系數(shù)之差與所述L的乘積;
將兩個(gè)乘積的相加之和作為所述糾錯(cuò)候選的評分。
一種基于人工智能的召回糾錯(cuò)候選的裝置,包括:處理單元和召回單元;所述處理單元,用于當(dāng)用戶進(jìn)行query檢索時(shí),針對用戶輸入的每個(gè)待糾錯(cuò)的單詞,分別統(tǒng)計(jì)出所述待糾錯(cuò)的單詞的字符長度,并將統(tǒng)計(jì)結(jié)果以及所述待糾錯(cuò)的單詞發(fā)送給所述召回單元;
所述召回單元,用于當(dāng)所述統(tǒng)計(jì)結(jié)果大于預(yù)先設(shè)定的閾值時(shí),采用simhash算法確定出所述待糾錯(cuò)的單詞的指紋,并根據(jù)所述指紋召回所述待糾錯(cuò)的單詞的糾錯(cuò)候選。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述召回單元進(jìn)一步用于,
若所述統(tǒng)計(jì)結(jié)果小于或等于所述閾值,則采用雙刪除法召回所述待糾錯(cuò)的單詞的糾錯(cuò)候選。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述裝置中進(jìn)一步包括:建表單元;
所述建表單元,用于針對詞典中包括的每個(gè)字符長度大于所述閾值的單詞i,分別進(jìn)行以下處理:
采用simhash算法確定出所述單詞i的指紋,所述單詞i的指紋的字符長度與所述待糾錯(cuò)的單詞的指紋的字符長度相同;
將所述單詞i的指紋分為N段,N為大于1的正整數(shù),分別將每段的內(nèi)容加上所在段的段標(biāo)識后作為一個(gè)key,所述key對應(yīng)的索引單詞為所述單詞i;
將每個(gè)key和對應(yīng)的索引單詞進(jìn)行保存;
所述召回單元將所述待糾錯(cuò)的單詞的指紋分為N段,分別將每段的內(nèi)容加上所在段的段標(biāo)識后作為一個(gè)key,分別查找出所述待糾錯(cuò)的單詞對應(yīng)的每個(gè)key對應(yīng)的索引單詞,將查找出的各索引單詞作為所述待糾錯(cuò)的單詞的糾錯(cuò)候選。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述召回單元進(jìn)一步用于,
在召回所述待糾錯(cuò)的單詞的糾錯(cuò)候選之后,合并其中重復(fù)出現(xiàn)的糾錯(cuò)候選,并按照出現(xiàn)次數(shù)由多到少的順序,對各糾錯(cuò)候選進(jìn)行排序。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述召回單元進(jìn)一步用于,
在對各糾錯(cuò)候選進(jìn)行排序之后,確定所述待糾錯(cuò)的單詞是否存在上下文;
若存在上下文,則分別計(jì)算每個(gè)糾錯(cuò)候選與所述待糾錯(cuò)的單詞的上下文之間的契合度;
按照契合度由高到低的順序?qū)Ω骷m錯(cuò)候選進(jìn)行重新排序。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,所述召回單元進(jìn)一步用于,
若不存在上下文,則針對每個(gè)糾錯(cuò)候選,分別確定出所述糾錯(cuò)候選在最近預(yù)定時(shí)長內(nèi)所有進(jìn)行過檢索的用戶對應(yīng)的檢索結(jié)果的標(biāo)題中出現(xiàn)的次數(shù)L,以及,所述待糾錯(cuò)的單詞被糾正為所述糾錯(cuò)候選的概率EM,根據(jù)L和EM計(jì)算出所述糾錯(cuò)候選的評分;
按照評分由高到低的順序?qū)Ω骷m錯(cuò)候選進(jìn)行重新排序。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,
所述召回單元計(jì)算所述EM和預(yù)先設(shè)定的加權(quán)系數(shù)的乘積,并計(jì)算1減去所述加權(quán)系數(shù)之差與所述L的乘積,將兩個(gè)乘積的相加之和作為所述糾錯(cuò)候選的評分。
基于上述介紹可以看出,采用本發(fā)明所述方案,當(dāng)待糾錯(cuò)的單詞的字符長度大于設(shè)定的閾值時(shí),可首先采用simhash算法確定出該單詞的指紋,之后根據(jù)所述指紋召回該單詞的糾錯(cuò)候選,從而避免了現(xiàn)有技術(shù)中在單詞過長時(shí)所導(dǎo)致的重復(fù)存儲(chǔ)冗余加大的問題,進(jìn)而提高了存儲(chǔ)和查找效率。
【附圖說明】
圖1為本發(fā)明所述基于人工智能的召回糾錯(cuò)候選的方法實(shí)施例的流程圖。
圖2為本發(fā)明所述采用simhash算法確定出任一單詞的指紋的方式示意圖。
圖3為本發(fā)明所述重新排序的方式示意圖。
圖4為本發(fā)明所述基于人工智能的召回糾錯(cuò)候選的裝置實(shí)施例的組成結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
為了使本發(fā)明的技術(shù)方案更加清楚、明白,以下參照附圖并舉實(shí)施例,對本發(fā)明所述方案作進(jìn)一步地詳細(xì)說明。
實(shí)施例一
圖1為本發(fā)明所述基于人工智能的召回糾錯(cuò)候選的方法實(shí)施例的流程圖,如圖1所示,包括以下具體實(shí)現(xiàn)方式。
在11中,當(dāng)用戶進(jìn)行query檢索時(shí),針對用戶輸入的每個(gè)待糾錯(cuò)的單詞,分別統(tǒng)計(jì)出待糾錯(cuò)的單詞的字符長度。
比如,待糾錯(cuò)的單詞為“Tainghua”,那么可統(tǒng)計(jì)出其字符長度為8。
在12中,確定統(tǒng)計(jì)結(jié)果是否大于預(yù)先設(shè)定的閾值,若否,則執(zhí)行13,若是,則執(zhí)行14。
將統(tǒng)計(jì)出的待糾錯(cuò)的單詞的字符長度與設(shè)定的閾值進(jìn)行比較,根據(jù)比較的不同,后續(xù)將采用不同的處理方式。
所述閾值的具體取值可根據(jù)實(shí)際需要而定,比如,根據(jù)經(jīng)驗(yàn),可取值為12。
在13中,采用雙刪除法召回待糾錯(cuò)的單詞的糾錯(cuò)候選。
采用雙刪除法召回待糾錯(cuò)的單詞的糾錯(cuò)候選的具體實(shí)現(xiàn)為現(xiàn)有技術(shù),不再贅述。
在14中,采用simhash算法確定出待糾錯(cuò)的單詞的指紋(fingerprint),并根據(jù)得到的指紋召回待糾錯(cuò)的單詞的糾錯(cuò)候選。
simhash算法是局部敏感哈希(locality sensitive hash)的一種,最早由Moses Charikar在《similarity estimation techniques from rounding algorithms》一文中提出,Google就是基于此算法實(shí)現(xiàn)網(wǎng)頁文件查重的。
本發(fā)明所述方案中,將simhash算法引入到詞級別,用于描述兩個(gè)單詞在字形上的相似度。
圖2為本發(fā)明所述采用simhash算法確定出任一單詞的指紋的方式示意圖,如圖2所示,weight可設(shè)置為常數(shù)1,可將單詞進(jìn)行切分,即將單詞的字符分為若干段,如何進(jìn)行切換可根據(jù)實(shí)際需要而定,針對切分出的每一段,可分別求取其哈希結(jié)果,如第一段的哈希結(jié)果為“100110”,其中的“1”對應(yīng)“w1”,“0”對應(yīng)“-w1”,可將虛線框中所示的各列進(jìn)行縱向累加,如果累加結(jié)果大于0,則將累加結(jié)果設(shè)置為1,否則,設(shè)置為0,從而可得到單詞的指紋“110001”。
與雙刪除法類似,在召回糾錯(cuò)候選之前,也需要先建表。
具體地,針對詞典中包括的每個(gè)字符長度大于閾值的單詞i(為便于表述,用單詞i來表示詞典中包括的任一字符長度大于閾值的單詞),可分別進(jìn)行以下處理:
按照圖2所示方式確定出單詞i的指紋,單詞i的指紋的字符長度與待糾錯(cuò)的單詞的指紋的字符長度相同;
將單詞i的指紋分為N段,N為大于1的正整數(shù),分別將每段的內(nèi)容加上所在段的段標(biāo)識后作為一個(gè)key,對應(yīng)的索引單詞為單詞i;
將每個(gè)key和對應(yīng)的索引單詞進(jìn)行保存;
另外,如果多個(gè)索引單詞對應(yīng)同一個(gè)key,可利用這多個(gè)索引單詞組成一個(gè)單詞鏈表。
舉例如下:
假設(shè)單詞i為“washington”,其指紋為“110001”;
可將“110001”分為前后兩段,分別為“110”和“001”,其中前一段的段標(biāo)識為a,后一段的段標(biāo)識為b;
分別將每段的內(nèi)容加上所在段的段標(biāo)識后,可得到兩個(gè)key,如分別為“a110”和“b001”,這兩個(gè)key對應(yīng)的索引單詞均為“washington”;
可以看出,相比于現(xiàn)有的雙刪除法,采用上述方法明顯減少了key數(shù)。
建表完成后,后續(xù)當(dāng)需要找回糾錯(cuò)候選時(shí),在得到待糾錯(cuò)的單詞的指紋后,可首先將該指紋分為N段,并分別將每段的內(nèi)容加上所在段的段標(biāo)識后作為一個(gè)key,之后,可分別查找出待糾錯(cuò)的單詞對應(yīng)的每個(gè)key對應(yīng)的索引單詞,并將查找出的各索引單詞作為糾錯(cuò)的單詞的糾錯(cuò)候選。
上述哈希結(jié)果的長度以及N的具體取值等均不作限制,可根據(jù)實(shí)際需要而定。
按照現(xiàn)有技術(shù),在召回待糾錯(cuò)的單詞的糾錯(cuò)候選之后,可合并其中重復(fù)出現(xiàn)的糾錯(cuò)候選,并按照出現(xiàn)次數(shù)由多到少的順序,對各糾錯(cuò)候選進(jìn)行排序,即出現(xiàn)次數(shù)越多,則編輯距離越短,排序越靠前。
但是,通過編輯距離,通常不足以找到最合適的糾錯(cuò)候選,并非編輯距離最近的糾錯(cuò)候選就是最佳的糾錯(cuò)候選。
針對上述問題,本發(fā)明所述方案中提出,可通過引入上下文和詞頻等,對基于編輯距離進(jìn)行排序后的各糾錯(cuò)候選進(jìn)行重新排序,以提高排序結(jié)果的準(zhǔn)確性。
圖3為本發(fā)明所述重新排序的方式示意圖,如圖3所示,在基于編輯距離對各糾錯(cuò)候選進(jìn)行排序之后,確定待糾錯(cuò)的單詞是否存在上下文,若存在上下文,則按照第一重排方式進(jìn)行重新排序,否則,按照第二重排方式進(jìn)行重新排序,從而得到重新排序后的糾錯(cuò)候選。
其中,第一重排方式為:若存在上下文,分別計(jì)算每個(gè)糾錯(cuò)候選與待糾錯(cuò)的單詞的上下文之間的契合度;按照契合度由高到低的順序?qū)Ω骷m錯(cuò)候選進(jìn)行重新排序。
用戶在進(jìn)行query檢索時(shí),可能會(huì)輸入多個(gè)單詞,而這些單詞之間通常會(huì)存在一定的關(guān)聯(lián)關(guān)系,如“washington city”,即待糾錯(cuò)的單詞和上下文結(jié)合在一起語義上通常是通順、流暢的,基于此,針對每個(gè)糾錯(cuò)候選,可分別通過上下文語言模型(LM),計(jì)算出若用該糾錯(cuò)候選替換待糾錯(cuò)的單詞后,與上下文之間的契合度,契合度越高的糾錯(cuò)候選,排序越靠前。
如何計(jì)算契合度為現(xiàn)有技術(shù)。
第二重排方式為:若不存在上下文,則針對每個(gè)糾錯(cuò)候選,可分別確定出該糾錯(cuò)候選在最近預(yù)定時(shí)長內(nèi)所有進(jìn)行過檢索的用戶對應(yīng)的檢索結(jié)果的標(biāo)題中出現(xiàn)的次數(shù)L,以及,待糾錯(cuò)的單詞被糾正為該糾錯(cuò)候選的概率EM,根據(jù)L和EM計(jì)算出該糾錯(cuò)候選的評分;按照評分由高到低的順序?qū)Ω骷m錯(cuò)候選進(jìn)行重新排序。
如上所述,針對每個(gè)糾錯(cuò)候選,可統(tǒng)計(jì)出該糾錯(cuò)候選在最近預(yù)定時(shí)長內(nèi)所有進(jìn)行過檢索的用戶對應(yīng)的檢索結(jié)果的標(biāo)題中的出現(xiàn)次數(shù)L,所述預(yù)定時(shí)長的具體取值可根據(jù)實(shí)際需要而定,比如,最近三天。
并且,可根據(jù)所有用戶的歷史操作記錄,如根據(jù)以往當(dāng)用戶錯(cuò)誤地輸入待糾錯(cuò)的單詞后會(huì)將其糾正為哪個(gè)單詞的記錄,分別確定出待糾錯(cuò)的單詞被糾正為每個(gè)糾錯(cuò)候選的概率EM,具體實(shí)現(xiàn)為現(xiàn)有技術(shù)。
相應(yīng)地,可計(jì)算出每個(gè)糾錯(cuò)候選的評分=(1-x)*L+x*EM,其中,x表示加權(quán)系數(shù),可為[0,1]之間的實(shí)數(shù),具體取值可根據(jù)實(shí)際需要而定。
評分越高的糾錯(cuò)候選,排序越靠前。
以上是關(guān)于方法實(shí)施例的介紹,以下通過裝置實(shí)施例,對本發(fā)明所述方案進(jìn)行進(jìn)一步說明。
實(shí)施例二
圖4為本發(fā)明所述基于人工智能的召回糾錯(cuò)候選的裝置實(shí)施例的組成結(jié)構(gòu)示意圖,如圖4所示,包括:處理單元41和召回單元42。
處理單元41,用于當(dāng)用戶進(jìn)行query檢索時(shí),針對用戶輸入的每個(gè)待糾錯(cuò)的單詞,分別統(tǒng)計(jì)出待糾錯(cuò)的單詞的字符長度,并將統(tǒng)計(jì)結(jié)果以及待糾錯(cuò)的單詞發(fā)送給召回單元42。
召回單元42,用于當(dāng)統(tǒng)計(jì)結(jié)果大于預(yù)先設(shè)定的閾值時(shí),采用simhash算法確定出待糾錯(cuò)的單詞的指紋,并根據(jù)所述指紋召回待糾錯(cuò)的單詞的糾錯(cuò)候選。
召回單元42可將統(tǒng)計(jì)出的待糾錯(cuò)的單詞的字符長度與設(shè)定的閾值進(jìn)行比較,根據(jù)比較的不同,后續(xù)將采用不同的處理方式,如,當(dāng)統(tǒng)計(jì)結(jié)果小于或等于閾值時(shí),可采用雙刪除法召回待糾錯(cuò)的單詞的糾錯(cuò)候選,而當(dāng)統(tǒng)計(jì)結(jié)果大于閾值時(shí),可采用simhash算法確定出待糾錯(cuò)的單詞的指紋,并根據(jù)所述指紋召回待糾錯(cuò)的單詞的糾錯(cuò)候選。
對于后一種情況,與雙刪除法類似,在召回糾錯(cuò)候選之前,也需要先建表,為此,圖4所示裝置中可進(jìn)一步包括:建表單元43。
建表單元43針對詞典中包括的每個(gè)字符長度大于閾值的單詞i,可分別進(jìn)行以下處理:
采用simhash算法確定出單詞i的指紋,單詞i的指紋的字符長度與待糾錯(cuò)的單詞的指紋的字符長度相同;
將單詞i的指紋分為N段,N為大于1的正整數(shù),分別將每段的內(nèi)容加上所在段的段標(biāo)識后作為一個(gè)key,所述key對應(yīng)的索引單詞為單詞i;
將每個(gè)key和對應(yīng)的索引單詞進(jìn)行保存;
另外,如果多個(gè)索引單詞對應(yīng)同一個(gè)key,可利用這多個(gè)索引單詞組成一個(gè)單詞鏈表。
建表完成后,后續(xù)當(dāng)需要找回糾錯(cuò)候選時(shí),召回單元42在得到待糾錯(cuò)的單詞的指紋后,可將待糾錯(cuò)的單詞的指紋分為N段,分別將每段的內(nèi)容加上所在段的段標(biāo)識后作為一個(gè)key,分別查找出待糾錯(cuò)的單詞對應(yīng)的每個(gè)key對應(yīng)的索引單詞,將查找出的各索引單詞作為待糾錯(cuò)的單詞的糾錯(cuò)候選。
按照現(xiàn)有技術(shù),召回單元42在召回待糾錯(cuò)的單詞的糾錯(cuò)候選之后,可合并其中重復(fù)出現(xiàn)的糾錯(cuò)候選,并按照出現(xiàn)次數(shù)由多到少的順序,對各糾錯(cuò)候選進(jìn)行排序,即出現(xiàn)次數(shù)越多,則編輯距離越短,排序越靠前。
但是,通過編輯距離,通常不足以找到最合適的糾錯(cuò)候選,并非編輯距離最近的糾錯(cuò)候選就是最佳的糾錯(cuò)候選。
針對上述問題,本發(fā)明所述方案中提出,可通過引入上下文和詞頻等,對基于編輯距離進(jìn)行排序后的各糾錯(cuò)候選進(jìn)行重新排序,以提高排序結(jié)果的準(zhǔn)確性。
為此,召回單元42可進(jìn)一步進(jìn)行以下處理:
在對各糾錯(cuò)候選進(jìn)行排序之后,確定待糾錯(cuò)的單詞是否存在上下文;
若存在上下文,則分別計(jì)算每個(gè)糾錯(cuò)候選與待糾錯(cuò)的單詞的上下文之間的契合度;
按照契合度由高到低的順序?qū)Ω骷m錯(cuò)候選進(jìn)行重新排序;
若不存在上下文,則針對每個(gè)糾錯(cuò)候選,可分別確定出該糾錯(cuò)候選在最近預(yù)定時(shí)長內(nèi)所有進(jìn)行過檢索的用戶對應(yīng)的檢索結(jié)果的標(biāo)題中出現(xiàn)的次數(shù)L,以及,待糾錯(cuò)的單詞被糾正為該糾錯(cuò)候選的概率EM,根據(jù)L和EM計(jì)算出該糾錯(cuò)候選的評分;
按照評分由高到低的順序?qū)Ω骷m錯(cuò)候選進(jìn)行重新排序。
其中,每個(gè)糾錯(cuò)候選的評分=(1-x)*L+x*EM,x表示加權(quán)系數(shù),可為[0,1]之間的實(shí)數(shù)。
在本發(fā)明所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述軟件功能單元存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。