可以直接使用工具包 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)