亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【串和序列處理 1】PAT Tree 子串匹配結(jié)構(gòu)

系統(tǒng) 1798 0

Patricia Tree? 簡稱PAT tree。 它是 trie 結(jié)構(gòu)的一種特殊形式。是目前信息檢索領(lǐng)域應(yīng)用十分成功的索引方
法,它是1992年由Connel根據(jù)《PATRICIA——Patrical Algorithm to Retrieve Information Coded in Alphanumeric》算法發(fā)展起來的。

?

PAT tree 在 字符串子串匹配 上有這非常優(yōu)異的表現(xiàn),這使得它經(jīng)常成為一種高效的全文檢索算法,在自然語言處理領(lǐng)域也有廣泛的應(yīng)用。其算法中最突出的特點就是 采用半無限長字串(semi-infinite string 簡稱 sistring) 作為字符串的查找結(jié)構(gòu)。

?

采用半無限長字串(sistring): 一種特殊的子串信息存儲方式。

比如一個字符串CUHK。它的子串有C、CU、CUH、CUHK、U、UH、UHK、H、HK、K十種。如果有n個字符的串,就會有n(n+1)/2種子串,其中最長的子串長度為n。因此我們不得不開辟 n(n+1)/2個長度為n的數(shù)組來存儲它們,那么存儲的空間復(fù)雜度將達到驚人的O(n^3)級別。

?

但是我們發(fā)現(xiàn)這樣一個特點:

??????????? CUHK ——? 完全可以表示 C、CU、CUH、CUHK

??????????? UHK?? ——? 完全可以表示 U、UH、UHK

??????????? HK???? ——? 完全可以表示 H、HK、

??????????? K?????? ——? 完全可以表示 K

這樣我們就得到了4個sistring: CUHK、UHK、HK和K。

?

PAT tree的存儲結(jié)構(gòu)

如果直接用單個字符作為存儲結(jié)點,勢必構(gòu)造出一棵多叉樹(如果是中文字符的話,那就完蛋了)。檢索起來將會相當不便。事實上,PAT tree是一棵壓縮存儲的二叉樹結(jié)構(gòu)。現(xiàn)在我們用“CUHK”來構(gòu)造出這樣一棵PAT tree 。

?

開始先介紹一下PAT tree的結(jié)點結(jié)構(gòu)(看了后面的過程就再來理解這些概念)

* 內(nèi)部結(jié)點:用橢圓形表示,用來存儲不同的bit位在整個完整bit sequence中的位置。

* 外部節(jié)點(葉子結(jié)點): 用方形表示,用來記錄sistring的首字符在完整sistring中的開始位置(字符索引)和sistring出現(xiàn)的頻次。

* 左指針:如果 待存儲的sistring在 內(nèi)部結(jié)點所存儲的bit位置上的數(shù)據(jù) 是0,則將這個sistring存儲在該結(jié)點的左子樹中。

* 右指針:若數(shù)據(jù)是1,則存儲在右子樹中。

?

(1) 將所有sistring的字符轉(zhuǎn)化成1 bytes的ASCII碼值,用二進制位來表示。形成一個bit sequence pattern(沒有的空字符我們用0來填充)。

? ? ? ? ???????????????? sistring?????????????????????????? bit sequence

?完整sistring? -> ? CUHK ? ? ?? 010 00011 ? 01010101 ? 01001000 ? 01001011?? <- 完整bit sequence

? ? ? ? ????????????????? UHK 0 ? ? ?? 010 10101 ? 01001000 ? 01001011 ? 00000000 ?????????????????????????

????????????????????????? HK 00 ? ? ? ? 01001000 ? 01001011 ? 00000000?? 00000000

????????????????????????? K 000 ? ? ? ? 01001011 ? 00000000?? 00000000?? 00000000

?

(2) 從第一個bit開始我們發(fā)現(xiàn)所有sistring的前3個bit位都相同010,那么相同的這些0/1串對于匹配來說就毫無意義了,因此我們接下來發(fā)現(xiàn)第4個bit開始有所不同了。UHK 的第4個bit是1,而CUHK、HK、K的第4個bit是0。則先構(gòu)造一個內(nèi)部結(jié)點iNode.bitSize=4(第4個bit),然后將UHK的字符索引 cIndex=2(UHK的開始字符U在完整的CUHK的第2位置上)構(gòu)造成葉子結(jié)點插入到iNode的左孩子上,而CUHK、HK、K放在iNode右子樹中。(如下圖2)

?

(3) 遞歸執(zhí)行第2步,將CUHK、HK、K進一步插入到PAT tree中。流程如下圖所示。所有sistring都插入以后結(jié)束。

