分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
### 介绍
基于AC自动机(Aho-Corasick algorithm)实现的关键词、敏感词、非法词、停用词等匹配替换工具,支持结果分词,忽略大小写,替换文本等功能。适用于在文章中查找关键词;过滤聊天、评论、留言中的敏感词等。
---
### 使用方法
#### 匹配所有关键词
```go
trie := NewTrie("雨疏", "风骤", "残酒", "卷帘人", "知否")
emits := trie.FindAll("昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否,知否?应是绿肥红瘦。", false)
// [2:4=雨疏, 4:6=风骤, 11:13=残酒, 16:19=卷帘人, 27:29=知否, 30:32=知否]
```
#### 匹配首个关键词
```go
trie := NewTrie("雨疏", "风骤", "残酒", "卷帘人", "知否")
emit := trie.FindFirst("昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否,知否?应是绿肥红瘦。", false)
// 2:4=雨疏
```
#### 匹配所有关键词 忽略大小写
```go
trie := NewTrie("poetry", "TRANSLATION")
emits := trie.FindAll("Poetry is what gets lost in translation.", true)
// [0:6=poetry, 28:39=TRANSLATION]
```
#### 匹配首个关键词 忽略大小写
```go
trie := NewTrie("poetry", "TRANSLATION")
emit := trie.FindFirst("Poetry is what gets lost in translation.", true)
// 0:6=poetry
```
#### 切分词
```go
trie := NewTrie("溪亭", "归路", "藕花", "争渡")
emits := trie.FindAll("常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。", false)
tokens := Tokenize(emits, text)
// ["常记", "溪亭(2:4=溪亭)", "日暮,沉醉不知", "归路(11:13=归路)", "。兴尽晚回舟,误入", "藕花(22:24=藕花)", "深处。", "争渡(27:29=争渡)", ",", "争渡(30:32=争渡)", ",惊起一滩鸥鹭。"]
```
#### 替换关键词
```go
trie := NewTrie("0元", "砍一刀", "免费拿", "免费领")
emits := trie.FindAll("我正在参加砍价,砍到0元就可以免费拿啦。亲~帮我砍一刀呗,咱们一起免费领好货。", false)
r1 := Replace(emits, text, "*")
r2 := Replace(emits, text, "@#$%^&*")
// 我正在参加砍价,砍到**就可以***啦。亲~帮我***呗,咱们一起***好货。
// 我正在参加砍价,砍到%^就可以#$%啦。亲~帮我%^&呗,咱们一起&*@好货。
```
---
### 源码
GitHub: https://github.com/yihleego/trie
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2262 次点击 ∙ 2 赞
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传