Java Aho Corasick 自动机的使用

1. 前言

AC 自动机是一种用于字符串多模式匹配的算法,其算法实现的底层数据结构多为字典树,其中一种实现的具体信息读者可参考 Aho Corasick 自动机结合 DoubleArrayTrie 极速多模式匹配。在实际开发中 AC 自动机常用于关键词识别提取的场景,以下是相关使用示例

2. 依赖引入

首先引入双数组字典树相关依赖,读者如有兴趣可前往 maven 仓库自行查找相关版本

     <dependency>
            <groupId>com.hankcs</groupId>
            <artifactId>aho-corasick-double-array-trie</artifactId>
            <version>1.2.3</version>
     </dependency>

3. 使用示例

AhoCorasickDoubleArrayTrie 的使用非常轻便,大致可分为以下几步,只要构建字典的语料足够丰富即可达到较高的识别准确率

  1. 数据准备
    简单来说,就是构建字典树的数据的准备,只要按照 Map 结构存储即可
  2. 字典树构建
    字典树构建只需要调用 AhoCorasickDoubleArrayTrie 提供的方法即可
  3. 关键词识别使用
    调用 AhoCorasickDoubleArrayTrie 提供的方法识别目标字符串,同时指定结果处理函数即可
    public static void main(String[] args) {
        // 字典数据准备
        TreeMap<String, String> map = new TreeMap<>();
        map.put( "hers",  "hers");
        map.put( "his",  "his");
        map.put( "she",  "she");
        map.put( "he",  "he");
        // 字典树构建
        AhoCorasickDoubleArrayTrie<String> act = new AhoCorasickDoubleArrayTrie<>();
        act.build(map);
        // 关键词提取
        act.parseText("uhers", (begin, end, value) -> {
            System.out.printf("[%d:%d]=%s\n", begin, end, value);
        });
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值