注意:既然 PAT tree 是二叉查找樹,那么一定要滿足二叉查找樹的特點。所以,內(nèi)部結(jié)點中的 bit 位就需要滿足,左孩子的 bit < 結(jié)點 bit < 右孩子的 bit 位。

?

PAT tree的檢索過程

?

利用PAT tree可以實現(xiàn)對語料的快速檢索,檢索過程就是根據(jù)查詢字串在PAT tree中從根結(jié)點尋找路徑的過程。當比較完查詢字串所有位置后,搜索路徑達到PAT tree的某一結(jié)點。

?

????? 若該結(jié)點為葉子結(jié)點,則判斷查詢字串是否為葉子結(jié)點所指的半無限長字串的前綴,如果判斷為真,則查詢字串在語料中出現(xiàn)的頻次即為葉子結(jié)點中記錄的頻次;否則,該查詢字串在語料中不存在。

?

????? 若該結(jié)點為內(nèi)部結(jié)點,則判斷查詢字串是否為該結(jié)點所轄子樹中任一葉子結(jié)點所指的半無限長字串的前綴。如果判斷為真,該子樹中所有葉子結(jié)點記錄的頻次之和即為查詢字串的出現(xiàn)頻次。否則,查詢字串在語料中不存在。

?

????? 這樣,通過PAT tree可以檢索原文中任意長度的字串及其出現(xiàn)頻次,所以,PAT tree也是可變長統(tǒng)計語言模型優(yōu)良的檢索結(jié)構(gòu)。

?

?

例如:要查找 string= CU (bit sequence=010 00 0 1 1 01010101 ) 是不是在 CUHK 中。

(1) ?? 根據(jù)“ CUHK ”的 PAT tree 結(jié)構(gòu) ( 如上圖 ) ,根結(jié)點 r bit position=4 ,那么查找 bit sequence 的第 4 bit=0 。然后查找 R 的左孩子 rc

(2) ??? rc bit position=5 ,在 bit sequence 的第 5 bit=0 。則查找 rc 的左孩子 rcc

(3) ?? rcc= CUHK 已經(jīng)是葉子結(jié)點了,則確定一下 CU 是不是 CUHK 的前綴即可。

?


PAT tree 的效率

?

????? 特點: PAT tree查找的時間復(fù)雜度和樹的深度有關(guān),由于樹的構(gòu)造取決于不同bit位上0,1的分布。因此PAT tree有點像 二叉查找樹 ,最壞情況下是單支樹(如上圖例子),此時的時間復(fù)雜度是O(n-1),n為字符串的長度。最好情況下是 平衡二叉樹 結(jié)構(gòu),時間復(fù)雜度是O(log2(N))。另外,作為壓縮的二叉查找樹,其存儲的空間代價大大減少了。

?

?

?

PAT tree的實際應(yīng)用

?

?????? PAT tree在子串匹配上有很好的效率,這一點和Suffix Tree(后綴樹),KMP算法的優(yōu)點相同。因此PAT tree在信息檢索和自然語言處理領(lǐng)域是非常常用的工具。比如:關(guān)鍵字提取,新詞發(fā)現(xiàn)等NLP領(lǐng)域經(jīng)常使用這種結(jié)構(gòu)。

?

?

?

【串和序列處理 1】PAT Tree 子串匹配結(jié)構(gòu)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久综合97色综合网 | 日本一区二区三区久久 | 欧美高清免费精品国产自 | 免费爱爱小视频 | 黄色在线视频网站 | 在线欧美69v免费观看视频 | 久一视频在线 | 97视频在线观看免费播放 | 综合色图| 久久做| 亚洲午夜久久久久国产 | 国产精品高清视亚洲乱码 | 亚洲日本中文字幕 | 国产成人一区二区三区视频免费蜜 | 奇米影视久久 | 欧美日韩亚洲综合久久久 | 欧美高清不卡午夜精品免费视频 | 成人国产第一区在线观看 | 五月婷婷视频在线观看 | 九九毛片| 西西大胆实体啪啪色哟哟 | 97se综合| 巨骚综合网| 亚洲一区小说区中文字幕 | 青草久久网 | 日韩在线第三页 | 国产a v高清一区二区三区 | 国产精品不卡视频 | 久久国产精品偷 | 免费成人毛片 | 在线高清一级欧美精品 | 男女一级毛片免费播放 | 国产欧美网站 | 成人免费视频网 | 亚洲日本va中文字幕在线不卡 | 99视频精品全部在线播放 | 日日操夜夜操天天操 | 日本高清不卡在线观看 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 久久99热不卡精品免费观看 | 欧美一区二区在线观看 |