国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

改進(jìn)的SNM 中文語(yǔ)義重復(fù)記錄檢測(cè)算法

2021-09-05 05:56:16滿穆永豪王貴友于再富
關(guān)鍵詞:關(guān)鍵字語(yǔ)句閾值

袁 滿穆永豪王貴友于再富

(1.東北石油大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,黑龍江 大慶 163318;2.黑龍江省大慶市第十采油廠肇東分公司 信息中心,黑龍江大慶 163000)

0 引 言

隨著大數(shù)據(jù)時(shí)代的到來(lái),企業(yè)由IT時(shí)代進(jìn)入DT時(shí)代,數(shù)據(jù)在企業(yè)發(fā)展中將扮演越來(lái)越重要的角色[1]。然而隨著大數(shù)據(jù)的爆炸式增長(zhǎng),劣質(zhì)數(shù)據(jù)也隨之而來(lái),導(dǎo)致數(shù)據(jù)質(zhì)量低劣,極大降低了數(shù)據(jù)的可用性[2]。這些低劣“臟數(shù)據(jù)”的產(chǎn)生使這些數(shù)據(jù)質(zhì)量問(wèn)題會(huì)直接導(dǎo)致計(jì)算偏差,造成難以想象的后果[3]。其中,數(shù)據(jù)庫(kù)中重復(fù)記錄占用了大量的空間,直接影響數(shù)據(jù)庫(kù)的使用效率[4],企業(yè)需要利用大量的數(shù)據(jù)進(jìn)行某些結(jié)果的預(yù)測(cè),但由于相似重復(fù)記錄的存在,導(dǎo)致預(yù)測(cè)結(jié)果產(chǎn)生偏差,給企業(yè)決策造成很大困難。因此,如何消除數(shù)據(jù)冗余,保證數(shù)據(jù)庫(kù)中高質(zhì)量數(shù)據(jù)的使用成為人們面臨的巨大挑戰(zhàn)。

關(guān)于重復(fù)記錄的定義,Monge[5]提出將同一實(shí)體對(duì)象對(duì)應(yīng)的多條記錄稱(chēng)之為相似重復(fù)記錄。Lillibridge等[6]提出數(shù)據(jù)庫(kù)中存在這樣的兩條記錄R1、R2,其內(nèi)容相同或相似,且都對(duì)應(yīng)著同一個(gè)現(xiàn)實(shí)實(shí)體,則記錄對(duì)〈R1,R2〉互為相似重復(fù)記錄。李軍[7]提出在同一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)中,如果出現(xiàn)兩條或兩條以上的記錄,它們之間出現(xiàn)足夠多的相同或相似的屬性值,即可認(rèn)定其為相似重復(fù)記錄。潘瑋等[8]認(rèn)為重復(fù)記錄是指原始數(shù)據(jù)中同一文獻(xiàn)產(chǎn)生的多條相同記錄,其特點(diǎn)是各記錄的所有字段均相同。陳亮等[9]認(rèn)為相似重復(fù)記錄檢測(cè)就是識(shí)別一對(duì)是否表示為真實(shí)世界中的同一個(gè)實(shí)體。目前對(duì)于數(shù)據(jù)庫(kù)中存在的英文重復(fù)數(shù)據(jù)記錄清洗已經(jīng)形成一套完整的體系,可以利用多種算法對(duì)其進(jìn)行檢測(cè)和清洗,但對(duì)中文重復(fù)記錄清洗的研究在國(guó)內(nèi)還處于初步階段,并且對(duì)中文的重復(fù)記錄數(shù)據(jù)清洗的算法積累還比較欠缺。造成這種現(xiàn)象主要原因是由于中英文本身表達(dá)、語(yǔ)法和語(yǔ)義等存在的差異和國(guó)情差距,所以對(duì)中文數(shù)據(jù)清洗的研究成果報(bào)道很少[10]。因此筆者在SNM(Sorted-Neighborhood Method)算法的基礎(chǔ)上對(duì)中文的重復(fù)記錄檢測(cè)進(jìn)行了更深一步的研究。SNM算法在英文重復(fù)記錄清洗中的高效性主要是因?yàn)橛⑽牡恼Z(yǔ)義和時(shí)態(tài)是基于單詞[11]。但在中文中重復(fù)記錄數(shù)據(jù)主要是以中文詞語(yǔ)為單位,與此同時(shí)中文單詞多會(huì)出現(xiàn)同一個(gè)實(shí)體以不同形式進(jìn)行表達(dá),這也就成為了中英文數(shù)據(jù)清洗的本質(zhì)原因。為此筆者在傳統(tǒng)的SNM算法基礎(chǔ)上對(duì)其加以改進(jìn),引入《同義詞詞林?jǐn)U展版》標(biāo)準(zhǔn)詞匯集對(duì)中文字段的詞語(yǔ)進(jìn)行相似度計(jì)算。同時(shí)引入Jieba分詞對(duì)語(yǔ)句進(jìn)行分詞處理,以保證句子的語(yǔ)義有效性,進(jìn)而利用余弦相似度計(jì)算語(yǔ)句相似度,提高中文重復(fù)記錄檢測(cè)的準(zhǔn)確性。

