亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > python自然語言處理之字典樹知識總結(jié)

python自然語言處理之字典樹知識總結(jié)

熱門標(biāo)簽:上海機(jī)器人外呼系統(tǒng)哪家好 蓋州市地圖標(biāo)注 浙江電銷卡外呼系統(tǒng)好用嗎 315電話機(jī)器人廣告 地圖制圖標(biāo)注位置改變是移位嗎 地圖標(biāo)注微信發(fā)送位置不顯示 地圖標(biāo)注的意義點(diǎn) 房產(chǎn)電銷外呼系統(tǒng) 南京銷售外呼系統(tǒng)軟件

一、什么是字典樹

在自然語言處理中,字符串集合常用字典樹存儲,這是一種字符串上的樹形數(shù)據(jù)結(jié)構(gòu)。字典樹中每條邊都對應(yīng)一個字,從根節(jié)點(diǎn)往下的路徑構(gòu)成一個個字符串。

字典樹并不直接在節(jié)點(diǎn)上存儲字符串,而是將詞語視作根節(jié)點(diǎn)到某節(jié)點(diǎn)之間的一條路徑,并在終點(diǎn)節(jié)點(diǎn)上做個標(biāo)記(表明到該節(jié)點(diǎn)就結(jié)束了)。

要查詢一個單詞,指需要順著這條路徑從根節(jié)點(diǎn)往下走。如果能走到標(biāo)記的節(jié)點(diǎn),則說明該字符串在集合中,否則說明不在。下圖為字典樹結(jié)構(gòu)示例:

如上圖所示,每條路徑都是一個詞匯,且沒有子節(jié)點(diǎn)就可以判定該條路徑結(jié)尾了。具體可以映射為下標(biāo)所示:

詞語 路徑
歡迎 0-1-2
北大 0-3-8
北京城 0-3-4-5
北京大學(xué) 0-3-4-6-7

至于字典樹的實(shí)現(xiàn),相信只要認(rèn)真學(xué)過數(shù)據(jù)結(jié)構(gòu)的讀者,都能手到擒來,這里不在贅述。因?yàn)镠anLP庫已經(jīng)提供了多種字典樹。

二、DoubleArrayTrieSegment

認(rèn)識DoubleArrayTrieSegment類之前,我們需要了解雙數(shù)組字典書的概念。

我們都知道,在樹中遍歷查找之時(shí),我們一般用二分查找,假如某一個樹的節(jié)點(diǎn)有N個節(jié)點(diǎn),那么其復(fù)雜度就為O(logN),這樣查找起來一條一條樹的遍歷會非常的慢,所以就誕生了雙數(shù)組字典樹的概念。

雙數(shù)組字典樹(DAT)是一種狀態(tài)轉(zhuǎn)移復(fù)雜度為常數(shù)的數(shù)據(jù)結(jié)構(gòu)。那么什么是狀態(tài)呢?從確定有限狀態(tài)自動機(jī)(DFA)的角度來講,每個節(jié)點(diǎn)都是一個狀態(tài),狀態(tài)表示當(dāng)前已查詢到的前綴。

從父節(jié)點(diǎn)到子節(jié)點(diǎn)的移動過程可以看作一次狀態(tài)轉(zhuǎn)移。在按照某個字符進(jìn)行狀態(tài)轉(zhuǎn)移前,我們會向父節(jié)點(diǎn)詢問該字符與子節(jié)點(diǎn)的映射關(guān)系(也就是一條路徑一條邊)。如果父節(jié)點(diǎn)有滿足條件的邊,則狀態(tài)轉(zhuǎn)移到子節(jié)點(diǎn);否則立即失敗,查詢不到。當(dāng)成功完成了全部轉(zhuǎn)移時(shí),我們就拿到了最后一個狀態(tài),詢問該狀態(tài)是否時(shí)最終狀態(tài)。如果是,就查詢到該詞匯,否則該單詞不存在于字典中。

