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
的使用非常轻便,大致可分为以下几步,只要构建字典的语料足够丰富即可达到较高的识别准确率
- 数据准备
简单来说,就是构建字典树的数据的准备,只要按照 Map 结构存储即可- 字典树构建
字典树构建只需要调用AhoCorasickDoubleArrayTrie
提供的方法即可- 关键词识别使用
调用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);
});
}