1 相似重復(fù)記錄檢測(cè)相關(guān)技術(shù)研究

1.1 相似重復(fù)記錄檢測(cè)相關(guān)算法研究

目前對(duì)英文相似重復(fù)記錄檢測(cè)的算法已經(jīng)有了很多成果,例如多趟鄰近排序算法,PSNM(Partitionbased Sorted-Neighborhood Method)算法,聚類(lèi)算法,優(yōu)先隊(duì)列算法等。Monge等[12]在鄰近排序算法(SNM)的基礎(chǔ)上提出了多趟鄰近排序算法,該算法的基本思想是對(duì)SNM算法獨(dú)立的執(zhí)行多次,然后再選取不同關(guān)鍵字對(duì)每次的檢測(cè)進(jìn)行排序,通過(guò)本次排序使沒(méi)能排在同一個(gè)窗口的相似重復(fù)記錄能重新選取關(guān)鍵字再次匹配檢測(cè),最后進(jìn)行合并刪除重復(fù)記錄數(shù)據(jù)。進(jìn)而達(dá)到全部記錄相似重復(fù)檢測(cè)的目的。PSNM算法通過(guò)將整體的數(shù)據(jù)集劃分成小數(shù)據(jù)集,并對(duì)每個(gè)小數(shù)據(jù)集內(nèi)部采用等級(jí)綜合評(píng)價(jià)法為屬性設(shè)置權(quán)重,以權(quán)重為關(guān)鍵字,最后采用滑動(dòng)窗口的方式進(jìn)行檢測(cè)[13]。劉齊銳[14]通過(guò)利用聚類(lèi)算法進(jìn)行相似重復(fù)記錄檢測(cè),因?yàn)榫垲?lèi)算法能通過(guò)無(wú)監(jiān)督學(xué)習(xí)和迭代計(jì)算將相似重復(fù)記錄數(shù)據(jù)放在同一個(gè)集合中。這使同類(lèi)的數(shù)據(jù)相似度比較高,不同類(lèi)間的數(shù)據(jù)差異就比較大。優(yōu)先隊(duì)列算法將隊(duì)列中的數(shù)據(jù)元素作為比對(duì)記錄,然后按照順序?qū)?shù)據(jù)庫(kù)中的記錄進(jìn)行匹配,如果記錄為隊(duì)列中的元素,則對(duì)兩條記錄進(jìn)行比較,檢測(cè)出重復(fù)的記錄,否則將該記錄加入一個(gè)新的簇,并進(jìn)入優(yōu)先隊(duì)列,且具有最高優(yōu)先級(jí)[15],但單趟優(yōu)先隊(duì)列算法容易漏掉一些數(shù)據(jù)。綜上所述,這幾種常見(jiàn)的相似重復(fù)記錄檢測(cè)算法都各有其適用的范圍,具體優(yōu)勢(shì)和不足如表1所示。