比如我們查詢首圖的“北京大學(xué)”,狀態(tài)開始為0,查詢到北時(shí)狀態(tài)為3,查詢到京時(shí)狀態(tài)為4,查詢到大時(shí)狀態(tài)為6,查詢到學(xué)時(shí)狀態(tài)為7,最后判斷7是否還有子節(jié)點(diǎn),如果沒有匹配該詞匯,如果有該詞匯不在字典中。比如查詢“北京大”就不在詞匯中。

而雙數(shù)組字典由base與check兩個數(shù)組組成,其中base數(shù)組即節(jié)點(diǎn),也是狀態(tài),分為空閑狀態(tài)與占用狀態(tài),check數(shù)組為每個元素表示某個狀態(tài)的前驅(qū)狀態(tài)。具體公式如下:

base[s] + c = t
check[t] =  s

base樹組中的s代表當(dāng)前狀態(tài)的下標(biāo),t代表轉(zhuǎn)移狀態(tài)的下標(biāo),c代表輸入字符的數(shù)值

base[s] + c = t //表示一次狀態(tài)轉(zhuǎn)移

由于轉(zhuǎn)移后狀態(tài)下標(biāo)為t,且父子關(guān)系是唯一的,所以可通過檢驗(yàn)當(dāng)前元素的前驅(qū)狀態(tài)確定轉(zhuǎn)移是否成功

check[t] = s //檢驗(yàn)狀態(tài)轉(zhuǎn)移是否成功

這種算法相對于傳統(tǒng)的Trie樹二分查找的優(yōu)點(diǎn)是,只需要一個加法一次比較即可完成一次狀態(tài)轉(zhuǎn)移,只花費(fèi)了常數(shù)時(shí)間,下面給出了雙數(shù)組Tree樹的原理圖(注意觀察狀態(tài)轉(zhuǎn)移的過程)

了解了雙數(shù)組字典樹的原理,我們就可以來學(xué)習(xí)DoubleArrayTrieSegment,DoubleArrayTrieSegment分詞器是對DAT(雙數(shù)組字典樹)最長匹配的封裝,默認(rèn)加載hanlp.properites中CoreDictionaryPath指定的詞典。

對應(yīng)的python代碼如下:

if __name__ == "__main__":
    HanLP.Config.ShowTermNature=False#分詞結(jié)果不顯示詞性
    segment=DoubleArrayTrieSegment()
    print(segment.seg("在來到這個世界之前,一起都很Happy"))

運(yùn)行之后,得到如下圖所示的結(jié)果:

當(dāng)然,這是HanLP提供給我們的默認(rèn)詞典,如果想加載自己的詞典,或者前文提到的其他開源的詞典庫,可以替換代碼如下所示:

DoubleArrayTrieSegment(["詞典1","詞典2"])

但是不知道讀者注意到了沒有,上面的英文happy,它給我們拆成了單個的字母,但其實(shí)這是一個整體,如果這里替換成數(shù)字,也是一個一個數(shù)字,那么如何不讓其拆開呢?

我們來看一段代碼:

if __name__ == "__main__":
    HanLP.Config.ShowTermNature=True
    segment=DoubleArrayTrieSegment()
    segment.enablePartOfSpeechTagging(True)
    print(segment.seg("在來到這個世界之前,一起都很Happy"))

enablePartOfSpeechTagging函數(shù)的意思是激活數(shù)字與英文識別,同時(shí)我們把ShowTermNature改為True,觀察其輸出的結(jié)果:

這里與我們前面自己寫的算法輸出一模一樣,有分開的詞匯以及詞匯的標(biāo)記屬性。

三、AhoCorasickDoubleArrayTrieSegment

雖然雙數(shù)組字典樹能遍歷大量的數(shù)據(jù),但是如果數(shù)據(jù)比較長的,這些長的詞匯又比較多的話,比如“受命于天,既壽永昌”算一個詞匯,那么其處理起來時(shí)間復(fù)雜度依舊非常耗時(shí)。所以,我們就需要使用ACDAT進(jìn)行遍歷。

這里博主不講解其原理,因?yàn)樘L篇幅有限,感興趣的可以專門學(xué)習(xí)樹結(jié)構(gòu)的處理。讀者只需要知道其原理,什么時(shí)候用雙數(shù)組遍歷,什么時(shí)候用ACDAT遍歷就行。而HanLP封裝的ACDAT的實(shí)現(xiàn)類是AhoCorasickDoubleArrayTrieSegment。

