字典树

发布时间 2023-03-22 21:17:19作者: chease

可以直接使用工具包 ahocorasick

Java 版本

<dependency>
 <groupId>org.ahocorasick</groupId>
  <artifactId>ahocorasick</artifactId>
 <version>0.2.4</version>
</dependency>

package com.chease.algo.common;

import java.io.IOException;
import java.util.Collection;
import org.ahocorasick.trie.Emit;
import org.ahocorasick.trie.Trie;

public class TrieTest{
 public static void main(String[] args) throws IOException {
 	Trie trie = new Trie();
 	trie.addKeyword("三体");
 	trie.addKeyword("科幻");
 	trie.addKeyword("科幻作品");
 	trie.addKeyword("he");
 	Collection<Emit> emits = trie.parseText("三体是个伟大的科幻作品");
 	System.out.println(emits);
 
 }
 
}

python 版本
https://www.cnblogs.com/duoba/p/16196417.html
安装: pip install pyahocorasick

import ahocorasick
trie = ahocorasick.Automaton()

trie.add_word("三体", "三体");
trie.add_word("科幻", "科幻");
trie.add_word("科幻作品", "科幻作品");
trie.add_word("he", "he");

trie.make_automaton()

# 该方法 匹配最长的字符串
for item in trie.iter_long("三体是个伟大的科幻作品"):
 print(item)

# 该方法 匹配所有字符串
for item in trie.iter("三体是个伟大的科幻作品"):
 print(item)