表1 重復(fù)記錄清洗算法優(yōu)缺點(diǎn)比較Tab.1 Comparison of advantages and disadvantages of duplicate record cleaning algorithms

1.2 詞語(yǔ)及句子相似度度量研究

《同義詞詞林》是由梅家駒等[16]編篆而成,這本詞典最初版本中包含了不止一個(gè)詞語(yǔ)的同義詞,同時(shí)也包含了一定數(shù)量的相關(guān)詞。之后由哈工大信息檢索研究室利用眾多詞語(yǔ)相關(guān)資源,更新修改后并發(fā)布《哈工大信息檢索研究室同義詞詞林?jǐn)U展版》。同義詞詞林?jǐn)U展版共收錄詞語(yǔ)7萬(wàn)多條,這些詞語(yǔ)被分為12個(gè)大類(lèi),94個(gè)中類(lèi),1 428個(gè)小類(lèi),小類(lèi)下方進(jìn)一步劃分為詞群和原子詞群兩級(jí)[17]。這使同義詞詞林?jǐn)U展版具有5層結(jié)構(gòu),如圖1所示。隨著級(jí)別的遞增,同一行的詞語(yǔ)語(yǔ)義更加相近,相關(guān)性也越來(lái)越強(qiáng)。

圖1 同義詞詞林5層結(jié)構(gòu)Fig.1 The five-tier structure of synonyms cilin

《同義詞詞林?jǐn)U展版》編碼方式是由5層編碼實(shí)現(xiàn)的,編碼規(guī)則如表2所示,第1層主要用大寫(xiě)字母表示;第2層用小寫(xiě)的英文字母表示;第3層則是用二位的十進(jìn)制整數(shù)表示;第4層使用大寫(xiě)英文字母表示;第5層用二位十進(jìn)制整數(shù)表示。例如:“Aa05B01=別人 旁人 他人 人家”,“Aa05B01=”是編碼,“別人 旁人 他人 人家”是這個(gè)類(lèi)的詞語(yǔ)。其中第8個(gè)的編碼有3種,“=”代表的是“相等”,屬于同義詞;“#”代表的是“不等”,屬于相關(guān)詞語(yǔ);“@”代表的是“獨(dú)立”,既沒(méi)有相關(guān)詞也沒(méi)有同義詞。

表2 詞語(yǔ)編碼表Tab.2 The table of code of word

Jieba分詞是目前應(yīng)用比較廣泛的一種分詞工具,是基于Python的一個(gè)第三方分詞庫(kù)。Jieba分詞采用動(dòng)態(tài)規(guī)劃查找最大概率路徑,找出基于詞頻的最大切分組合;對(duì)于未登錄詞,采用了基于漢字成詞能力的HMM(Hidden Markov Model)模型,使用了Viterbi算法。Jieba分詞主要包含3種分詞模式:全模式、精確模式和搜索引擎模式。全模式是盡可能將語(yǔ)句屬性中的詞語(yǔ)全部切分;精確模式主要是對(duì)語(yǔ)句進(jìn)行準(zhǔn)確切分詞;搜索引擎模式,是在精確模式基礎(chǔ)上對(duì)長(zhǎng)詞進(jìn)行深度切分,從而得到比精確模式更多的詞。

余弦相似度是目前比較主流的一種文本語(yǔ)義相似度計(jì)算方法,通過(guò)將詞組進(jìn)行分詞,然后將分出的詞組全部列出,將所出現(xiàn)的詞組進(jìn)行詞頻統(tǒng)計(jì),通過(guò)統(tǒng)計(jì)出的詞頻對(duì)詞組進(jìn)行向量化處理,最后利用余弦相似度計(jì)算公式將兩個(gè)詞組進(jìn)行相似度計(jì)算,最后得出兩個(gè)詞組之間的文本相似度。

2 SNM算法

