本申請涉及計算機通信領(lǐng)域,尤其涉及一種檢索方法及裝置。
背景技術(shù):
古漢語中文文本檢索是現(xiàn)今用戶比較常用的一種檢索方式,用戶通過輸入一定的檢索詞,就可以檢索到包含有該檢索詞的古漢語中文文本。
然而,在實際應(yīng)用中,當(dāng)用戶輸入的檢索詞不正確,比如檢索詞中出現(xiàn)錯別字等,就很難精確地查找用戶需要的古漢語中文文本。因而,如何提高古漢語中文文本檢索的準(zhǔn)確性就成為亟待解決的問題。
技術(shù)實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┮环N檢索方法及裝置,用以提高古漢語中文文本檢索的準(zhǔn)確性。
具體地,本申請是通過如下技術(shù)方案實現(xiàn)的:
根據(jù)本申請實施例的第一方面,提供一種檢索方法,所述方法應(yīng)用于基于若干臺檢索服務(wù)器搭建的分布式檢索平臺,所述方法包括:
接收用戶通過檢索客戶端發(fā)送的檢索詞;
遍歷所述檢索詞,對所述檢索詞執(zhí)行相鄰字切分,生成若干個雙字詞組;
基于所述若干個雙字詞組,在預(yù)設(shè)的檢索數(shù)據(jù)庫中查找與該若干個雙字詞組分別對應(yīng)的檢索對象,生成檢索對象列表;其中,所述檢索數(shù)據(jù)庫預(yù)先儲存有針對所述檢索數(shù)據(jù)庫中包含的若干個檢索對象分別進行相鄰字切分后生成的若干個雙字詞組,與所述檢索數(shù)據(jù)庫中包含各雙字詞組的檢索對象之間的對應(yīng)關(guān)系;
計算所述檢索詞與所述檢索列表中的檢索對象的相似度,將相似度高于預(yù)設(shè)閾值的若干個檢索對象作為檢索結(jié)果返回至檢索客戶端,以向所述用戶顯示。
根據(jù)本申請實施例的第二方面,提供一種檢索裝置,所述裝置應(yīng)用于基于若干臺檢索服務(wù)器搭建的分布式檢索平臺,所述裝置包括:
接收單元,用于接收用戶通過檢索客戶端發(fā)送的檢索詞;
切分單元,用于遍歷所述檢索詞,對所述檢索詞執(zhí)行相鄰字切分,生成若干個雙字詞組;
查找單元,用于基于所述若干個雙字詞組,在預(yù)設(shè)的檢索數(shù)據(jù)庫中查找與該若干個雙字詞組分別對應(yīng)的檢索對象,生成檢索對象列表;其中,所述檢索數(shù)據(jù)庫預(yù)先儲存有針對所述檢索數(shù)據(jù)庫中包含的若干個檢索對象分別進行相鄰字切分后生成的若干個雙字詞組,與所述檢索數(shù)據(jù)庫中包含各雙字詞組的檢索對象之間的對應(yīng)關(guān)系;
計算單元,用于計算所述檢索詞與所述檢索列表中的檢索對象的相似度,將相似度高于預(yù)設(shè)閾值的若干個檢索對象作為檢索結(jié)果返回至檢索客戶端,以向所述用戶顯示。
本申請實施例提供一種檢索方法,所述方法應(yīng)用于基于若干臺檢索服務(wù)器搭建的分布式檢索平臺,分布式檢索平臺可以接收用戶通過檢索客戶端發(fā)送的檢索詞。并可以遍歷所述檢索詞,對所述檢索詞執(zhí)行相鄰字切分,生成若干個雙字詞組。檢索平臺可以分別基于所述若干個雙字詞組,在預(yù)設(shè)的檢索數(shù)據(jù)庫中查找與該若干個雙字詞組對應(yīng)的檢索對象,生成檢索對象列表。并可以計算所述檢索詞與所述檢索列表中的檢索對象的相似度,將相似度最高的若干個檢索對象作為檢索結(jié)果返回至檢索客戶端,以向所述用戶顯示。
由于本申請?zhí)峁┑臋z索方法不再采用現(xiàn)代漢語的分詞方式進行分詞,而是采用將檢索詞進行相鄰字切分,生成雙字詞組的分詞方式,從而可以對用戶輸入的針對古漢語中文文本的檢索詞進行有效地切分,使得分詞的結(jié)果更為合理,檢索平臺采用該分詞進行檢索,檢索結(jié)果與檢索詞的關(guān)聯(lián)度更高。因此,采用本申請?zhí)峁┑臋z索方法可以有效地古漢語中文文本檢索的準(zhǔn)確性。
附圖說明
圖1是本申請一示例性實施例示出的一種檢索方法的網(wǎng)絡(luò)架構(gòu)圖;
圖2是本申請一示例性實施例示出的一種客戶端的交互界面的示意圖;
圖3是本申請一示例性實施例示出的一種檢索方法的流程圖;
圖4是本申請一示例性實施例示出的一種檢索裝置所在設(shè)備的硬件結(jié)構(gòu)圖;
圖5是本申請一示例性實施例示出的一種檢索裝置的框圖。
具體實施方式
這里將詳細(xì)地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術(shù)語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項目的任何或所有可能組合。
應(yīng)當(dāng)理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當(dāng)……時”或“響應(yīng)于確定”。
古漢語中文文本檢索是現(xiàn)今用戶比較常用的一種檢索方式,用戶通過輸入一定的檢索詞,就可以檢索到用戶需要的包含有該檢索詞的古漢語中文文本。
在相關(guān)的古漢語中文文本檢索機制中,通常情況下,一般采用數(shù)據(jù)庫模糊匹配的檢索方案和基于Lucene(全文搜索引擎)和現(xiàn)代漢語分詞的全文檢索方案對古漢語中文文本進行檢索。
然而無論是數(shù)據(jù)庫模糊匹配的檢索方案,還是基于Lucene和現(xiàn)代漢語分詞的全文檢索方案,在對古漢語中文文本進行檢索時,通常會存在以下所述的缺陷。
在采用數(shù)據(jù)庫模糊匹配的檢索方案對古漢語中文文本進行檢索時,一方面,當(dāng)用戶輸入的檢索詞包含錯別字時,采用數(shù)據(jù)庫模糊匹配的方案返回的檢索結(jié)果與用戶輸入的檢索詞的關(guān)聯(lián)性較小,甚至可能并不是用戶所需要的檢索結(jié)果。
例如,當(dāng)用戶輸入的檢索詞為“窗前明月光”,希望查找到《靜夜思》時,由于用戶將“床前”輸入為“窗前”,而數(shù)據(jù)庫模糊匹配是基于關(guān)鍵字精準(zhǔn)匹配的方式進行檢索,所以無法在數(shù)據(jù)庫查找到“窗前明月光”的詩句,導(dǎo)致無法查找到《靜夜思》。
另一方面,采用數(shù)據(jù)庫模糊匹配的方案,檢索速度較慢,在高并發(fā)訪問數(shù)據(jù)庫時,經(jīng)常造成數(shù)據(jù)庫壓力過大,甚至造成幾十秒也無返回結(jié)果的情況發(fā)生。
當(dāng)采用基于Lucene和現(xiàn)代漢語分詞的檢索方案對古漢語中文文本進行檢索時,一方面,采用現(xiàn)代漢語詞組的分詞方法,并不能在古漢語中文文本檢索中達(dá)到很好的拆分結(jié)果,以至于很難返回與檢索詞關(guān)聯(lián)度最高的檢索結(jié)果。
例如,使用現(xiàn)代漢語詞組的分詞方法對“床前明月光”進行分詞,分詞結(jié)果一般為“明月”,“月光”等,在檢索時,檢索平臺則會以“明月”、“月光”為檢索主鍵,進行檢索匹配,但會匹配到大量包含“明月”、“月光”檢索結(jié)果,往往導(dǎo)致檢索結(jié)果與檢索詞的關(guān)聯(lián)度較低。
此外,當(dāng)用戶輸入“俄頃風(fēng)定云墨色”或者“五齊既陳,八音在縣”等詩句時,由于采用現(xiàn)代漢語的分詞方式則很難對上述詩詞拆分出現(xiàn)代漢語詞組來,導(dǎo)致無法進行檢索,所以采用基于Lucene和現(xiàn)代漢語分詞的檢索方案的檢索效果不佳。
另一方面,Lucene是一個開放源代碼的全文檢索引擎工具包,開發(fā)人員可以使用Lucene在目標(biāo)系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完成的全文檢索引擎。然而,Lucene不支持分布式的檢索平臺的開發(fā),無法實現(xiàn)檢索平臺的橫向擴展,因此采用基于Lucene和現(xiàn)代漢語分詞的檢索方案大大降低了檢索的性能。
為了解決上述問題,本申請實施例提供一種檢索方法,所述方法應(yīng)用于基于若干臺檢索服務(wù)器搭建的分布式檢索平臺,分布式檢索平臺可以接收用戶通過檢索客戶端發(fā)送的檢索詞。并可以遍歷所述檢索詞,對所述檢索詞執(zhí)行相鄰字切分,生成若干個雙字詞組。檢索平臺可以分別基于所述若干個雙字詞組,在預(yù)設(shè)的檢索數(shù)據(jù)庫中查找與該若干個雙字詞組對應(yīng)的檢索對象,生成檢索對象列表。并可以計算所述檢索詞與所述檢索列表中的檢索對象的相似度,將相似度最高的若干個檢索對象作為檢索結(jié)果返回至檢索客戶端,以向所述用戶顯示。
由于本申請?zhí)峁┑臋z索方法不再采用現(xiàn)代漢語的分詞方式進行分詞,而是采用將檢索詞進行相鄰字切分,生成雙字詞組的分詞方式,從而可以對用戶輸入的針對古漢語中文文本的檢索詞進行有效地切分,使得分詞的結(jié)果更為合理,檢索平臺采用該分詞進行檢索,檢索結(jié)果與檢索詞的關(guān)聯(lián)度更高。因此,采用本申請?zhí)峁┑臋z索方法可以有效地古漢語中文文本檢索的準(zhǔn)確性。
參見圖1,圖1是本申請一示例性實施例示出的一種檢索方法的網(wǎng)絡(luò)架構(gòu)圖。本申請示出的網(wǎng)絡(luò)架構(gòu),包括客戶端和基于若干臺檢索服務(wù)器搭建的分布式檢索平臺。
上述客戶端可以包括面向用戶的進行檢索的客戶端軟件。如圖2所示,圖2是本申請一示例性實施例示出的一種客戶端的交互界面的示意圖。通常情況下,該客戶端可以為用戶提供一交互界面,用戶可以通過該交互界面,錄入需要進行檢索的檢索詞。在客戶端將所述檢索詞發(fā)送給上述檢索平臺進行檢索后,用戶可以在該客戶端的交互界面上讀取返回的檢索結(jié)果。例如,上述客戶端可以是《古詩詞典》APP等。
其中,承載上述客戶端的硬件環(huán)境,例如,可以是PC機、移動終端等。在本實施例中,不進行特別地限定。
上述檢索平臺,泛指具有檢索功能的,基于若干臺檢索服務(wù)器搭建的分布式檢索平臺,該分布式的檢索平臺可以實現(xiàn)對用戶輸入的檢索詞對應(yīng)的檢索對象進行分布式查找和進行相似度的分布計算等。
參見圖3,圖3是本申請一示例性實施例示出的一種檢索方法的流程圖;所述方法應(yīng)用于上述基于若干臺檢索服務(wù)器搭建的分布式檢索平臺,所述方法具體包括如下所述步驟:
步驟301:接收用戶通過檢索客戶端發(fā)送的檢索詞;
步驟302:遍歷所述檢索詞,對所述檢索詞執(zhí)行相鄰字切分,生成若干個雙字詞組;
步驟303:分別基于所述若干個雙字詞組,在預(yù)設(shè)的檢索數(shù)據(jù)庫中查找與該若干個雙字詞組對應(yīng)的檢索對象,生成檢索對象列表;其中,所述檢索數(shù)據(jù)庫預(yù)先儲存有針對所述檢索數(shù)據(jù)庫中包含的若干個檢索對象分別進行相鄰字切分后生成的若干個雙字詞組,與所述檢索數(shù)據(jù)庫中包含各雙字詞組的檢索對象之間的對應(yīng)關(guān)系;
步驟304:計算所述檢索詞與所述檢索列表中的檢索對象的相似度,將相似度高于預(yù)設(shè)閾值的若干個檢索對象作為檢索結(jié)果返回至檢索客戶端,以向所述用戶顯示。
其中,上述檢索詞,泛指用戶通過客戶端輸入的檢索關(guān)鍵詞。檢索平臺可以通過該檢索詞檢索到與包含該檢索詞的檢索對象。上述檢索詞可以是用戶輸入的一句詩句,如“床前明月光”,也可以是詩句中的一個字或者詞,還可以是古漢語中文文本的標(biāo)題、作者等信息。在這里,只是對檢索詞的內(nèi)容進行示例性地說明,不對其進行特別地限定。
上述檢索對象,泛指通過檢索詞檢索到的一個事項的全部信息的集合。例如,當(dāng)用戶輸入“床前明月光”,該檢索對象是古詩《靜夜思》的全部信息的一個集合,可以包括古詩的題目《靜夜思》,作者李白,古詩的內(nèi)容等信息。
上述相鄰字切分,是一種分詞方式。主要是基于一定的順序,可以為從左至右的順序,依次將用戶輸入的檢索詞中的相鄰的兩個字進行切分,生成若干個雙字詞組。
以檢索詞為“床前明月光”為例,假設(shè)以從左至右的順序,從檢索詞的最左邊的字為第一個字開始,將第一個字和第二個字組合成一個雙字詞組進行切分,比如生成雙字詞為“床前”,接著以第二個字和第三個字組合成一個雙字詞組進行切分,比如生成雙字詞為“前明”,依次類推,直至沒有與“光”相鄰的下一個字結(jié)合成雙字詞組。通過相鄰字切分,生成的雙字詞組為“床前”、“前明”、“明月”“月光”。
在這里,只是對相鄰字切分的順序進行示例性的說明,不對其進行特別地限定。
上述古漢語中文文本,泛指以古漢語的形式創(chuàng)作而成的中文文本??梢园ü旁娫~、古文、歌、賦和曲等。
本申請實施例主要提出一種檢索方法,一方面,由于檢索平臺通過使用相鄰字切分的分詞方式對檢索詞進行分詞,從而可以提高古漢語中文文本檢索的準(zhǔn)確性;另一方面,由于使用分布式檢索平臺進行檢索,從而可以提高古漢語中文文本檢索的速度。
在對古漢語中文文本進行檢索前,需要對檢索數(shù)據(jù)庫中的檢索對象進行相應(yīng)的配置,下面對配置檢索數(shù)據(jù)庫中的檢索對象進行詳細(xì)地說明。
所謂對檢索數(shù)據(jù)庫中的檢索對象進行配置,其實是指預(yù)先將檢索對象經(jīng)過一定的處理,儲存在檢索數(shù)據(jù)庫中的過程。其目的在于,當(dāng)用戶輸入關(guān)于某檢索對象的檢索詞中,檢索平臺可以將儲存在該檢索數(shù)據(jù)庫中的與該檢索詞對應(yīng)的檢索對象返回至客戶端。
在本申請實施例中,檢索平臺可以基于非中文字符的正則表達(dá)式,將所述數(shù)據(jù)庫中的預(yù)設(shè)數(shù)量的檢索對象進行分割,分割成若干子字符串?;谒鱿噜徸智蟹值姆椒?。檢索平臺可以分別對所述若干子字符串進行分詞,生成若干雙字詞組。分別以所述子字符串生成的若干雙字詞組作為檢索主鍵,分別建立每個雙字詞組和與該雙字詞組對應(yīng)的檢索對象的映射關(guān)系。
在實現(xiàn),檢索平臺可以接收開發(fā)人員輸入的或者從其他數(shù)據(jù)庫導(dǎo)入的檢索對象,并可以對該檢索對象進行相應(yīng)的處理,然后儲存在檢索數(shù)據(jù)庫中。
下面詳細(xì)描述對一個檢索對象所進行的分詞處理。
檢索平臺可以基于非中文字符的正則表達(dá)式,對檢索對象的內(nèi)容進行分割,分割成若干子字符串。檢索平臺可以依次將該若干子字符串選定為待分詞字符串,并可以將待分詞字符串進行相鄰字切分,生成若干兩字詞組。檢索平臺可以分別建立該若干兩字詞組與包含該若干兩字詞組的檢索對象的映射關(guān)系。
例如,以檢索對象的標(biāo)題為《靜夜思》這首古詩為例,并結(jié)合古詩詞檢索的檢索數(shù)據(jù)庫的配置場景,對上述分詞處理的方法進行詳細(xì)地說明。
檢索平臺可以基于非中文字符的正則表達(dá)式對《靜夜思》的檢索對象進行分割,分割生成若干個字符串,例如可以為“靜夜思”、“李白”、“床前明月光”、“疑是地上霜”、“舉頭望明月”和“低頭思故鄉(xiāng)”。
檢索平臺可以將上述四個字符串依次選定為待分詞字符串。假設(shè),檢索平臺選定“床前明月光”為待分詞字符串,檢索平臺可以對“床前明月光”進行相鄰字切分,依次生成“床前”、“前明”、“明月”“月光”的兩字詞組。同理,檢索平臺還可以將上述剩余的三個字符串選定為待分詞字符串,對上述剩余的三個字符串依次進行相鄰字切分,生成若干兩字詞組。
檢索平臺可以分別建立上述切分成的兩字詞組和檢索對象的映射關(guān)系,比如可以建立“床前”和標(biāo)題為《靜夜思》的檢索對象的映射關(guān)系,“前明”和標(biāo)題為《靜夜思》的檢索對象的映射關(guān)系等。
檢索平臺還可以對剩余的檢索對象進行上述的分詞處理,分別得到每個檢索對象對應(yīng)的兩字詞組。
在對所有的檢索對象完成上述的分詞處理之后,檢索平臺可以基于上述映射關(guān)系,分別以該兩字詞組作為檢索主鍵,以包含該兩字詞組的檢索對象為鍵值,保存在上述數(shù)據(jù)庫中。在檢索查找時,檢索平臺可以基于主鍵,查找到與檢索主鍵相關(guān)的鍵值信息。
需要說明的是,每個被切分成的兩字詞組對應(yīng)有若干個檢索對象,每個檢索對象可以包括若干個兩字詞組,每個檢索對象包括檢索對象的內(nèi)容、題目和作者等相關(guān)信息。其中,檢索對象的相關(guān)信息可以以字符串的形式進行儲存,例如,當(dāng)檢索對象的標(biāo)題為《靜夜思》時,其內(nèi)容的保存通??梢砸浴按睬懊髟鹿狻薄ⅰ耙墒堑厣纤?、“舉頭望明月”和“低頭思故鄉(xiāng)”這四個字符串的形式進行保存。這里只是對檢索對象的保存形式進行了示例性的說明,不對其進行特別地限定。
檢索對象在檢索數(shù)據(jù)庫中的儲存形式如表1所示,表1為檢索對象儲存形式的示例性說明。
例如,以古詩詞檢索為例,以“明月”作為主鍵,則其鍵值可以包括標(biāo)題為《靜夜思》的檢索對象,標(biāo)題為《水調(diào)歌頭》的檢索對象和標(biāo)題為《月下獨酌》的檢索對象等。在檢索時,檢索平臺可以根據(jù)主鍵“明月”,在數(shù)據(jù)庫中檢索查找到所有包含“明月”的檢索對象。
表1
此外,本申請實施例中,當(dāng)所述檢索對象為古漢語中文文本時,在所述基于所述相鄰字切分的方法,分別對所述若干子字符串進行分詞,生成若干雙字詞組之前,檢索平臺刪除由所述檢索對象分割成的所述若干字符串中的非中文字符和嘆詞詞組。
在實現(xiàn)時,檢索平臺在基于所述相鄰字切分的方法,分別對所述若干子字符串進行分詞,生成若干雙字詞組之前,可以先將由若干檢索對象分割生成的若干子字符串的非中文字符和嘆詞詞組刪除。
其中,所述非中文字符,即為不是中文的字符,可以包括標(biāo)點符號等。所述嘆詞詞組,是指以嘆詞組成的詞組。例如古文中或者古詩詞中的“哉”、“乎”、“耶”等。在這里,只是對非中文字符和嘆詞詞組進行示例性的說明,不進行特別地限定。
以上是對檢索數(shù)據(jù)庫中的檢索對象的配置的說明,下面對檢索方法進行詳細(xì)地說明。
在本申請實施例中,接收用戶通過檢索客戶端發(fā)送的檢索詞;遍歷所述檢索詞,對所述檢索詞執(zhí)行相鄰字切分,生成若干個雙字詞組;分別基于所述若干個雙字詞組,在預(yù)設(shè)的檢索數(shù)據(jù)庫中查找與該若干個雙字詞組對應(yīng)的檢索對象,生成檢索對象列表;其中,所述檢索數(shù)據(jù)庫預(yù)先儲存有針對所述檢索數(shù)據(jù)庫中包含的若干個檢索對象分別進行相鄰字切分后生成的若干個雙字詞組,與所述檢索數(shù)據(jù)庫中包含各雙字詞組的檢索對象之間的對應(yīng)關(guān)系;計算所述檢索詞與所述檢索列表中的檢索對象的相似度,將相似度高于預(yù)設(shè)閾值的若干個檢索對象作為檢索結(jié)果返回至檢索客戶端,以向所述用戶顯示。
在實現(xiàn)時,用戶可以在客戶端提供的交互界面的指定位置輸入檢索詞??蛻舳嗽诮邮盏接脩糨斎氲臋z索詞后,可以將該檢索詞發(fā)送至檢索平臺。
檢索平臺可以遍歷從客戶端接收到的上述檢索詞,并基于一定的順序,對檢索詞執(zhí)行上述的相鄰字切分,將檢索詞切分成若干個雙字詞組。
需要說明的是,在相關(guān)的檢索方法中,通常采用現(xiàn)代漢語分詞的方法對古漢語中文文本進行檢索,由于古漢語文學(xué)的詞組與現(xiàn)代漢語詞組有著較大的區(qū)別,所以很難采用現(xiàn)代漢語分詞的方法對基于古漢語中文文本的檢索詞進行切分,從而很難根據(jù)切分出的詞組查找到關(guān)聯(lián)度較高的檢索對象。例如,以“床前明月光”為例,采用現(xiàn)代漢語分詞的方法,生成詞組一般為“明月”、“月光”,如果僅僅只基于“明月”、“月光”這兩個現(xiàn)代漢語詞組在檢索數(shù)據(jù)庫中匹配與之對應(yīng)的檢索對象,匹配出的檢索對象的數(shù)量較多,而且關(guān)聯(lián)度不高,因此,大大降低了古漢語中文文本檢索的準(zhǔn)確性。
本申請實施例采用相鄰字切分的分詞方法,通過一定的順序,對用戶輸入的檢索詞進行相鄰字分詞,生成一個兩字詞組。生成的分詞不再僅僅包括符合現(xiàn)代漢語語法的詞組,而且還可以包括古漢語詞組。由于采用有效地分詞方法進行分詞,所以可以有效地提高古漢語中文文本檢索的準(zhǔn)確性。
在完成檢索詞的相鄰字切分后,檢索平臺可以選定上述若干個雙字詞組中的一個雙字詞組,在經(jīng)過上述配置的檢索數(shù)據(jù)庫中查找與這一個雙字詞組對應(yīng)的若干個檢索對象(即包含該雙字詞組的檢索對象)。然后再基于相似的方法,查找與上述若干雙字詞組中的剩余的雙字詞組對應(yīng)的檢索對象。
在完成上述檢索對象的查找之后,檢索平臺可以將上述檢索詞被切分成的所有雙字詞組對應(yīng)檢索對象進行整合,生成檢索對象列表。
例如,如表2所示,表2為檢索對象列表的一個示例性說明,當(dāng)用戶輸入的檢索詞為“床前明月光”時,檢索平臺可以基于一定的順序,對“床前明月光”進行相鄰字切分,依次生成“床前”、“前明”、“明月”和“月光”的兩字詞組。然后在檢索數(shù)據(jù)庫中,分別查找“床前”、“前明”、“明月”和“月光”對應(yīng)的檢索對象,生成檢索對象列表。
表2
檢索平臺可以分別計算生成的檢索對象列表中的檢索對象與用戶輸入的檢索詞的相似度,并可以將得到的相似度值進行排序,將相似度高于預(yù)設(shè)閾值的檢索對象,作為檢索結(jié)果,返回客戶端,顯示給用戶。
下面對上述用戶輸入的檢索詞和上述檢索對象列表中的一個檢索對象的相似度計算進行詳細(xì)地說明。檢索對象列表中的其余檢索對象與該檢索詞的相似度計算方法相同。
對于檢索詞與檢索列表中的檢索對象的相似度計算,可以采用編輯距離算法對相似度進行計算,也可以采用其他的開發(fā)人員自行設(shè)定的算法,對相似度進行計算。
在本實施例中,檢索平臺基于編輯距離算法,計算所述檢索詞與所述檢索列表中的檢索對象的相似度。所述編輯距離算法包括:檢索平臺基于非中文字符的正則表達(dá)式,對所述檢索詞進行分割,分割成若干子字符串;將所述檢索詞分割成的若干子字符串依次確定為目標(biāo)子字符串;分別計算該目標(biāo)子字符串與所述檢索列表中的檢索對象被分割生成的所有子字符串的編輯距離,并獲取計算出的最小編輯距離;將獲取到的所述檢索詞分割生成的所有子字符串對應(yīng)的最小編輯距離進行累加,再對累加后的最小編輯距離進行平均,得到該檢索詞與所述檢索對象的相似度;其中,所述相似度以編輯距離進行表征,編輯距離越小,相似度越高。
其中,所述編輯距離是指在兩個字符串中,由一個字符串轉(zhuǎn)化成另一個字符串所需的最少編輯操作的次數(shù)。許可的編輯操作包括將一個字符替換成另一個字符,插入一個字符,刪除一個字符。通常情況下,編輯距離越小,兩個字符串的相似度越大。
需要說明的是,在相關(guān)的檢索方法中,一般采用基于檢索詞精準(zhǔn)匹配的數(shù)據(jù)庫模糊查詢的方法。采用這種查詢方法,要求用戶輸入的檢索詞必須是精確無誤,否則很難返回用戶所需的檢索結(jié)果。
例如,假設(shè)用戶輸入的檢索詞為“窗前明月光”時,采用基于檢索詞精確匹配的數(shù)據(jù)庫模糊查詢方法,就很難查詢到包括“床前明月光”的《靜夜思》。
而本申請實施例提供的檢索方法采用編輯距離算法來計算檢索詞與檢索對象之間的相似度,一方面,采用編輯距離來表征檢索詞與檢索對象之間的相似度,對相似度進行了量化,通過編輯距離的大小就可以清楚表明相似度的高低,因此,極大地提高了返回結(jié)果的精準(zhǔn)性。另一方面,即使用戶輸入的檢索詞中存在少量錯別字,也可以通過該基于編輯距離算法的相似度計算方法,向用戶返回相似度較高的檢索對象。
下面對基于編輯距離算法,計算檢索對象列表中的一個檢索對象與檢索詞之間的編輯距離的過程進行詳細(xì)的說明。
檢索平臺可以基于非中文字符的正則表達(dá)式,對上述用戶輸入的檢索詞進行分割,分割成若干子字符串。檢索平臺可以將上述檢索詞分割成的若干子字符串依次確定為目標(biāo)子字符串。
以一個目標(biāo)子字符串為例,檢索平臺可以將該目標(biāo)子字符串與上述檢索列表中的檢索對象被分割成的子字符串依次進行編輯距離的計算,并獲取計算出的最小編輯距離。
檢索平臺可以基于上述一個目標(biāo)子字符串計算最小編輯距離的方法,對其余的目標(biāo)子字符串進行編輯距離計算。并分別獲取每個目標(biāo)子字符串對應(yīng)的最小編輯距離。
檢索平臺可以將獲取到的所述檢索詞分割生成的所有目標(biāo)子字符串對應(yīng)的最小編輯距離進行累加,再對累加后的最小編輯距離之和進行平均,得到該檢索詞與該檢索對象的相似度。
該檢索詞與該檢索對象的基于編輯距離算法的相似度公式如下:
S=[MIN(Ld11,Ld12...,Ld1N)+MIN(Ld21,Ld22...,Ld2N)+...+MIN(LdM1,LdM2...,LdMN)]/M
其中,S表示檢索詞語檢索列表中的一個檢索對象的相似度,N表示檢索對象被分割生成的子字符串的個數(shù),M為檢索詞被分割成的子字符串的個數(shù)。Ldrp表示檢索詞被分割生成的第r個子字符串與檢索對象被分割生成的第p個子字符串之間的編輯距離。
在本申請實施例中,當(dāng)所述檢索對象包括檢索對象的內(nèi)容、檢索對象的標(biāo)題和檢索對象的作者時;所述基于編輯距離算法,計算所述檢索詞與所述檢索列表中的檢索對象的相似度,包括:基于所述編輯距離算法,計算所述檢索詞與所述檢索列表中的檢索對象的內(nèi)容的相似度,獲取第一相似度;基于所述編輯距離算法,計算所述檢索詞與所述檢索列表中的檢索對象的標(biāo)題的相似度,獲取第二相似度;基于所述編輯距離算法,計算所述檢索詞與所述檢索列表中的檢索對象的作者的相似度,獲取第三相似度?;谒龅谝幌嗨贫?、第二相似度和所述第三相似度,計算該檢索詞與該檢索對象的相似度。
在實現(xiàn)時,檢索平臺可以基于上述編輯距離算法,分別計算上述檢索詞與上述檢索對象的內(nèi)容、標(biāo)題和作者的相似度,分別獲得第一相似度,第二相似度和第三相似度。并可以基于第一相似度、第二相似度和所述第三相似度,計算該檢索詞與該檢索對象的相似度。
下面以用戶輸入的檢索詞為“床前明月光,疑是地上霜”為例,對第一相似度的計算進行詳細(xì)的說明。
當(dāng)用戶輸入的檢索詞為“床前明月光,疑是地上霜”時,檢索平臺可以基于非中文字符的正則表達(dá)式將該檢索詞分割,生成“床前明月光”和“疑是地上霜”兩個子字符串。
假設(shè)檢索對象為檢索對象列表中的題目為《靜夜思》的信息集合,檢索平臺可以對《靜夜思》的內(nèi)容進行基于非中文字符的正則表達(dá)式的分割,分割成“床前明月光”、“疑是地上霜”、“舉頭望明月”和“低頭思故鄉(xiāng)”這四個子字符串。
檢索平臺可以先分別計算檢索詞分割成的“床前明月光”子字符串與檢索對象內(nèi)容分割成的“床前明月光”、“疑是地上霜”、“舉頭望明月”和“低頭思故鄉(xiāng)”這四個子字符串的編輯距離,分別得到Ld11、Ld12、Ld13和Ld14,并獲取這個四個值中最小的編輯距離。
然后,檢索平臺可以分別計算檢索詞分割成的“疑是地上霜”子字符串與檢索對象內(nèi)容分割成的“床前明月光”、“疑是地上霜”、“舉頭望明月”和“低頭思故鄉(xiāng)”這四個子字符串的編輯距離,分別得到Ld21、Ld22、Ld23和Ld24,并獲取這個四個值中最小的編輯距離。
檢索詞與該檢索對象針對檢索對象內(nèi)容的第一相似度的取值即為:
Sc=[MIN(Ld11,Ld12,Ld13,Ld14)+MIN(Ld21,Ld22,Ld23,Ld24)]/2
檢索平臺可以基于上述第一相似度的計算方法,分別計算該檢索詞與該檢索詞對應(yīng)的檢索對象針對標(biāo)題和作者的相似度,分別得到第二相似度和第三相似度。
在基于第一相似度、第二相似度和所述第三相似度,計算該檢索詞與該檢索對象的相似度時,檢索平臺可以采取為第一相似度、第二相似度和第三相似度配置權(quán)重的方法,來計算相似度,也可以采用開發(fā)人員自行定義的計算相似度的方法進行計算,比如采用將第一相似度、第二相似度和第三相似度之和求平均的方法來計算相似度。
在本申請實施例中,檢索平臺可以為所述第一相似度、所述第二相似度和所述第三相似度分別配置對應(yīng)的權(quán)重。并可以將所述第一相似度與該第一相似度對應(yīng)的權(quán)重的乘積、所述第二相似度與該第二相似度對應(yīng)的權(quán)重的乘積和所述第三相似度與該第三相似度對應(yīng)的權(quán)重的乘積進行累加,得到所述檢索詞與所述檢索對象的相似度。
在實現(xiàn)時,檢索平臺可以基于預(yù)設(shè)的策略,分別為第一相似度、第二相似度和第三相似度配置相應(yīng)的權(quán)重,然后在基于上述第一、第二和第三相似度及其分別對應(yīng)的權(quán)重,計算相似度。
相似度計算公式如下:
SP=Sc*Wc+St*Wt+Sa*Wa
其中,Sc為基于上述編輯距離的算法,計算得到的上述檢索詞與上述檢索對象的內(nèi)容的第一相似度,St為上述檢索詞與上述檢索對象的標(biāo)題的第二相似度,Sa為上述檢索詞與上述檢索對象的作者的第三相似度。Wc為第一相似度對應(yīng)的權(quán)重,Wt為第二相似度對應(yīng)的權(quán)重,Wa為第三相似度對應(yīng)的權(quán)重。
需要說明的是,檢索平臺可以依據(jù)上述相似度計算的方法,計算檢索詞與檢索對象列表中的每一個檢索對象與該檢索對象對應(yīng)的檢索詞的相似度,然后將得到的相似度值進行排序,將相似度高于預(yù)設(shè)閾值的檢索對象,作為檢索結(jié)果,返回客戶端,顯示給用戶。
在本實施例中,檢索平臺還可以對基于預(yù)設(shè)的權(quán)重調(diào)整策略,對所述第一相似度、所述第二相似度和所述第三相似度對應(yīng)的權(quán)重,進行調(diào)整。
在實現(xiàn)時,檢索平臺可以基于預(yù)測模型的權(quán)重調(diào)整策略對上述三個相似度對應(yīng)的權(quán)重進行調(diào)整,也可以基于檢索詞長度或者復(fù)姓分析的方法對上述三個相似度對應(yīng)的權(quán)重進行調(diào)整。
對于基于預(yù)測模型的權(quán)重調(diào)整策略,在本申請實施例中,檢索平臺基于預(yù)設(shè)的預(yù)測模型,計算所述檢索詞分別為所述檢索對象的內(nèi)容、標(biāo)題和作者的概率。并可以基于計算出的所述檢索詞分別為所述檢索對象的內(nèi)容、標(biāo)題和作者的概率,調(diào)整與所述檢索對象的內(nèi)容、標(biāo)題和作者分別對應(yīng)的第一相似度、第二相似度和第三相似度的權(quán)重。
在實現(xiàn)時,檢索平臺可以將上述檢索詞傳入預(yù)設(shè)的預(yù)測模型中,預(yù)設(shè)的預(yù)測模型可以基于預(yù)設(shè)的統(tǒng)計分析算法,來預(yù)測上述檢索詞分別為檢索對象的內(nèi)容、標(biāo)題和作者的概率。
其中,上述預(yù)測模型可以包括基于預(yù)設(shè)的統(tǒng)計分析算法,以及用戶檢索現(xiàn)有的古詩詞的內(nèi)容、標(biāo)題及作者的檢索數(shù)據(jù),進行統(tǒng)計分析而創(chuàng)建出的大數(shù)據(jù)模型。
預(yù)設(shè)的統(tǒng)計算法可以為回歸算法,神經(jīng)網(wǎng)絡(luò)等,在這里只是對預(yù)設(shè)的統(tǒng)計算法進行示例性的說明,不對其進行特別地限定。
對于檢索詞長度分析和復(fù)姓分析的權(quán)重調(diào)整策略,在本申請實施例中,檢索平臺可以確定用戶輸入的所述檢索詞的長度,當(dāng)該檢索詞的長度在預(yù)設(shè)的姓氏長度范圍內(nèi)時,提高所述第三相似度對應(yīng)的權(quán)重。或者,分別將由所述檢索詞切分成的所述若干個雙字詞組與預(yù)設(shè)的復(fù)姓列表進行匹配,如果任一由所述檢索詞切分成的所述若干個雙字詞組命中所述復(fù)姓列表,則提高所述第三相似度對應(yīng)的權(quán)重。對于基于檢索詞的長度分析,在實現(xiàn)時,檢索平臺可以先計算并確定用戶輸入的所述檢索詞的長度。當(dāng)所述檢索詞的長度在預(yù)設(shè)的姓氏長度范圍內(nèi)時,提高上述第三相似度對應(yīng)的權(quán)重。
需要說明的是,對于姓氏長度范圍的設(shè)定,開發(fā)人員可以基于實際應(yīng)用中的具體情況而進行設(shè)定。例如,由于中國姓名的字?jǐn)?shù)普遍小于四個字,所以可以將預(yù)設(shè)的姓氏長度范圍設(shè)置為小于4個字的長度,當(dāng)用戶輸入的檢索詞的長度小于4個字時,表明用戶輸入的檢索詞很大程度上可能為古漢語中文文本的作者姓名,此時可以提高該檢索詞與檢索對象列表中的檢索對象的作者的相似度,即第三相似度。這里只是對預(yù)設(shè)的姓氏長度范圍進行示例性的說明,不進行特別地限定,在實際應(yīng)用中,開發(fā)人員可以基于實際情況自行調(diào)整該姓氏長度范圍。
對于基于檢索詞的復(fù)姓分析,在實現(xiàn)時,檢索平臺可以依次將上述檢索詞經(jīng)過相鄰字切分,生成的雙字詞組與本地預(yù)設(shè)的復(fù)姓列表進行匹配,如果切分成的若干雙字詞組中任一雙字詞組命中該復(fù)姓列表,則可以提高第三相似度對應(yīng)的權(quán)重。
例如,當(dāng)用戶輸入的檢索詞為“歐陽修”時,該檢索詞進行相鄰字分詞后,可以得到“歐陽”、“陽修”。檢索平臺可以依次將“歐陽”和“陽修”與預(yù)設(shè)的復(fù)姓列表進行匹配。如果“歐陽”和“陽修”中的一個雙字詞組命中該復(fù)姓列表,則可以提高第三相似度的權(quán)重。
需要說明的是,采用上述復(fù)姓分析匹配和檢索詞長度分析的方式的優(yōu)點在于,即使用戶輸入的檢索詞包含多種信息,如檢索詞為“詩歌歐陽修”時,采用檢索詞的相鄰字切分和復(fù)姓分析匹配方法,由于“歐陽”命中了預(yù)設(shè)的復(fù)姓列表,所以也可以計算出該檢索詞更傾向于檢索對象的作者,從而提高第三相似度對應(yīng)的權(quán)重,使得檢索的結(jié)果更為精確。
此外,還需要說明的是,在相關(guān)的檢索方法中,在用戶沒有對檢索詞進行限制的條件下,例如用戶沒有限制檢索詞是針對作者等。一般情況下,檢索平臺默認(rèn)用戶輸入的檢索詞主要針對檢索對象的內(nèi)容,即檢索對象的內(nèi)容中包含該檢索詞。然而當(dāng)用戶輸入針對檢索對象的作者或者檢索對象的標(biāo)題的檢索詞時,相關(guān)的檢索方法仍然以檢索對象的內(nèi)容為主,使得返回的檢索結(jié)果準(zhǔn)確性較低。
而在本申請實施例中,檢索平臺即使在用戶沒有對檢索詞進行限制的條件下,仍可以基于預(yù)設(shè)的權(quán)重調(diào)整策略,針對用戶輸入的檢索詞,自動分析該檢索詞的傾向性。如該檢索詞更傾向與作者姓名,或者標(biāo)題等。然后,檢索平臺可以基于這種傾向性,調(diào)高相應(yīng)的第一、第二和第三相似度對應(yīng)的權(quán)重。因此,使用本申請?zhí)峁┑臋z索方法,由于可以自動分析用戶輸入的檢索詞的傾向性,從而可以有效地提高檢索結(jié)果的準(zhǔn)確性,提高檢索的效率。
例如,以古詩詞檢索為例,當(dāng)用戶輸入的檢索詞為“李白”,且用戶沒有指定基于作者進行檢索,在相關(guān)的檢索方法中,檢索平臺會返回古詩詞的內(nèi)容中包含李白的古詩詞。而在本申請?zhí)峁┑臋z索方法中,即使在用戶沒有指定基于作者進行檢索,檢索平臺也會基于預(yù)設(shè)的權(quán)重調(diào)整策略,分析“李白”這個檢索詞的傾向性。比如,檢索平臺可以基于檢索詞的長度分析,確定檢索詞“李白”的長度在預(yù)設(shè)的姓氏長度范圍內(nèi),所以可以提高檢索詞與檢索對象作者的相似度對應(yīng)的權(quán)重。因此,可以有效地提高檢索結(jié)果的準(zhǔn)確性。
此外,在本申請實施例中,所述儲存有所述檢索對象的檢索數(shù)據(jù)庫儲存在本設(shè)備的物理內(nèi)存中。
需要說明的是,由于內(nèi)存容量限制等一些原因,相關(guān)檢索方法的數(shù)據(jù)庫往往儲存在硬盤中,由于在硬盤上讀取數(shù)據(jù)的速度小于直接訪問內(nèi)存的讀取數(shù)據(jù)的速度,所以基于硬盤儲存檢索數(shù)據(jù)庫的檢索方法可能會影響檢索的速率。
在本申請實施例中,由于古漢語中文文本的數(shù)量有限,并且現(xiàn)代計算機的內(nèi)存和處理能力都非常強大,因此可以將檢索數(shù)據(jù)庫儲存在檢索平臺的內(nèi)存中,因此極大地提高了檢索的速度,提高了檢索地效率。
本申請實施例提供一種檢索方法,所述方法應(yīng)用于基于若干臺檢索服務(wù)器搭建的分布式檢索平臺,分布式檢索平臺可以接收用戶通過檢索客戶端發(fā)送的檢索詞。并可以遍歷所述檢索詞,對所述檢索詞執(zhí)行相鄰字切分,生成若干個雙字詞組。檢索平臺可以分別基于所述若干個雙字詞組,在預(yù)設(shè)的檢索數(shù)據(jù)庫中查找與該若干個雙字詞組對應(yīng)的檢索對象,生成檢索對象列表。并可以基于編輯距離,可計算所述檢索詞與所述檢索列表中的檢索對象的相似度,將相似度最高的若干個檢索對象作為檢索結(jié)果返回至檢索客戶端,以向所述用戶顯示。
一方面,由于本申請?zhí)峁┑姆椒ú辉俨捎矛F(xiàn)代漢語的分詞方式進行分詞,而是采用將檢索詞進行相鄰字切分,生成雙字詞組的分詞方式,從而可以對用戶輸入的針對古漢語中文文本的檢索詞進行有效地切分,使得分詞的結(jié)果更為合理,檢索平臺采用該分詞進行檢索,檢索結(jié)果與檢索詞的關(guān)聯(lián)度更高。因此,采用本申請?zhí)峁┑臋z索方法可以有效地古漢語中文文本檢索的準(zhǔn)確性。
另一方面,由于相似度的計算是基于編輯距離,使得相似度的計算變?yōu)榱硕坑嬎悖虼藰O大地提高了檢索結(jié)果的準(zhǔn)確性。
此外,在本申請?zhí)峁┑臋z索方法中,在計算相似度時,檢索平臺可以基于預(yù)設(shè)的權(quán)重調(diào)整策略,根據(jù)用戶輸入的檢索詞,調(diào)整檢索詞與檢索對象的內(nèi)容、作者和標(biāo)題對應(yīng)的權(quán)重,因此可以有效地提高檢索結(jié)果的準(zhǔn)確性。
最后,在本申請?zhí)峁┑臋z索方法中,由于檢索數(shù)據(jù)庫儲存在本地內(nèi)存中,因此極大地提高了檢索的速度,有效地提高了檢索的效率。
下面以古詩詞檢索的場景為例,對上述檢索方法進行詳細(xì)地說明。
假設(shè)用戶輸入的檢索詞為“床前明月光,疑是地上霜”。
在接收到用戶通過客戶端輸入的“床前明月光,疑是地上霜”的檢索詞后,檢索平臺可以遍歷該檢索詞,將該檢索詞進行相鄰字切分,切分生成若干兩字詞組,分別為“床前”、“前明”、“明月”、“月光”、“疑是”、“是地”、“地上”和“上霜”。
檢索平臺可以選定“床前”這個兩字詞組,在檢索數(shù)據(jù)庫中查找與“床前”對應(yīng)的若干個檢索對象(即包含“床前”這個兩字詞組的檢索對象)。
然后檢索平臺可以基于查找“床前”對應(yīng)的若干檢索對象的方法,分別查找其他的兩字詞組對應(yīng)的若干個檢索對象。
在完成上述檢索對象的查找之后,檢索平臺可以將上述檢索詞切分成的所有雙字詞組對應(yīng)檢索對象進行整合,生成檢索對象列表。檢索對象列表如表2所示,表2只是展示了檢索對象列表的一部分,表2還可以包括其他表項,如“疑是”兩字詞組對應(yīng)的檢索對象等。
在生成檢索對象列表后,檢索平臺可以計算檢索對象列表中的檢索對象與該檢索詞的相似度。在計算相似度時,檢索平臺可以從檢索對象的內(nèi)容、標(biāo)題和作者這三個維度對該相似度進行計算,分別獲得第一相似度、第二相似度和第三相似度。再基于計算出的第一相似度、第二相似度和第三相似度,計算得到該檢索對象和檢索詞的相似度。
下面以計算標(biāo)題為《靜夜思》的檢索對象為例,計算該檢索詞與該檢索對象的內(nèi)容的第一相似度。
檢索平臺可以對《靜夜思》的內(nèi)容進行基于非中文字符的正則表達(dá)式的分割,分割成“床前明月光”、“疑是地上霜”、“舉頭望明月”和“低頭思故鄉(xiāng)”這四個子字符串。
檢索平臺可以先分別計算檢索詞分割成的“床前明月光”子字符串與檢索對象內(nèi)容分割成的“床前明月光”、“疑是地上霜”、“舉頭望明月”和“低頭思故鄉(xiāng)”這四個子字符串的編輯距離,分別得到Ld11、Ld12、Ld13和Ld14,并獲取這個四個值中最小的編輯距離。
然后,檢索平臺可以分別計算檢索詞分割成的“疑是地上霜”子字符串與檢索對象內(nèi)容分割成的“床前明月光”、“疑是地上霜”、“舉頭望明月”和“低頭思故鄉(xiāng)”這四個子字符串的編輯距離,分別得到Ld21、Ld22、Ld23和Ld24,并獲取這個四個值中最小的編輯距離。
檢索詞與該檢索對象針對檢索對象內(nèi)容的相似度的取值即為:
Sc=[MIN(Ld11,Ld12,Ld13,Ld14)+MIN(Ld21,Ld22,Ld23,Ld24)]/2
檢索平臺可以基于上述第一相似度的計算方法,分別計算檢索詞與該檢索詞對應(yīng)的檢索對象針對標(biāo)題和作者的相似度,分別得到第二相似度St和第三相似度Sa。
在完成上述第一、第二和第三相似度計算后,檢索平臺可以基于預(yù)設(shè)的策略,為該第一、第二和第三相似度分別配置相應(yīng)的權(quán)重,權(quán)重分別為Wc、Wt和Wa。
檢索平臺可以基于相似度的計算公式,計算標(biāo)題為《靜夜思》的檢索對象與檢索詞為“床前明月光,疑是地上霜”的相似度,相似度值為:
SP=Sc*Wc+St*Wt+Sa*Wa
檢索平臺可以基于上述計算標(biāo)題為《靜夜思》的檢索對象與檢索詞為“床前明月光,疑是地上霜”的相似度,分別計算檢索對象列表中其他的檢索對象與該檢索詞的相似度。然后將得到的相似度值進行排序,將相似度高于預(yù)設(shè)閾值的若干個檢索對象,作為檢索結(jié)果,返回客戶端,顯示給用戶。
與前述檢索方法的實施例相對應(yīng),本申請還提供了檢索裝置的實施例。
本申請檢索裝置的實施例可以應(yīng)用在檢索平臺上。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在檢索平臺的處理器將非易失性存儲器中對應(yīng)的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,如圖4所示,為本申請檢索裝置所在檢索平臺的一種硬件結(jié)構(gòu)圖,除了圖4所示的處理器、內(nèi)存、網(wǎng)絡(luò)出接口、以及非易失性存儲器之外,實施例中裝置所在的檢索平臺通常根據(jù)該檢索的實際功能,還可以包括其他硬件,對此不再贅述。
請參考圖5,圖5是本申請一示例性實施例示出的一種檢索裝置的框圖,所述裝置應(yīng)用于基于若干臺檢索服務(wù)器搭建的分布式檢索平臺,所述裝置包括:
接收單元510,用于接收用戶通過檢索客戶端發(fā)送的檢索詞;
切分單元520,用于遍歷所述檢索詞,對所述檢索詞執(zhí)行相鄰字切分,生成若干個雙字詞組;
查找單元530,用于基于所述若干個雙字詞組,在預(yù)設(shè)的檢索數(shù)據(jù)庫中查找與該若干個雙字詞組分別對應(yīng)的檢索對象,生成檢索對象列表;其中,所述檢索數(shù)據(jù)庫預(yù)先儲存有針對所述檢索數(shù)據(jù)庫中包含的若干個檢索對象分別進行相鄰字切分后生成的若干個雙字詞組,與所述檢索數(shù)據(jù)庫中包含各雙字詞組的檢索對象之間的對應(yīng)關(guān)系;
計算單元540,用于計算所述檢索詞與所述檢索列表中的檢索對象的相似度,將相似度高于預(yù)設(shè)閾值的若干個檢索對象作為檢索結(jié)果返回至檢索客戶端,以向所述用戶顯示。
在另一種可選的實現(xiàn)方式中,所述裝置還包括:
分割單元550,用于基于非中文字符的正則表達(dá)式,將所述數(shù)據(jù)庫中的預(yù)設(shè)數(shù)量的檢索對象進行分割,分割成若干子字符串;
所述切分單元520,還用于基于所述相鄰字切分的方法,分別對所述若干子字符串進行分詞,生成若干雙字詞組;
儲存單元560,用于分別建立所述子字符串生成的若干雙字詞組和與該若干雙字詞組對應(yīng)的檢索對象的映射關(guān)系,并分別以所述若干雙字詞組作為檢索主鍵儲存在所述檢索數(shù)據(jù)庫中。
在另一種可選的實現(xiàn)方式中,所述計算單元540,具體用于基于編輯距離算法,計算所述檢索詞與所述檢索列表中的檢索對象的相似度;
所述編輯距離算法包括:
基于非中文字符的正則表達(dá)式,對所述檢索詞進行分割,分割成若干子字符串;
將所述檢索詞分割成的若干子字符串依次確定為目標(biāo)子字符串;
分別計算該目標(biāo)子字符串與所述檢索列表中的檢索對象被分割生成的所有子字符串的編輯距離,并獲取計算出的最小編輯距離;
將獲取到的所述檢索詞分割生成的所有目標(biāo)子字符串對應(yīng)的最小編輯距離進行累加,再對累加后的最小編輯距離進行平均,得到該檢索詞與所述檢索對象的相似度;其中,所述相似度以編輯距離進行表征,編輯距離越小,相似度越高。
在另一種可選的實現(xiàn)方式中,所述檢索對象包括檢索對象的內(nèi)容、檢索對象的標(biāo)題和檢索對象的作者;
所述計算單元540,進一步用于基于所述編輯距離算法,計算所述檢索詞與所述檢索列表中的檢索對象的內(nèi)容的相似度,獲取第一相似度;基于所述編輯距離算法,計算所述檢索詞與所述檢索列表中的檢索對象的標(biāo)題的相似度,獲取第二相似度;基于所述編輯距離算法,計算所述檢索詞與所述檢索列表中的檢索對象的作者的相似度,獲取第三相似度;基于所述第一相似度、所述第二相似度和所述第三相似度,計算所述檢索詞與所述檢索列表中的檢索對象的相似度。
在另一種可選的實現(xiàn)方式中,所述計算單元540,進一步用于為所述第一相似度、所述第二相似度和所述第三相似度分別配置對應(yīng)的權(quán)重;將所述第一相似度與該第一相似度對應(yīng)的權(quán)重的乘積、所述第二相似度與該第二相似度對應(yīng)的權(quán)重的乘積和所述第三相似度與該第三相似度對應(yīng)的權(quán)重的乘積進行累加,得到所述檢索詞與所述檢索對象的相似度。
在另一種可選的實現(xiàn)方式中,所述裝置還包括調(diào)整單元570,用于基于預(yù)設(shè)的權(quán)重調(diào)整策略,對所述第一相似度、所述第二相似度和所述第三相似度對應(yīng)的權(quán)重,進行調(diào)整。
在另一種可選的實現(xiàn)方式中,所述調(diào)整單元570,具體用于基于預(yù)設(shè)的預(yù)測模型,計算所述檢索詞分別為所述檢索對象的內(nèi)容、標(biāo)題和作者的概率;基于計算出的所述檢索詞分別為所述檢索對象的內(nèi)容、標(biāo)題和作者的概率,調(diào)整與所述檢索對象的內(nèi)容、標(biāo)題和作者分別對應(yīng)的第一相似度、第二相似度和第三相似度的權(quán)重。
在另一種可選的實現(xiàn)方式中,所述調(diào)整單元570,具體用于確定用戶輸入的所述檢索詞的長度,當(dāng)該檢索詞的長度在預(yù)設(shè)的姓氏長度范圍內(nèi)時,提高所述第三相似度對應(yīng)的權(quán)重;或者,分別將由所述檢索詞切分成的所述若干個雙字詞組與預(yù)設(shè)的復(fù)姓列表進行匹配,如果任一由所述檢索詞切分成的所述若干個雙字詞組命中所述復(fù)姓列表,則提高所述第三相似度對應(yīng)的權(quán)重。
在另一種可選的實現(xiàn)方式中,所述檢索對象為古漢語詩詞;
所述裝置還包括:
刪除單元580,用于在所述基于所述相鄰字切分的方法,分別對所述若干子字符串進行分詞,生成若干雙字詞組之前,刪除由所述檢索對象分割成的所述若干字符串中的非中文字符和嘆詞詞組。
上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實現(xiàn)過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本申請保護的范圍之內(nèi)。