欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 多模式字符串搜索 Aho-Corasick詳解

 更新時間:2025年01月19日 11:22:32   作者:言之。  
Aho-Corasick 算法是一種用于精確或近似多模式字符串搜索的高效算法,本文給大家介紹Python 多模式字符串搜索 Aho-Corasick的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧

ahocorasick.Automaton 是 Python 中 pyahocorasick 庫提供的一個類,用于實現(xiàn) Aho-Corasick 自動機。Aho-Corasick 算法是一種用于精確或近似多模式字符串搜索的高效算法。

通過 pip install pyahocorasick 安裝 pyahocorasick 庫。
并且,該模塊是用 C 編寫的,安裝時需要有 C 編譯器來編譯本機 Cpython 擴展。

使用 ahocorasick.Automaton 類的一般步驟如下:

  • 導(dǎo)入 ahocorasick 庫:import ahocorasick。
  • 創(chuàng)建 Automaton 對象:a = ahocorasick.Automaton() 。
  • (可選)將字符串鍵及其關(guān)聯(lián)值添加到自動機,可作為 trie 樹使用。例如:
for idx, key in enumerate('heherhersshe'.split()):
    a.add_word(key, (idx, key))

調(diào)用 make_automaton() 方法完成并創(chuàng)建 Aho-Corasick 自動機:a.make_automaton() 。

創(chuàng)建好自動機后,可以使用以下主要方法進行搜索操作:

  • iter(string, (start, (end))):使用提供的輸入字符串執(zhí)行 Aho-Corasick 搜索過程。它返回一個迭代器,為在字符串中找到的鍵返回元組 (end_index, value),其中 end_index 是匹配結(jié)束的索引位置,value 是與匹配的鍵相關(guān)聯(lián)的值。
  • iter_long(string, (start, (end))):返回一個搜索最長、非重疊匹配的迭代器(automaton_search_iter_long 類的對象)。

以下是一個使用 ahocorasick.Automaton 進行多模式字符串搜索的示例代碼:

import ahocorasick as ah
a = ah.automaton()
with open('userdict.txt', 'r', encoding='utf-8') as f2:  # 加載文件
    keywords = (a.strip() for a in f2.readlines())  # 加載關(guān)鍵詞
    # 利用 add_word 方法將關(guān)鍵詞加入自動機!
    for x in range(len(keywords)):
        a.add_word(keywords[x], (x, keywords[x]))  # 第二個參數(shù)為自定義的返回值
# 創(chuàng)建 aho-corasick 自動機
a.make_automaton()
with open('jianjie.txt', 'r', encoding='utf-8') as f:  # 打開要檢索文檔
    jianjie = f.read()  # 讀取正文(如果太多,可以分斷加載,分段檢索)
# 開始查找,該方法匹配最長的字符串
for item in a.iter_long(jianjie):
    print(item)
print('-' * 20)
# 開始查找,該方法匹配所有字符串
for item in a.iter(jianjie):
    print(item)

在上述示例中,首先創(chuàng)建了一個自動機對象 a,然后從文件中讀取關(guān)鍵詞,并使用 add_word 方法將關(guān)鍵詞添加到自動機中。接著調(diào)用 make_automaton 方法創(chuàng)建 Aho-Corasick 自動機。最后,通過打開另一個文件讀取要搜索的正文,并使用 iter_longiter 方法進行匹配查找,并打印出匹配的結(jié)果。

Aho-Corasick 自動機的優(yōu)點包括能夠在一次運行中找到給定集合所有字符串,適用于多模式字符串匹配的場景,例如網(wǎng)絡(luò)內(nèi)容過濾、版權(quán)檢測、病毒掃描等,在自然語言處理中查找特定詞匯或模式,以及生物信息學(xué)中在 DNA 或蛋白質(zhì)序列分析中尋找特定的序列模式等方面都有應(yīng)用。

到此這篇關(guān)于Python 多模式字符串搜索 Aho-Corasick詳解的文章就介紹到這了,更多相關(guān)Python 多模式字符串搜索內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論