SNM算法是目前數(shù)據(jù)清洗各類(lèi)算法中針對(duì)英文字段相似重復(fù)記錄應(yīng)用比較成熟的算法之一,其中主要包括如下3個(gè)步驟。

1)排序關(guān)鍵字的選取。首先從數(shù)據(jù)表中提取關(guān)鍵的屬性或?qū)傩缘慕M合對(duì)記錄進(jìn)行劃分,并且其劃分時(shí)具有很強(qiáng)的區(qū)分度[18]。

2)關(guān)鍵字排序。按照選取的關(guān)鍵字對(duì)數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)進(jìn)行排序,將數(shù)據(jù)庫(kù)中不同位置但關(guān)鍵字相同的相似重復(fù)的記錄分配到相鄰的位置[19]。

3)重復(fù)記錄檢測(cè)及合并,為數(shù)據(jù)集設(shè)定一個(gè)大小可滑動(dòng)的窗口[7]。將最后一個(gè)滑入窗口的記錄數(shù)據(jù)與窗口內(nèi)的其他記錄數(shù)據(jù)進(jìn)行比較,判定兩條記錄是否完全相同。如果相同則將兩條記錄判定為相似重復(fù)記錄,并將這兩條記錄進(jìn)行合并;如果不同,就將窗口向后滑動(dòng)?;瑒?dòng)窗口內(nèi)的記錄是采用先進(jìn)先出的方式進(jìn)行組織,比較后的數(shù)據(jù)則滑向下一條記錄的位置,再進(jìn)行新的檢測(cè),直至滑動(dòng)最后一個(gè)數(shù)據(jù)記錄。算法圖如圖2所示。

圖2 SNM算法示意圖Fig.2 Schematic diagram of SNM algorithm

SNM算法極大地提高了英文字段的匹配效率,另外,采用滑動(dòng)窗口極大地減少了記錄比較的次數(shù),提高了比較速度,縮短了匹配時(shí)間[19]。但也有如下缺陷。1)關(guān)鍵字的選取。因?yàn)殛P(guān)鍵字是直接影響整個(gè)數(shù)據(jù)集的排序結(jié)果,關(guān)鍵字選取的好壞不僅影響檢測(cè)效率,而且對(duì)相似性檢測(cè)的精度也有很大影響,如果選取不當(dāng),還有可能漏掉一些重復(fù)記錄[7]。2)對(duì)滑動(dòng)窗口大小的選擇。當(dāng)滑動(dòng)窗口過(guò)大時(shí),會(huì)導(dǎo)致檢測(cè)效率過(guò)低,但如果滑動(dòng)窗口選擇較小,則容易導(dǎo)致在匹配過(guò)程中漏掉一些重復(fù)記錄,因此對(duì)確定的數(shù)據(jù)集,很難選擇合適的窗口進(jìn)行檢測(cè)。3)因?yàn)榛瑒?dòng)窗口內(nèi)部記錄比較采用笛卡爾乘積的方式進(jìn)行字段比較,極大地增加了記錄的比對(duì)時(shí)間,導(dǎo)致檢測(cè)時(shí)間過(guò)長(zhǎng)。

3 系統(tǒng)架構(gòu)和改進(jìn)的SNM算法

3.1 改進(jìn)的中文重復(fù)記錄檢測(cè)模型

針對(duì)上述SNM算法的不足,筆者提出基于改進(jìn)的SNM算法中文重復(fù)記錄檢測(cè)模型,該模型主要包含讀取數(shù)據(jù),數(shù)據(jù)預(yù)處理,數(shù)據(jù)檢測(cè)以及結(jié)果統(tǒng)計(jì)4部分。具體模型整體架構(gòu)如圖3所示。

圖3 改進(jìn)的中文重復(fù)記錄檢測(cè)模型Fig.3 Improved Chinese duplicate record detection model

數(shù)據(jù)讀取。將獲取的數(shù)據(jù)存放入相應(yīng)運(yùn)行的數(shù)據(jù)庫(kù)中。