下面,我們來實(shí)現(xiàn)AhoCorasickDoubleArrayTrieSegment,代碼如下:

if __name__ == "__main__":
    HanLP.Config.ShowTermNature = False
    segment = JClass("com.hankcs.hanlp.seg.Other.AhoCorasickDoubleArrayTrieSegment")()
    print(segment.seg("在來到這個世界之前,一起都很井然有序"))

運(yùn)行之后,效果如下:

需要注意的是,python的HanLP雖然提供了AhoCorasickDoubleArrayTrieSegment類,但是讀者可以試試,替換后運(yùn)行會報(bào)錯,控制臺會提示該類沒有seg函數(shù)。而HanLP庫又是基于Java開發(fā)的,所以在實(shí)際的項(xiàng)目中,盡量使用JClass加載Java類進(jìn)行實(shí)戰(zhàn),因?yàn)閜ython的HanLP庫運(yùn)行速度比Java慢一倍,但python的好處是相對簡單,可以調(diào)用其他程序的類,所以速度這方面只要python引用Java類進(jìn)行調(diào)用,其實(shí)速度一樣。

到此這篇關(guān)于python自然語言處理之字典樹知識總結(jié)的文章就介紹到這了,更多相關(guān)python字典樹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python自然語言處理之切分算法詳解
  • Python自然語言處理 NLTK 庫用法入門教程【經(jīng)典】
  • Python自然語言處理之詞干,詞形與最大匹配算法代碼詳解
  • Python編程使用NLTK進(jìn)行自然語言處理詳解
  • 用Python進(jìn)行一些簡單的自然語言處理的教程
  • python第三方庫visdom的使用入門教程
  • Python自動安裝第三方庫的小技巧(pip使用詳解)
  • Python文件名的匹配之clob庫
  • Python的文本常量與字符串模板之string庫
  • python爬蟲請求庫httpx和parsel解析庫的使用測評
  • 能讓你輕松的實(shí)現(xiàn)自然語言處理的5個Python庫

