本發(fā)明屬于計(jì)算機(jī)通信領(lǐng)域,尤其涉及一種基于雙數(shù)組字典樹進(jìn)行術(shù)語匹配的方法。
背景技術(shù):
當(dāng)前計(jì)算機(jī)輔助翻譯是提高翻譯一致性和效率的重要手段,它要求軟件能夠不斷地記憶最新的術(shù)語及語料,并且在后續(xù)的翻譯流程中能夠及時(shí)地調(diào)出滿足相應(yīng)條件的術(shù)語或語料以供選擇。隨著術(shù)語和語料規(guī)模的不斷擴(kuò)大,基于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫或是目前較新的非關(guān)系型數(shù)據(jù)庫來直接根據(jù)原文或譯文檢索出完整的翻譯信息都是會(huì)有明顯的效率下降的,當(dāng)處理比較大的待譯稿時(shí),速度自然不能接受。以mongo數(shù)據(jù)庫為例,每一個(gè)文檔記錄都包含文檔ID,原文,譯文以及其他輔助信息,有些原文或譯文比較長,就不適合作為索引字段,而文檔ID是mongo的默認(rèn)全局唯一16進(jìn)制索引字段,基于文檔ID的查詢會(huì)非??臁;诖耍覀兛梢詫?shí)現(xiàn)一種外圍索引,將原文或譯文通過該索引與文檔ID對(duì)應(yīng)起來,要求外圍索引支持可存儲(chǔ)的任意長度的原文或譯文,并且要足夠高效。
結(jié)合雙數(shù)組字典樹算法,輔以redis緩存和適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)設(shè)計(jì),我們可以構(gòu)建出這樣一套滿足需求的索引及匹配系統(tǒng)。傳統(tǒng)的直接基于數(shù)據(jù)庫查詢某個(gè)字段會(huì)比較慢,建了索引的情況下速度會(huì)快一些,但是有的字段比較長就不適合建索引,即使建了數(shù)據(jù)庫索引對(duì)于較長的字段來說,查詢速度可能依然偏慢。而不管任何數(shù)據(jù),只要基于數(shù)據(jù)庫主鍵來查當(dāng)前記錄,速度都是比較快的,因此實(shí)現(xiàn)一種對(duì)術(shù)語快速建索引的機(jī)制,并且將該索引與數(shù)據(jù)庫主鍵對(duì)應(yīng)的字段相關(guān)聯(lián),就可以獲得比較好的查詢性能。此外翻譯行業(yè)的術(shù)語匹配不僅僅是查出給定的術(shù)語,還需要支持前綴查詢,精確查詢,還有基于句子的分詞查詢,而雙數(shù)組字典樹可以實(shí)現(xiàn)這些功能。將一種高效的雙數(shù)組字典樹實(shí)現(xiàn)算法引入,再將數(shù)據(jù)庫主鍵的值與雙數(shù)組里每一個(gè)術(shù)語的位置信息對(duì)應(yīng)起來作為輔助信息存放于緩存系統(tǒng),既可以滿足術(shù)語匹配的多種查詢需求,又提高了整體匹配的性能,對(duì)于翻譯自動(dòng)化來說可以帶來較好的用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是目前基于數(shù)據(jù)庫的術(shù)語匹配引擎在查詞效率上速度偏慢,而改善這一問題的辦法就是對(duì)數(shù)據(jù)庫里的術(shù)語建一個(gè)快速索引,引入雙數(shù)組字典樹可以解決大量術(shù)語建索引慢以及查詢慢的問題。
為解決上述技術(shù)問題,本發(fā)明提供了一種基于雙數(shù)組字典樹進(jìn)行術(shù)語匹配的方法,其特征是包括建索引的步驟,及用索引進(jìn)行術(shù)語查詢匹配的步驟;
(1)生成雙數(shù)組字典樹的定位
根據(jù)指定的雙數(shù)組字典樹的數(shù)目,用哈希算法,對(duì)插入術(shù)語計(jì)算哈希值,然后對(duì)雙數(shù)組字典樹的數(shù)目取模,計(jì)算得出雙數(shù)組字典樹的位置編號(hào),用以實(shí)現(xiàn)雙數(shù)組字典樹的定位;
(2)計(jì)算內(nèi)存緩存系統(tǒng)的二級(jí)索引的ID
從mongo數(shù)據(jù)庫里讀出術(shù)語,將術(shù)語插入雙數(shù)組字典樹,返回術(shù)語在雙數(shù)組字典樹的pos值, 將所述雙數(shù)組字典樹的位置編號(hào),乘以1000萬,加上所述pos值,再配合程序設(shè)定的前綴字串,得出內(nèi)存緩存系統(tǒng)里的二級(jí)索引的ID;
(2)對(duì)術(shù)語建索引
根據(jù)二級(jí)索引的ID查詢出插入術(shù)語在數(shù)據(jù)庫里對(duì)應(yīng)的數(shù)據(jù)記錄的術(shù)語庫ID和對(duì)象ID,用術(shù)語庫ID和對(duì)象ID構(gòu)造鍵值,形成二級(jí)索引的ID和鍵值的映射關(guān)系,存放于內(nèi)存緩沖系統(tǒng);
所述基于雙數(shù)組字典樹索引進(jìn)行術(shù)語匹配的步驟包括:
(1)生成雙數(shù)組字典樹的定位
(2)分詞
將標(biāo)點(diǎn)符號(hào)濾掉,對(duì)于西方語言直接按空格拆分,對(duì)于中文系列的語言按單個(gè)字拆分,用逆向最大匹配算法結(jié)合雙數(shù)組字典,分出詞匯,以及詞匯在雙數(shù)組字典樹里的位置;
(3) 基于索引進(jìn)行術(shù)語匹配
根據(jù)二級(jí)索引的ID查詢插入術(shù)語在數(shù)據(jù)庫里對(duì)應(yīng)的數(shù)據(jù)記錄的術(shù)語庫ID和對(duì)象ID,過濾并查詢出插入術(shù)語在數(shù)據(jù)庫的完整信息。
進(jìn)一步,所述內(nèi)存緩存系統(tǒng)是在術(shù)語語料所在的數(shù)據(jù)庫之外。
進(jìn)一步,所述雙數(shù)組字典樹是通過遍歷數(shù)據(jù)庫獲取字符串?dāng)?shù)據(jù)的源字符串和目標(biāo)字符串生成的。
進(jìn)一步,所述內(nèi)存緩存系統(tǒng)包括一級(jí)索引和二級(jí)索引,
所述一級(jí)索引的生成步驟是:將字符串?dāng)?shù)據(jù)插入雙數(shù)組字典樹,返回字符串?dāng)?shù)據(jù)在雙數(shù)組字典樹里的位置值,并通過位置值計(jì)算得出字符串?dāng)?shù)據(jù)ID,將字符串?dāng)?shù)據(jù)ID放入內(nèi)存緩存系統(tǒng)里,用于實(shí)現(xiàn)字符串?dāng)?shù)據(jù)的一級(jí)索引;
所述二級(jí)索引的生成步驟是:建立字符串?dāng)?shù)據(jù)ID與字符串?dāng)?shù)據(jù)在數(shù)據(jù)庫內(nèi)部已建立索引的數(shù)據(jù)記錄的關(guān)鍵字段的對(duì)應(yīng)關(guān)系,用于實(shí)現(xiàn)字符串?dāng)?shù)據(jù)的二級(jí)索引。
進(jìn)一步,所述一級(jí)索引和二級(jí)索引被定時(shí)寫入硬盤。
進(jìn)一步,所述一級(jí)索引和二級(jí)索引達(dá)到數(shù)量閾值后被寫入硬盤。
進(jìn)一步,所述索引為雙向索引。
進(jìn)一步,所述字符串逆向最大匹配算法,從被處理字符串的末端開始匹配掃描,每次取最末端的2i個(gè)字符作為匹配字段,若匹配失敗,則去掉匹配字段最前面的一個(gè)字,繼續(xù)匹配。
采用上述技術(shù)方案,可達(dá)到以下效果:
1. 用雙數(shù)組字典樹對(duì)術(shù)語建立外圍索引,然后用將雙數(shù)組建立的索引與mongo數(shù)據(jù)庫里每條術(shù)語記錄的Objectld(相當(dāng)于數(shù)據(jù)庫關(guān)鍵字字段)相關(guān)聯(lián)并存放于redis作為二級(jí)索引緩存,最終加快對(duì)mongo數(shù)據(jù)庫的查詢速度;
2. 基于雙數(shù)組字典樹和內(nèi)存緩存系統(tǒng)來存放外圍索引信息,將較長的原文或譯文映射為數(shù)據(jù)庫內(nèi)全局唯一且?guī)в锌焖偎饕挠涗汭D字段,從而加速了術(shù)語的匹配,同時(shí)借助雙數(shù)組的特性,也具備分詞,前綴查詢等翻譯行業(yè)所需的功能;
既可以滿足術(shù)語匹配的多種查詢需求,又提高了整體匹配的性能,對(duì)于可以帶來較好的用戶體驗(yàn)。
附圖說明
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1示出了一種基于雙數(shù)組字典樹進(jìn)行術(shù)語匹配的方法的流程示意圖;
圖2示出了用雙數(shù)組字典樹建索引的流程示意圖;
圖3示出了用索引進(jìn)行術(shù)語匹配的流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步具體說明。
為解決上述技術(shù)問題,本發(fā)明提供了一種基于雙數(shù)組字典樹進(jìn)行術(shù)語匹配的方法,其特征是包括建索引的步驟,及用索引進(jìn)行術(shù)語查詢匹配的步驟,如圖1所示;
所述用雙數(shù)組字典樹建索引的步驟包括以下三個(gè)步驟,如圖2所示:
(1)生成雙數(shù)組字典樹的定位
根據(jù)指定的雙數(shù)組字典樹的數(shù)目,用哈希算法,對(duì)待插入術(shù)語計(jì)算哈希值,然后對(duì)雙數(shù)組字典樹的數(shù)目取模,計(jì)算得出雙數(shù)組字典樹的位置編號(hào),用以實(shí)現(xiàn)雙數(shù)組字典樹的定位;
(2)計(jì)算內(nèi)存緩存系統(tǒng)的二級(jí)索引的ID
直接從數(shù)據(jù)庫里查術(shù)語往往速度很慢,需要對(duì)數(shù)據(jù)庫里的術(shù)語建立高效的外圍索引,在這里就包含基于雙數(shù)組的一級(jí)索引和基于內(nèi)存緩存系統(tǒng)的二級(jí)索引;
內(nèi)存緩存系統(tǒng)里二級(jí)索引的ID即內(nèi)存緩存系統(tǒng)里的鍵名,
計(jì)算內(nèi)存緩存系統(tǒng)的二級(jí)索引的ID的步驟是:從mongo數(shù)據(jù)庫里讀出術(shù)語,將術(shù)語插入雙數(shù)組字典樹,返回術(shù)語在雙數(shù)組字典樹的pos值, 將所述雙數(shù)組字典樹編號(hào),乘以1000萬,加上所述pos值,再配合程序設(shè)定的前綴字串,即可得出內(nèi)存緩存系統(tǒng)里的二級(jí)索引的ID;
(2)對(duì)術(shù)語建索引
根據(jù)二級(jí)索引的ID查詢出插入術(shù)語在數(shù)據(jù)庫里對(duì)應(yīng)的數(shù)據(jù)記錄的術(shù)語庫ID和對(duì)象ID,用術(shù)語庫ID和對(duì)象ID構(gòu)造鍵值,形成二級(jí)索引的ID和鍵值的映射關(guān)系,存放于內(nèi)存緩沖系統(tǒng);對(duì)象ID是mongo數(shù)據(jù)庫特有的;
所述基于雙數(shù)組字典樹索引進(jìn)行術(shù)語匹配的步驟包括以下三個(gè)步驟,如圖3所示:
(1)雙數(shù)組字典樹的定位
(2)分詞
首先將標(biāo)點(diǎn)符號(hào)濾掉,對(duì)于西方語言直接按空格拆分,對(duì)于中文或與之同一系列的語言按單個(gè)字拆分,然后用逆向最大匹配算法結(jié)合雙數(shù)組字典,分出詞匯,以及詞匯在雙數(shù)組字典樹里的位置;
(3) 基于索引進(jìn)行術(shù)語匹配
根據(jù)二級(jí)索引的ID可以查詢出該術(shù)語在數(shù)據(jù)庫里對(duì)應(yīng)的數(shù)據(jù)記錄的術(shù)語庫ID和對(duì)象ID,根據(jù)這些信息即可快速地過濾并查詢出該術(shù)語在數(shù)據(jù)庫的完整信息。
進(jìn)一步,所述雙數(shù)組字典樹是通過遍歷數(shù)據(jù)庫獲取字符串?dāng)?shù)據(jù)的源字符串和目標(biāo)字符串生成的。
進(jìn)一步,所述內(nèi)存緩存系統(tǒng)包括一級(jí)索引和二級(jí)索引,
所述一級(jí)索引的生成步驟是:將字符串?dāng)?shù)據(jù)插入雙數(shù)組字典樹,返回字符串?dāng)?shù)據(jù)在雙數(shù)組字典樹里的位置值,并通過位置值計(jì)算得出字符串?dāng)?shù)據(jù)ID,將字符串?dāng)?shù)據(jù)ID放入內(nèi)存緩存系統(tǒng)里,用于實(shí)現(xiàn)字符串?dāng)?shù)據(jù)的一級(jí)索引;
所述二級(jí)索引的生成步驟是:建立字符串?dāng)?shù)據(jù)ID與字符串?dāng)?shù)據(jù)在數(shù)據(jù)庫內(nèi)部已建立索引的數(shù)據(jù)記錄的關(guān)鍵字段的對(duì)應(yīng)關(guān)系,用于實(shí)現(xiàn)字符串?dāng)?shù)據(jù)的二級(jí)索引;
進(jìn)一步,所述一級(jí)索引和二級(jí)索引被定時(shí)寫入硬盤。
進(jìn)一步,所述一級(jí)索引和二級(jí)索引達(dá)到數(shù)量閾值后被寫入硬盤。
進(jìn)一步,所述索引為雙向索引。
字符串逆向最大匹配算法,從被處理字符串的末端開始匹配掃描,每次取最末端的2i個(gè)字符(i字字串)作為匹配字段,若匹配失敗,則去掉匹配字段最前面的一個(gè)字,繼續(xù)匹配。匹配是否失敗需要借助分詞字典(如雙數(shù)組字典)是否查詢到當(dāng)前切割出的詞來判斷。
內(nèi)存緩存系統(tǒng)的邏輯框架見下表:
術(shù)語匹配引擎分為雙數(shù)組模塊,緩存系統(tǒng)模塊,查詢條件及結(jié)果分析過濾模塊,數(shù)據(jù)庫接口模塊,主要的功能包括術(shù)語建索引和術(shù)語查詢。
本領(lǐng)域技術(shù)人員還應(yīng)當(dāng)理解,以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。