數(shù)據(jù)預(yù)處理。首先是對(duì)關(guān)鍵字的處理,由于在SNM算法中關(guān)鍵字的選定對(duì)SNM算法排序的影響很大,因此在同一關(guān)鍵字記錄滑入窗口前,對(duì)同一屬性的關(guān)鍵字進(jìn)行排序處理,以增強(qiáng)數(shù)據(jù)庫(kù)中數(shù)據(jù)排序結(jié)果的單一性[20]。然后將同一關(guān)鍵字記錄滑入檢測(cè)的窗口。

根據(jù)輸入的數(shù)據(jù)記錄進(jìn)行屬性值判斷。如果是詞語(yǔ)屬性,判斷該詞是否在《同義詞詞林?jǐn)U展版》中,如果在,則使用同義詞詞林算法對(duì)兩組詞語(yǔ)進(jìn)行相似度檢測(cè);如果不在,則使用Jaccard算法進(jìn)行檢測(cè)。如果為語(yǔ)句屬性值則利用余弦相似度對(duì)其進(jìn)行檢測(cè)。

對(duì)測(cè)試的語(yǔ)句相似度和詞語(yǔ)相似度取平均值,根據(jù)設(shè)定閾值判斷兩條記錄是否屬于重復(fù)記錄。如果匹配度超過(guò)設(shè)定閾值則將這兩條記錄進(jìn)行合并;如果兩條記錄相似度小于閾值則判定為非重復(fù)記錄,同時(shí)將檢測(cè)后的單一數(shù)據(jù)集也放入結(jié)果集。

3.2 相關(guān)定義

改進(jìn)后的算法具體處理過(guò)程是先將記錄按照屬性創(chuàng)建關(guān)鍵字,然后對(duì)關(guān)鍵字排序,把關(guān)鍵字相同的記錄聚集在一起,然后對(duì)比窗口內(nèi)部記錄,通過(guò)判斷比較后的兩條記錄之間的相似度值,從而找出相似重復(fù)記錄。為了方便描述改進(jìn)的算法,給出如下定義:

定義1 設(shè)數(shù)據(jù)集R={r1,r2,…,r L},L為記錄的總數(shù),Ri為數(shù)據(jù)記錄集R的第i個(gè)記錄,1≤i≤L。

定義2 Sim(Ri,Rj)為記錄Ri和Rj的相似程度即就是兩個(gè)記錄之間的相似度,1≤i≤L,1≤j≤L,如果兩條記錄完全相同,則相似度為1。

定義3 設(shè)Ssim1為余弦相似度計(jì)算結(jié)果,其中X i與Y i為兩條語(yǔ)句分詞后向量化的結(jié)果向量。

定義4 設(shè)Ssim2為Jaccard算法計(jì)算結(jié)果,其中A和B分別為兩組詞語(yǔ)向量化后的結(jié)果向量。

定義5 設(shè)置閾值U,如果相似度大于U,則說(shuō)明Ri和Rj相似重復(fù)。

定義6 設(shè)Q為查全率。設(shè)T為測(cè)試數(shù)據(jù)集中人為插入的相似重復(fù)記錄的實(shí)際條數(shù),C為實(shí)際檢測(cè)出正確的相似重復(fù)記錄條數(shù),則有Q=C/T。Q的值域?yàn)閇0,1],求得的Q值越大,則表明檢測(cè)算法的查全性能越高[7]。

定義7 設(shè)P為查準(zhǔn)率。設(shè)F為檢測(cè)算法檢測(cè)出正確的相似重復(fù)記錄條數(shù),則P=F/C,P越高,算法判別的準(zhǔn)確性越高。

3.3 SNM改進(jìn)算法

根據(jù)上述對(duì)SNM算法的描述得知要判斷兩條記錄是否為相似重復(fù)記錄,就是通過(guò)判定兩條記錄之間的相似度是否超過(guò)設(shè)定的閾值U。在改進(jìn)的過(guò)程中,將主鍵作為關(guān)鍵字對(duì)整個(gè)加載的記錄進(jìn)行排序。下面對(duì)整個(gè)改進(jìn)后的SNM算法步驟進(jìn)行詳述。