標(biāo)簽:臨汾 金華 日照 陽泉 赤峰 貴州 雙鴨山 克拉瑪依

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python自然語言處理之字典樹知識總結(jié)》,本文關(guān)鍵詞  python,自然語言,處理,之,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python自然語言處理之字典樹知識總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于python自然語言處理之字典樹知識總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    99久久精品国产高清一区二区| 亚洲 国产精品 日韩| 九九精品久久久久久久久| 91麻豆国产级在线| 黄视频网站在线看| 国产伦精品一区三区视频| 午夜激情视频在线播放| 精品久久久久久中文字幕一区| 麻豆网站在线免费观看| 九九久久99综合一区二区| 精品国产三级a| 亚洲爆爽| 韩国妈妈的朋友在线播放| 久久福利影视| 成人高清免费| 国产成人女人在线视频观看| 欧美电影免费| 国产一区二区精品久久91| 国产不卡在线播放| 亚洲 欧美 成人日韩| 久草免费在线视频| 天天色色色| 日本在线www| 日本伦理片网站| 青青久热| 国产国语对白一级毛片| 国产视频网站在线观看| 欧美日本国产| 天天做人人爱夜夜爽2020| 久久国产影视免费精品| 国产伦久视频免费观看视频| 国产视频在线免费观看| 国产网站免费在线观看| 999精品视频在线| 欧美另类videosbestsex| 久久99青青久久99久久| 麻豆系列国产剧在线观看| 久草免费在线视频| 国产高清在线精品一区二区| 99热精品在线| 亚洲 欧美 成人日韩| 久久国产精品自线拍免费| 欧美激情一区二区三区在线播放| 九九九国产| 国产一区二区高清视频| 国产国语对白一级毛片| 成人av在线播放| 99色精品| 青青青草影院 | 在线观看成人网 | 欧美日本韩国| 黄视频网站在线观看| 久久精品免视看国产明星| 日本免费看视频| 国产精品12| 可以免费看毛片的网站| 精品国产一区二区三区免费| 国产91精品一区二区| 日韩欧美一二三区| 免费毛片播放| 美女免费精品高清毛片在线视| 成人在免费观看视频国产| 免费一级片在线观看| 九九热国产视频| 国产国语在线播放视频| 久久国产精品只做精品| 九九久久99| 国产一区二区精品久| 精品视频在线观看免费| 成人影院一区二区三区| 夜夜操网| 国产精品自拍一区| 久久精品店| 日韩欧美一二三区| 欧美大片a一级毛片视频| 亚洲www美色| 四虎久久精品国产| 美女被草网站| 久久精品成人一区二区三区| 欧美激情中文字幕一区二区| 国产亚洲精品aaa大片| 精品视频在线观看一区二区 | 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产福利免费观看| 成人免费高清视频| 精品国产一区二区三区久久久蜜臀| 国产视频久久久久| 欧美激情一区二区三区在线| 二级特黄绝大片免费视频大片| 国产精品自拍在线观看| 国产91素人搭讪系列天堂| 国产成人精品综合| 免费国产在线观看| 九九国产| 精品国产香蕉在线播出| 国产91视频网| 九九国产| 精品国产三级a| 欧美国产日韩精品| 日本在线不卡免费视频一区| 久久国产精品自线拍免费| 色综合久久天天综合观看| 99久久精品国产高清一区二区 | 国产成人啪精品视频免费软件| 亚洲精品永久一区| 天天色色网| 国产精品免费久久| 久久99这里只有精品国产| 91麻豆国产| 久久99爰这里有精品国产| 国产福利免费观看| 国产一区二区高清视频| 成人免费福利片在线观看| 黄视频网站在线看| 美女免费精品高清毛片在线视| 青青久久精品| 日韩专区亚洲综合久久| 国产综合91天堂亚洲国产| 91麻豆爱豆果冻天美星空| 午夜在线观看视频免费 成人| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 美女被草网站| 日韩在线观看视频黄| 亚洲天堂免费观看| 国产激情视频在线观看| 黄色短视屏| 欧美18性精品| 成人高清护士在线播放| 国产成人精品在线| 九九精品在线播放| 精品在线观看一区| a级毛片免费观看网站| 天天做人人爱夜夜爽2020| 青青久热| 精品国产亚洲一区二区三区| 九九精品久久| 精品国产一区二区三区久久久狼 | 国产一区二区精品尤物| 欧美爱色| 一级片免费在线观看视频| 日本在线www| 四虎影视精品永久免费网站| 天天做日日爱夜夜爽| 国产91精品系列在线观看| 欧美a级大片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产a视频| 日韩中文字幕在线亚洲一区| 天天色色网| 四虎影视久久久免费| 美女免费精品高清毛片在线视| 免费的黄视频| 精品国产三级a| 国产精品1024永久免费视频| 成人高清免费| 九九国产| 国产视频久久久久| 亚洲精品久久玖玖玖玖| 色综合久久天天综线观看| 日日夜夜婷婷| 青青久久精品| 日韩在线观看免费完整版视频| 欧美激情影院| 久久国产精品自线拍免费| 美女免费毛片| 亚洲天堂免费观看| 青青久久精品| 国产不卡高清在线观看视频| 精品国产亚洲一区二区三区| 欧美日本免费| 免费毛片播放| 99久久精品费精品国产一区二区| 国产精品12| 成人在激情在线视频| 日韩一级黄色| 国产视频久久久| 91麻豆精品国产自产在线观看一区| 日本乱中文字幕系列| 久久久久久久久综合影视网| 精品视频在线看| 亚洲精品影院久久久久久| 欧美电影免费看大全| 日日日夜夜操| 黄视频网站在线观看| 99色精品| 韩国毛片免费| 日本在线不卡免费视频一区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产高清在线精品一区二区| 麻豆系列国产剧在线观看| 国产国语对白一级毛片| 91麻豆国产级在线| 人人干人人插| 成人免费高清视频| 日本免费区| 国产伦精品一区二区三区无广告| 欧美激情一区二区三区在线播放| 99色精品| 日韩中文字幕在线观看视频|