本發(fā)明涉及自然語言處理領(lǐng)域,特別涉及一種文本差異性的計(jì)算方法及裝置。
背景技術(shù):
在自然語言處理中,經(jīng)常會(huì)涉及對(duì)文本中多個(gè)字符串的處理,如統(tǒng)計(jì)不同字符串的差異。目前用于計(jì)算文本差異性的文本差異性算法主要有編輯距離算法(LD),最長公共子序列(LCS),Needleman-Wunsch算法等。編輯距離算法,是目前用來計(jì)算兩個(gè)字符串的相似度比較流行的算法,可以如圖1所示。設(shè)有兩個(gè)字符串A和B,字符串差異計(jì)算就是統(tǒng)計(jì)一個(gè)字符串A轉(zhuǎn)換為另一個(gè)字符串B過程中所添加、刪除或修改操作的最少次數(shù)。
現(xiàn)有技術(shù)中的文本差異性算法,如編輯距離算法,一般基于動(dòng)態(tài)規(guī)劃的思想,將待求解問題分解成若干個(gè)子問題,先求解子問題,然后從這些子問題的解得到原問題的解,完成一次編輯距離算法的時(shí)間復(fù)雜度為O(m*n)(m為字符串A長度,n為字符串B長度)。而在實(shí)際自然語言處理應(yīng)用中,隨著對(duì)問題的精確度要求越來越高,處理數(shù)據(jù)規(guī)模會(huì)越來越大,從而會(huì)導(dǎo)致計(jì)算文本差異性算法的運(yùn)算時(shí)間復(fù)雜度急劇增加。因此,如何降低計(jì)算文本差異性算法的運(yùn)算時(shí)間復(fù)雜度,提高文本差異性算法的計(jì)算性能,是現(xiàn)今急需解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種文本差異性的計(jì)算方法及裝置,以通過將問題二次分解,降低文本差異性算法的運(yùn)算時(shí)間復(fù)雜度,提高文本差異性算法的計(jì)算性能。
為解決上述技術(shù)問題,本發(fā)明提供一種文本差異性的計(jì)算方法,包括:
將待比較的多個(gè)字符串進(jìn)行分解,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)子字符串;
將多個(gè)所述字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比,獲取一個(gè)或多個(gè)差異子字符串組;其中,所述差異子字符串組為多個(gè)所述字符串各自對(duì)應(yīng)的一個(gè)相互存在差異的子字符串的組合;
將所述差異子字符串組通過文本差異性算法進(jìn)行差異計(jì)算,獲取每個(gè)所述差異子字符串組對(duì)應(yīng)的子差異值;
將全部所述子差異值求和,獲取多個(gè)所述字符串的差異值。
可選的,所述將多個(gè)所述字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比,獲取一個(gè)或多個(gè)差異子字符串組,包括:
通過Hash函數(shù),將每個(gè)所述字符串對(duì)應(yīng)的多個(gè)所述子字符串進(jìn)行Hash計(jì)算,生成Hash表;其中,所述Hash表包括對(duì)應(yīng)的所述字符串中每個(gè)所述子字符串對(duì)應(yīng)的Hash值和每個(gè)所述Hash值與對(duì)應(yīng)的所述子字符串的位置的對(duì)映關(guān)系;
通過多個(gè)所述字符串各自對(duì)應(yīng)的所述Hash表的對(duì)比,獲取一個(gè)或多個(gè)所述差異子字符串組;其中,所述差異子字符串組包括多個(gè)所述字符串各自對(duì)應(yīng)的位置相同但所述Hash值不同的一個(gè)所述子字符串。
可選的,所述將待比較的多個(gè)字符串進(jìn)行分解,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)子字符串,包括:
將每個(gè)所述字符串以逗號(hào)或句號(hào)進(jìn)行分割,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)所述子字符串。
可選的,所述將每個(gè)所述字符串以逗號(hào)或句號(hào)進(jìn)行分割,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)所述子字符串之前,還包括:
判斷每個(gè)所述字符串是否達(dá)到預(yù)設(shè)長度;
若是,則執(zhí)行所述將每個(gè)所述字符串以逗號(hào)或句號(hào)進(jìn)行分割,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)所述子字符串的步驟;
若否,則將每個(gè)所述字符串通過文本差異性算法進(jìn)行差異計(jì)算,獲取每個(gè)所述字符串對(duì)應(yīng)的所述差異值。
可選的,所述將所述差異子字符串組通過文本差異性算法進(jìn)行差異計(jì)算,獲取每個(gè)所述差異子字符串組對(duì)應(yīng)的子差異值,包括:
將所述差異子字符串組通過編輯距離算法進(jìn)行編輯距離計(jì)算,獲取每個(gè)所述差異子字符串組對(duì)應(yīng)的子編輯距離。
此外,本發(fā)明還提供了一種文本差異性的計(jì)算裝置,包括:
分解模塊,用于將待比較的多個(gè)字符串進(jìn)行分解,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)子字符串;
對(duì)比模塊,用于將多個(gè)所述字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比,獲取一個(gè)或多個(gè)差異子字符串組;其中,所述差異子字符串組為多個(gè)所述字符串各自對(duì)應(yīng)的一個(gè)相互存在差異的子字符串的組合;
計(jì)算模塊,用于將所述差異子字符串組通過文本差異性算法進(jìn)行差異計(jì)算,獲取每個(gè)所述差異子字符串組對(duì)應(yīng)的子差異值;
統(tǒng)計(jì)模塊,用于將全部所述子差異值求和,獲取多個(gè)所述字符串的差異值。
可選的,所述對(duì)比模塊,包括:
Hash表生成子模塊,用于通過Hash函數(shù),將每個(gè)所述字符串對(duì)應(yīng)的多個(gè)所述子字符串進(jìn)行Hash計(jì)算,生成Hash表;其中,所述Hash表包括對(duì)應(yīng)的所述字符串中每個(gè)所述子字符串對(duì)應(yīng)的Hash值和每個(gè)所述Hash值與對(duì)應(yīng)的所述子字符串的位置的對(duì)映關(guān)系;
Hash表對(duì)比子模塊,用于通過多個(gè)所述字符串各自對(duì)應(yīng)的所述Hash表的對(duì)比,獲取一個(gè)或多個(gè)所述差異子字符串組;其中,所述差異子字符串組包括多個(gè)所述字符串各自對(duì)應(yīng)的位置相同但所述Hash值不同的一個(gè)所述子字符串。
可選的,所述分解模塊,包括:
符號(hào)分割子模塊,用于將每個(gè)所述字符串以逗號(hào)或句號(hào)進(jìn)行分割,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)所述子字符串。
可選的,該裝置還包括:
判斷模塊,用于判斷每個(gè)所述字符串是否達(dá)到預(yù)設(shè)長度;若是,則向所述符號(hào)分割子模塊發(fā)送分割信號(hào);若否,則向字符串計(jì)算模塊發(fā)送啟動(dòng)信號(hào);
字符串計(jì)算模塊,用于將每個(gè)所述字符串通過文本差異性算法進(jìn)行差異計(jì)算,獲取每個(gè)所述字符串對(duì)應(yīng)的所述差異值。
可選的,所述計(jì)算模塊,包括:
編輯距離算法計(jì)算子模塊,用于將所述差異子字符串組通過編輯距離算法進(jìn)行編輯距離計(jì)算,獲取每個(gè)所述差異子字符串組對(duì)應(yīng)的子編輯距離。
本發(fā)明所提供的一種文本差異性的計(jì)算方法,包括:將待比較的多個(gè)字符串進(jìn)行分解,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)子字符串;將多個(gè)所述字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比,獲取一個(gè)或多個(gè)差異子字符串組;其中,所述差異子字符串組為多個(gè)所述字符串各自對(duì)應(yīng)的一個(gè)相互存在差異的子字符串的組合;將所述差異子字符串組通過文本差異性算法進(jìn)行差異計(jì)算,獲取每個(gè)所述差異子字符串組對(duì)應(yīng)的子差異值;將全部所述子差異值求和,獲取多個(gè)所述字符串的差異值;
可見,本發(fā)明通過將待比較的多個(gè)字符串進(jìn)行分解,可以將長的字符串分解成多個(gè)子字符串,通過將多個(gè)所述字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比,可以提取出帶比較的字符串中存在差異的子字符串,再將這些子字符串運(yùn)用現(xiàn)有的文本差異性算法進(jìn)行差異計(jì)算和統(tǒng)計(jì),避免了對(duì)復(fù)雜的長的字符串的直接計(jì)算操作,降低了文本差異性算法的運(yùn)算時(shí)間復(fù)雜度,提高了文本差異性算法的計(jì)算性能,提升了用戶體驗(yàn)。此外,本發(fā)明還提供了一種文本差異性的計(jì)算裝置,同樣具有上述有益效果。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為現(xiàn)有技術(shù)中編輯距離算法的實(shí)現(xiàn)示意圖;
圖2為本發(fā)明實(shí)施例所提供的一種文本差異性的計(jì)算方法的流程圖;
圖3為本發(fā)明實(shí)施例所提供的另一種文本差異性的計(jì)算方法的流程圖;
圖4為本發(fā)明實(shí)施例所提供的另一種文本差異性的計(jì)算方法的實(shí)現(xiàn)示意圖;
圖5為本發(fā)明實(shí)施例所提供的一種文本差異性的計(jì)算裝置的結(jié)構(gòu)圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參考圖2,圖2為本發(fā)明實(shí)施例所提供的一種文本差異性的計(jì)算方法的流程圖。該方法可以包括:
步驟101:將待比較的多個(gè)字符串進(jìn)行分解,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)子字符串。
其中,待比較的多個(gè)字符串可以為用戶輸入的想要進(jìn)行差異比較的文檔,進(jìn)行比較的文檔可以是兩個(gè),如比較兩個(gè)文檔的差異性,也可以為兩個(gè)以上個(gè),如比較三個(gè)或四個(gè)文檔的差異性,對(duì)于字符串的數(shù)量,可以與用戶輸入的字符串的數(shù)量對(duì)應(yīng),本實(shí)施例對(duì)此不受任何限制。將待比較的字符串進(jìn)行分解的方式,可以通過字符串中的符號(hào)進(jìn)行分割的方式,如將待比較的兩個(gè)文檔以文中逗號(hào)或句號(hào)分割成每個(gè)文檔各自對(duì)應(yīng)的多句話,也可以通過其他方式,只要可以將字符串分解成可以用于比較差異性的多個(gè)子字符串,對(duì)于具體的分解方式,本實(shí)施例不做任何限制。
需要說明的是,本步驟之前還可以包括獲取輸入的待比較的字符串的步驟,對(duì)于輸入待比較字符串的方式,可以為用戶手動(dòng)輸入,也可以為有線或無線的文檔傳輸,本實(shí)施例不做任何限制;對(duì)于獲取的待比較的字符串的具體內(nèi)容,可以為單獨(dú)的字符串,也可以為字符串和每個(gè)字符串對(duì)應(yīng)的長度,可以根據(jù)接下來所使用的文本差異性算法獲取對(duì)應(yīng)的所需信息,如使用文本差異性算法中的過編輯距離算法需要獲取字符串對(duì)應(yīng)的長度,則可以直接獲取輸入的待比較的字符串和每個(gè)字符串對(duì)應(yīng)的長度,本實(shí)施例對(duì)此同樣不受任何限制。
可以理解的是,在本步驟之前還可以包括對(duì)輸入的待比較的字符串的判斷步驟,如判斷字符串的長度是否達(dá)到預(yù)設(shè)長度;若是,則說明該字符串長度過長,需要通過本步驟進(jìn)行分解;若否,則說明該字符串長度不長,運(yùn)算復(fù)雜度不高,可以直接使用現(xiàn)有的文本差異性算法進(jìn)行差異值的計(jì)算。本實(shí)施例對(duì)此不受任何限制。
步驟102:將多個(gè)所述字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比,獲取一個(gè)或多個(gè)差異子字符串組;其中,所述差異子字符串組為多個(gè)所述字符串各自對(duì)應(yīng)的一個(gè)相互存在差異的子字符串的組合。
可以理解的是,將多個(gè)字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比,可以為將帶比較的字符串被分解成的子字符串與其他字符串分解成的子字符串相同的位置進(jìn)行對(duì)比,如兩個(gè)帶比較的字符串各自均被分解成前后兩個(gè)子字符串,則可以對(duì)兩個(gè)前子字符串和兩個(gè)后子字符串各自進(jìn)行對(duì)比,若兩個(gè)前子字符串對(duì)比存在差異,則這兩個(gè)前子字符串為一個(gè)差異子字符串組。
需要說明的是,對(duì)于將多個(gè)字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比的具體對(duì)比方式,可以通過先Hash映射,再從Hash表匹配獲取差異子字符串組的方式,也可以通過其他的對(duì)比方式,只要可以獲取差異子字符串組,也就是存在差異的子字符串,對(duì)于具體的對(duì)比方式,本實(shí)施例不做任何限制。
步驟103:將所述差異子字符串組通過文本差異性算法進(jìn)行差異計(jì)算,獲取每個(gè)所述差異子字符串組對(duì)應(yīng)的子差異值。
其中,將差異子字符串組通過文本差異性算法進(jìn)行差異計(jì)算,可以為將存在差異的一組或多組子字符串通過文本差異性算法進(jìn)行差異計(jì)算,獲取每組存在差異的子字符串的子差異值。
可以理解的是,對(duì)于文本差異性算法進(jìn)行差異計(jì)算的具體方式,可以通過現(xiàn)有的文本差異性算法,如編輯距離算法(LD),最長公共子序列(LCS),Needleman-Wunsch算法等,也可以通過其他方法,只要可以獲取通過文本差異性算法獲取每組存在差異的子字符串的子差異值,對(duì)于文本差異性算法的具體方式,本實(shí)施例不做任何限制。
需要說明的是,子差異值可以為差異子字符串組通過文本差異性算法進(jìn)行差異計(jì)算,獲取的計(jì)算結(jié)果,如差異子字符串組通過編輯距離算法進(jìn)行編輯距離計(jì)算,可以獲取子編輯距離。
步驟104:將全部所述子差異值求和,獲取多個(gè)所述字符串的差異值。
可以理解的是,本步驟的目的是將每個(gè)差異子字符串組的子差異值相加獲取多個(gè)待比較的字符串的差異值。若多個(gè)待比較的字符串只存在一個(gè)差異子字符串組,則該差異子字符串組的子差異值就可以為多個(gè)待比較的字符串的差異值。
本實(shí)施例中,本發(fā)明實(shí)施例通過將待比較的多個(gè)字符串進(jìn)行分解,可以將長的字符串分解成多個(gè)子字符串,通過將多個(gè)所述字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比,可以提取出帶比較的字符串中存在差異的子字符串,再將這些子字符串運(yùn)用現(xiàn)有的文本差異性算法進(jìn)行差異計(jì)算和統(tǒng)計(jì),避免了對(duì)復(fù)雜的長的字符串的直接計(jì)算操作,降低了文本差異性算法的運(yùn)算時(shí)間復(fù)雜度,提高了文本差異性算法的計(jì)算性能,提升了用戶體驗(yàn)。
請(qǐng)參考圖3和圖4,圖3為本發(fā)明實(shí)施例所提供的另一種文本差異性的計(jì)算方法的流程圖;圖4為本發(fā)明實(shí)施例所提供的另一種文本差異性的計(jì)算方法的實(shí)現(xiàn)示意圖。該方法可以包括:
步驟201:獲取輸入的兩個(gè)待比較的字符串和對(duì)應(yīng)的長度。
其中,本實(shí)施例是以計(jì)算兩個(gè)字符串的文本差異性的方式進(jìn)行的展示,也可以通過類似的方式計(jì)算兩個(gè)以上個(gè)字符串的文本差異性,本實(shí)施例對(duì)此不受任何限制。
可以理解的是,因?yàn)楸緦?shí)施例所提供的方法是通過編輯距離算法計(jì)算差異子字符串組的子編輯距離,也就是兩個(gè)字符串被分解的后存在差異的一對(duì)子字符串的差異,所以需要兩個(gè)待比較的字符串對(duì)應(yīng)的長度,若通過其他文本差異性算法進(jìn)行差異計(jì)算,則可以不輸入待比較的字符串對(duì)應(yīng)的長度或輸入其他數(shù)據(jù),本實(shí)施例對(duì)此不受任何限制。對(duì)于兩個(gè)待比較的字符串對(duì)應(yīng)的長度的獲取方式,可以是與兩個(gè)待比較的字符串共同輸入的數(shù)據(jù),也可以是輸入兩個(gè)待比較的字符串后,由本實(shí)施例所提供的方法計(jì)算出來的數(shù)據(jù),只要可以獲取兩個(gè)待比較的字符串和對(duì)應(yīng)的長度,對(duì)于具體的獲取方式,本實(shí)施例不做任何限制。
步驟202:將每個(gè)字符串以逗號(hào)或句號(hào)進(jìn)行分割,獲取每個(gè)字符串對(duì)應(yīng)的多個(gè)子字符串。
可以理解的是,將每個(gè)字符串以逗號(hào)或句號(hào)進(jìn)行分割,可以為將獲取的兩個(gè)待比較的字符串也就是兩個(gè)文檔以各自文檔中存在的逗號(hào)或句號(hào)進(jìn)行分割,獲取文檔中的每一句話作為一個(gè)子字符串。
步驟203:通過Hash函數(shù),將每個(gè)字符串對(duì)應(yīng)的多個(gè)子字符串進(jìn)行Hash計(jì)算,生成Hash表。
其中,Hash表包括對(duì)應(yīng)的字符串中每個(gè)子字符串對(duì)應(yīng)的Hash值和每個(gè)Hash值與對(duì)應(yīng)的子字符串的位置的對(duì)映關(guān)系。
可以理解的是,每個(gè)字符串分解成的多個(gè)子字符串均可以通過Hash函數(shù)進(jìn)行Hash計(jì)算,然后計(jì)算出每個(gè)子字符串各自對(duì)應(yīng)的Hash值,然后將每個(gè)字符串對(duì)應(yīng)的多個(gè)子字符串的Hash值,生成一個(gè)Hash表。每個(gè)字符串均可以生成一個(gè)Hash表,兩個(gè)待比較的字符串可以生成一對(duì)Hash表,每個(gè)Hash表中保存著對(duì)應(yīng)的待比較的字符串的全部子字符串對(duì)應(yīng)的Hash值以及每個(gè)Hash值對(duì)應(yīng)的子字符串在字符串中的位置。Hash值可以存儲(chǔ)在以數(shù)組形式存儲(chǔ)的Hash表中,也可以存儲(chǔ)在其他存儲(chǔ)方式中,如Hash值存儲(chǔ)在數(shù)列中,本實(shí)施例對(duì)此不受任何限制。
需要說明的是,對(duì)于具體的Hash表的生成方式可以為每個(gè)待比較的字符串均生成一個(gè)Hash表,也可以為全部待比較的字符串生成一個(gè)Hash表,只要可以保證接下來的步驟可以通過生成Hash表比較并獲取差異子字符串組,對(duì)于具體的Hash表的生成方式,本實(shí)施例不做任何限制。
步驟204:通過兩個(gè)字符串各自對(duì)應(yīng)的Hash表的對(duì)比,獲取一個(gè)或多個(gè)差異子字符串組。
其中,差異子字符串組包括兩個(gè)字符串各自對(duì)應(yīng)的位置相同但Hash值不同的一個(gè)子字符串,也就是一對(duì)存在差異的子字符串。
可以理解的是,本實(shí)施例所提供的方法通過Hash計(jì)算實(shí)現(xiàn)字符串與整數(shù)(Hash值)的映射,減少內(nèi)存占用和數(shù)據(jù)傳輸,并且通過Hash值匹配提取其中有效信息(即存在差異的子字符串),也就是說通過兩個(gè)Hash表中相同位置的Hash值的比較,可以比較字符串中相同位置的子字符串,從而找出Hash值不同也就是一對(duì)或多對(duì)存在差異的子字符串,即一個(gè)或多個(gè)差異子字符串組。
需要說明的是,只要可以獲取一個(gè)或多個(gè)差異子字符串組,對(duì)于具體的對(duì)比方式,如通過對(duì)比每個(gè)字符串均生成的一個(gè)Hash表中的Hash值,或通過對(duì)比全部字符串生成的一個(gè)Hash表中的Hash值,以及通過對(duì)比其他存儲(chǔ)方式中的Hash值,本實(shí)施不做任何限制。
步驟205:將差異子字符串組通過編輯距離算法進(jìn)行編輯距離計(jì)算,獲取每個(gè)差異子字符串組對(duì)應(yīng)的子編輯距離。
可以理解的是,本步驟的目的是通過如圖1所示現(xiàn)有的編輯距離算法對(duì)差異子字符串組進(jìn)行編輯距離計(jì)算,對(duì)于具體的編輯距離計(jì)算過程,可以通過如圖1所示的方式,如需要差異子字符串組中一對(duì)子字符串的長度,可以通過計(jì)算或再次輸入的方式,本實(shí)施例對(duì)此不受任何限制。
步驟206:將全部子編輯距離求和,獲取兩個(gè)待比較的字符串的編輯距離。
需要說明的是,本實(shí)施例所提供的方法的具體實(shí)現(xiàn)如圖4所示,將全部子編輯距離求和可以為將一對(duì)待比較的字符串中全部差異子字符串組計(jì)算出的編輯距離相加,獲取一對(duì)待比較的字符串的編輯距離,也就是這兩個(gè)字符串的差異性。
本實(shí)施例中,本發(fā)明實(shí)施例通過Hash函數(shù),將每個(gè)字符串對(duì)應(yīng)的多個(gè)子字符串進(jìn)行Hash計(jì)算,生成Hash表,可以實(shí)現(xiàn)字符串與整數(shù)(Hash值)的映射,減少內(nèi)存占用和數(shù)據(jù)傳輸,通過兩個(gè)字符串各自對(duì)應(yīng)的Hash表的對(duì)比,獲取一個(gè)或多個(gè)差異子字符串組,可以根據(jù)Hash值匹配提取Hash表中有效信息(即存在差異的子字符串),再將這些子字符串運(yùn)用現(xiàn)有的編輯距離算法進(jìn)行編輯距離計(jì)算和統(tǒng)計(jì),避免了對(duì)復(fù)雜的長的字符串的直接計(jì)算操作,降低了文本差異性算法的運(yùn)算時(shí)間復(fù)雜度,提高了文本差異性算法的計(jì)算性能,提升了用戶體驗(yàn)。
請(qǐng)參考圖5,圖5為本發(fā)明實(shí)施例所提供的一種文本差異性的計(jì)算裝置的結(jié)構(gòu)圖。該方法可以包括:
分解模塊100,用于將待比較的多個(gè)字符串進(jìn)行分解,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)子字符串;
對(duì)比模塊200,用于將多個(gè)所述字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比,獲取一個(gè)或多個(gè)差異子字符串組;其中,所述差異子字符串組為多個(gè)所述字符串各自對(duì)應(yīng)的一個(gè)相互存在差異的子字符串的組合;
計(jì)算模塊300,用于將所述差異子字符串組通過文本差異性算法進(jìn)行差異計(jì)算,獲取每個(gè)所述差異子字符串組對(duì)應(yīng)的子差異值;
統(tǒng)計(jì)模塊400,用于將全部所述子差異值求和,獲取多個(gè)所述字符串的差異值。
可選的,所述對(duì)比模塊200,包括:
Hash表生成子模塊,用于通過Hash函數(shù),將每個(gè)所述字符串對(duì)應(yīng)的多個(gè)所述子字符串進(jìn)行Hash計(jì)算,生成Hash表;其中,所述Hash表包括對(duì)應(yīng)的所述字符串中每個(gè)所述子字符串對(duì)應(yīng)的Hash值和每個(gè)所述Hash值與對(duì)應(yīng)的所述子字符串的位置的對(duì)映關(guān)系;
Hash表對(duì)比子模塊,用于通過多個(gè)所述字符串各自對(duì)應(yīng)的所述Hash表的對(duì)比,獲取一個(gè)或多個(gè)所述差異子字符串組;其中,所述差異子字符串組包括多個(gè)所述字符串各自對(duì)應(yīng)的位置相同但所述Hash值不同的一個(gè)所述子字符串。
可選的,所述分解模塊100,包括:
符號(hào)分割子模塊,用于將每個(gè)所述字符串以逗號(hào)或句號(hào)進(jìn)行分割,獲取每個(gè)所述字符串對(duì)應(yīng)的多個(gè)所述子字符串。
可選的,該裝置還包括:
判斷模塊,用于判斷每個(gè)所述字符串是否達(dá)到預(yù)設(shè)長度;若是,則向所述符號(hào)分割子模塊發(fā)送分割信號(hào);若否,則向字符串計(jì)算模塊發(fā)送啟動(dòng)信號(hào);
字符串計(jì)算模塊,用于將每個(gè)所述字符串通過文本差異性算法進(jìn)行差異計(jì)算,獲取每個(gè)所述字符串對(duì)應(yīng)的所述差異值。
可選的,所述計(jì)算模塊300,包括:
編輯距離算法計(jì)算子模塊,用于將所述差異子字符串組通過編輯距離算法進(jìn)行編輯距離計(jì)算,獲取每個(gè)所述差異子字符串組對(duì)應(yīng)的子編輯距離。
本實(shí)施例中,本發(fā)明實(shí)施例通過分解模塊100將待比較的多個(gè)字符串進(jìn)行分解,可以將長的字符串分解成多個(gè)子字符串,通過對(duì)比模塊200將多個(gè)所述字符串各自對(duì)應(yīng)的多個(gè)子字符串進(jìn)行對(duì)比,可以提取出帶比較的字符串中存在差異的子字符串,再將這些子字符串運(yùn)用現(xiàn)有的文本差異性算法進(jìn)行差異計(jì)算和統(tǒng)計(jì),避免了對(duì)復(fù)雜的長的字符串的直接計(jì)算操作,降低了文本差異性算法的運(yùn)算時(shí)間復(fù)雜度,提高了文本差異性算法的計(jì)算性能,提升了用戶體驗(yàn)。
說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
以上對(duì)本發(fā)明所提供的文本差異性的計(jì)算方法及裝置進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。