1)將所有將要進(jìn)行檢測(cè)的數(shù)據(jù)記錄進(jìn)行導(dǎo)入。

2)排序關(guān)鍵字選取,對(duì)數(shù)據(jù)庫(kù)中全部數(shù)據(jù)記錄進(jìn)行排序,排序后所有關(guān)鍵字相同的屬性記錄基本上能聚類(lèi)到一起,以便后期在窗口內(nèi)對(duì)排序后的鄰近記錄進(jìn)行檢測(cè)。

3)將數(shù)據(jù)記錄放入伸縮滑動(dòng)窗口中進(jìn)行檢測(cè),每次滑動(dòng)記錄都是將關(guān)鍵字相同的記錄滑動(dòng)進(jìn)入同一窗口進(jìn)行遍歷檢測(cè)。

4)在記錄比對(duì)過(guò)程中,利用《同義詞詞林》對(duì)相應(yīng)的詞語(yǔ)屬性進(jìn)行相似度比對(duì),計(jì)算出屬性中存在于同義詞詞林中的詞組相似度值,若不存在于同義詞詞林中則將新的詞組利用Jaccard算法進(jìn)行計(jì)算相似度值。對(duì)屬性為語(yǔ)句的記錄,首先,利用Jieba分詞對(duì)語(yǔ)句屬性值進(jìn)行分詞處理,將得到的分詞進(jìn)行詞頻統(tǒng)計(jì),通過(guò)統(tǒng)計(jì)結(jié)果對(duì)兩條語(yǔ)句記錄進(jìn)行向量化,最后利用余弦相似度對(duì)語(yǔ)句屬性進(jìn)行相似度計(jì)算得出兩條記錄相似度。

5)設(shè)定具體的閾值U,如果兩條記錄的相似度等于1,則判定兩條記錄為重復(fù)記錄;如果不等于1,則將兩條記錄進(jìn)行細(xì)化比對(duì)。若匹配度超過(guò)設(shè)定閾值則將這兩條記錄判定為重復(fù);若兩條記錄相似度小于閾值U則判定為非重復(fù)記錄,將兩條記錄放入設(shè)定的總數(shù)據(jù)集,同時(shí)將檢測(cè)后的單一數(shù)據(jù)集也放入總數(shù)據(jù)集。

算法1 讀取數(shù)據(jù)集Data,并對(duì)數(shù)據(jù)集進(jìn)行排序。利用余弦相似度算法,詞林相似度算法,Jaccard算法分別對(duì)語(yǔ)句和詞語(yǔ)進(jìn)行相似度計(jì)算,通過(guò)合并的兩條記錄相似度計(jì)算值判斷兩條記錄是否屬于重復(fù)記錄,最終輸出統(tǒng)計(jì)后的重復(fù)記錄數(shù)據(jù)條數(shù)Count。改進(jìn)的SNM算法偽代碼如下:

Input(Data);

Sort(Data,Key);

SimCount[]=Findsim(Data)∥相同關(guān)鍵字?jǐn)?shù)據(jù)條目數(shù)量數(shù)組

Count←0;∥記錄重復(fù)記錄對(duì)數(shù)

i←0;∥數(shù)據(jù)條數(shù)循環(huán)變量

num←0;∥相同關(guān)鍵字條目變量

Whilei

forj←0 toj

fork←j+1 tok

YX=YuXianSim(Data[2].get(j),Data[2].get(k));

