You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Aho-Corasick用于部分文本匹配

Aho-Corasick算法是一种多模式匹配算法,用于在一个文本中查找多个模式串的出现位置。下面是一个使用Aho-Corasick算法实现部分文本匹配的代码示例:

class TrieNode:
    def __init__(self):
        self.children = {}
        self.is_end_of_word = False
        self.failure_link = None
        self.output = []

class AhoCorasick:
    def __init__(self, patterns):
        self.root = TrieNode()
        self.build_trie(patterns)
        self.build_failure_links()

    def build_trie(self, patterns):
        for pattern in patterns:
            current_node = self.root
            for char in pattern:
                if char not in current_node.children:
                    current_node.children[char] = TrieNode()
                current_node = current_node.children[char]
            current_node.is_end_of_word = True
            current_node.output.append(pattern)

    def build_failure_links(self):
        queue = []
        for child_node in self.root.children.values():
            queue.append(child_node)
            child_node.failure_link = self.root
        
        while queue:
            current_node = queue.pop(0)
            for char, child_node in current_node.children.items():
                queue.append(child_node)
                failure_node = current_node.failure_link
                while failure_node and char not in failure_node.children:
                    failure_node = failure_node.failure_link
                
                if failure_node:
                    child_node.failure_link = failure_node.children[char]
                    child_node.output += failure_node.children[char].output

    def match(self, text):
        current_node = self.root
        matches = []

        for i, char in enumerate(text):
            while current_node and char not in current_node.children:
                current_node = current_node.failure_link
            if not current_node:
                current_node = self.root
                continue
            
            current_node = current_node.children[char]
            if current_node.output:
                matches.append((i - len(current_node.output[0]) + 1, current_node.output[0]))
        
        return matches

# 示例用法
patterns = ["ab", "abc", "bc", "c"]
text = "abcdefg"
ac = AhoCorasick(patterns)
matches = ac.match(text)
for match in matches:
    print("Pattern '{}' found at index {}".format(match[1], match[0]))

以上代码实现了一个Aho-Corasick算法的类AhoCorasick,通过调用match方法可以在指定文本中查找多个模式串的出现位置。在示例中,模式串列表为["ab", "abc", "bc", "c"],文本为"abcdefg",输出结果为:

Pattern 'ab' found at index 0
Pattern 'bc' found at index 1
Pattern 'c' found at index 2

这表明在文本中分别找到了模式串"ab""bc""c",它们的起始位置分别为0、1和2。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

AI实时服务案例分享-客服故障检测 | 社区征文

对客服聊天记录表历史数据进行调研后发现,顾客说话的文本长度较短,约90%数据都在5~40个字之间;一组客服聊天记录是由多条数据组成,实时检测要求对每条数据进行检测,但是单条数据存在高噪声,上下文依赖性较强,指代情... AC自动机(Aho-Corasick automaton)是一种著名的多模式匹配算法,即给定多个模式串和一个待匹配主串,判断模式串是否出现在待匹配主串中以及出现的位置和次数。该算法的实现,首先基于模式串构造Trie字典树,作为AC自动...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

Aho-Corasick用于部分文本匹配-优选内容

AI实时服务案例分享-客服故障检测 | 社区征文
对客服聊天记录表历史数据进行调研后发现,顾客说话的文本长度较短,约90%数据都在5~40个字之间;一组客服聊天记录是由多条数据组成,实时检测要求对每条数据进行检测,但是单条数据存在高噪声,上下文依赖性较强,指代情... AC自动机(Aho-Corasick automaton)是一种著名的多模式匹配算法,即给定多个模式串和一个待匹配主串,判断模式串是否出现在待匹配主串中以及出现的位置和次数。该算法的实现,首先基于模式串构造Trie字典树,作为AC自动...

Aho-Corasick用于部分文本匹配-相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询