if(CiLin.Include(Data[1].get(j)and CiLin.Include(Data[1].get(k))//判斷兩個(gè)詞組是否在詞林中

else do

JC=JCSim(Data[1].get(j),Data[1].get(k));//采用JC相似度計(jì)算

if((YX+JC)/2>U)

Count++;

end if

end if

end for

Output(count);

end

算法2 余弦相似度算法。輸入兩條語(yǔ)句值,通過(guò)利用Jieba分詞將語(yǔ)句進(jìn)行劃分,統(tǒng)計(jì)兩條語(yǔ)句中所有詞,計(jì)算詞頻,利用余弦相似度公式計(jì)算兩條語(yǔ)句相似度,最終輸出兩條語(yǔ)句相似度值。算法偽代碼如下:

Input(S1,S2);∥讀取兩條語(yǔ)句

S1_cut←Jieba.cut(S1);

S2_cut←Jieba.cut(S2);∥對(duì)兩條語(yǔ)句分詞

All_word←set(S1_cut+S2_cut);∥統(tǒng)計(jì)所有詞

計(jì)算詞頻;

公式1;∥兩條語(yǔ)句計(jì)算相似度;

Output(sim1);

算法3 詞林相似度算法。輸入兩個(gè)詞語(yǔ)屬性值,利用《同義詞詞林》詞匯集查找兩個(gè)詞的編碼,根據(jù)編碼計(jì)算兩個(gè)詞語(yǔ)的相似度。算法偽代碼如下:

Input(X1,X2);∥讀取兩個(gè)詞語(yǔ)

code1←cilin.word[X1];

code2←cilin.word[X1];∥獲取兩個(gè)詞的編碼

獲取兩個(gè)詞的層級(jí)信息;

if(code1.end()==‘@’or code2.end()==‘@’):∥如果連個(gè)詞編碼以@結(jié)尾詞語(yǔ)為獨(dú)立的;

fori←1 toi<9 do

獲取兩個(gè)編碼公共部分;

判斷兩個(gè)編碼層級(jí)是否相同;

計(jì)算兩個(gè)編碼之間相似度;

Output(sim1);

end for

end if

算法4 Jaccard算法。輸入兩個(gè)詞語(yǔ)屬性值似度值,輸出相似度。算法偽代碼如下:

Input(A,B);∥讀取兩個(gè)詞語(yǔ)

corpus←[A,B];∥獲取兩個(gè)詞語(yǔ)編碼

公式2;∥計(jì)算兩個(gè)詞語(yǔ)相似度;

Output(sim);∥輸出兩條詞語(yǔ)相似度

4 實(shí)驗(yàn)結(jié)果驗(yàn)證及分析

實(shí)驗(yàn)基于相同實(shí)驗(yàn)環(huán)境下利用SNM算法以及改進(jìn)后的SNM算法對(duì)同一測(cè)試數(shù)據(jù)集進(jìn)行相似重復(fù)記錄檢測(cè)。實(shí)驗(yàn)數(shù)據(jù)取自某輔導(dǎo)機(jī)構(gòu)部分學(xué)生學(xué)習(xí)信息數(shù)據(jù)集。該數(shù)據(jù)集共有1 083條數(shù)據(jù)記錄,其中插入210條相似重復(fù)記錄數(shù)據(jù)。數(shù)據(jù)表中主要包含姓名,聽(tīng)寫(xiě)詞語(yǔ)以及詞語(yǔ)釋義屬性。通過(guò)人工方式統(tǒng)計(jì)檢測(cè)并利用不同閾值對(duì)兩種算法的影響,以比較兩種算法的查全率和查準(zhǔn)率。

實(shí)驗(yàn)配置:CPU 2.62 GHz,4 GByte內(nèi)存,500 GByte硬盤(pán);操作系統(tǒng):Windows10;軟件:MySQL+Python3.6。

一般對(duì)相似重復(fù)記錄算法的衡量主要依靠查全率和查準(zhǔn)率兩個(gè)性能指標(biāo)。通過(guò)利用不同算法在實(shí)驗(yàn)條件相同的情況下對(duì)同一數(shù)據(jù)集進(jìn)行對(duì)比實(shí)驗(yàn),得到結(jié)果如圖4和圖5所示。圖4給出了在不同閾值的設(shè)定下得到的SNM算法及改進(jìn)后算法的查全率,圖5給出了在不同閾值設(shè)定下得到的SNM算法及改進(jìn)后算法的查準(zhǔn)率。

圖4 查全率結(jié)果分析圖Fig.4 Analysis chart of recall results

圖5 查準(zhǔn)率結(jié)果分析圖Fig.5 Analysis chart of precision results

通過(guò)圖4可以看出,在閾值相同的情況下改進(jìn)后算法的查全率Q高于傳統(tǒng)SNM算法。同時(shí)隨著閾值設(shè)定越高,兩種算法的查全率隨之降低。

通過(guò)圖5可以看出,改進(jìn)后算法的查準(zhǔn)率P雖然在某些情況下可能對(duì)于相似重復(fù)記錄的檢測(cè)比較低,但整體查準(zhǔn)率高于傳統(tǒng)SNM算法的查準(zhǔn)率,這也證明了改進(jìn)后的算法更適合普遍的中文文本數(shù)據(jù)重復(fù)清洗。

5 結(jié) 語(yǔ)

在傳統(tǒng)數(shù)據(jù)庫(kù)中,一般存放著大量的數(shù)據(jù)記錄,很多數(shù)據(jù)由于某些人為原因,使這些記錄構(gòu)成了相似重復(fù)記錄。目前現(xiàn)有的一些算法雖然可以對(duì)部分的英文相似重復(fù)記錄進(jìn)行檢測(cè),但對(duì)中文數(shù)據(jù)的檢測(cè)還是有些欠缺。筆者在已有的SNM算法基礎(chǔ)上融合了《同義詞詞林?jǐn)U展版》以及Python中的Jieba分詞對(duì)其進(jìn)行改進(jìn),并通過(guò)對(duì)最后閾值的調(diào)節(jié)對(duì)同一數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)判定,并得到如下結(jié)論,不同閾值的設(shè)定對(duì)相似重復(fù)記錄有很大影響,如果要得到合適的結(jié)果需要對(duì)閾值的調(diào)節(jié)有一個(gè)合適的調(diào)控度。綜上所述,筆者提出的算法在對(duì)中文數(shù)據(jù)清洗時(shí)獲得了較好的效果。但還存在如下不足,由于數(shù)據(jù)集的數(shù)量較少,可能掩蓋了改進(jìn)算法的某些缺點(diǎn),在遇到較大的數(shù)據(jù)集時(shí)可能執(zhí)行效果較差,這也是未來(lái)工作中要解決的問(wèn)題。

猜你喜歡
關(guān)鍵字語(yǔ)句閾值
履職盡責(zé)求實(shí)效 真抓實(shí)干勇作為——十個(gè)關(guān)鍵字,盤(pán)點(diǎn)江蘇統(tǒng)戰(zhàn)的2021
重點(diǎn):語(yǔ)句銜接
成功避開(kāi)“關(guān)鍵字”
小波閾值去噪在深小孔鉆削聲發(fā)射信號(hào)處理中的應(yīng)用
基于自適應(yīng)閾值和連通域的隧道裂縫提取
精彩語(yǔ)句
比值遙感蝕變信息提取及閾值確定(插圖)
河北遙感(2017年2期)2017-08-07 14:49:00
室內(nèi)表面平均氡析出率閾值探討
如何搞定語(yǔ)句銜接題
基于用戶反饋的關(guān)系數(shù)據(jù)庫(kù)關(guān)鍵字查詢系統(tǒng)
宁德市| 黄梅县| 合江县| 肥城市| 栖霞市| 姜堰市| 花莲县| 镇平县| 永吉县| 景洪市| 无极县| 桐乡市| 神农架林区| 灌云县| 邹平县| 名山县| 工布江达县| 武川县| 忻州市| 靖宇县| 凉山| 蒙山县| 余江县| 勃利县| 皮山县| 南华县| 南平市| 长岛县| 杨浦区| 建水县| 平湖市| 科尔| 平原县| 平山县| 峨眉山市| 平阴县| 特克斯县| 阜宁县| 武汉市| 南康市| 长兴县|