
利用高效的 Trie 树建立关键词树,如下图所示,然后依次查找字符串中的相连字符是否形成树的一条路径

发现掘金上这篇文章写的比较详细,可以一读,具体原理在此不详述。
支持关键词重叠,自动选用最长的关键词,代码示例如下:
package main import ( "fmt" "github.com/tal-tech/go-zero/core/stringx" ) func main() { replacer := stringx.NewReplacer(map[string]string{ "日本": "法国", "日本的首都": "东京", "东京": "日本的首都", }) fmt.Println(replacer.Replace("日本的首都是东京")) } 可以得到:
东京是日本的首都 示例代码见这里
代码示例如下:
package main import ( "fmt" "github.com/tal-tech/go-zero/core/stringx" ) func main() { filter := stringx.NewTrie([]string{ "AV 演员", "苍井空", "AV", "日本 AV 女优", "AV 演员色情", }) keywords := filter.FindKeywords("日本 AV 演员兼电视、电影演员。苍井空 AV 女优是 xx 出道, 日本 AV 女优们最精彩的表演是 AV 演员色情表演") fmt.Println(keywords) } 可以得到:
[苍井空 日本 AV 女优 AV 演员色情 AV AV 演员] 代码示例如下:
package main import ( "fmt" "github.com/tal-tech/go-zero/core/stringx" ) func main() { filter := stringx.NewTrie([]string{ "AV 演员", "苍井空", "AV", "日本 AV 女优", "AV 演员色情", }, stringx.WithMask('?')) safe, keywords, found := filter.Filter("日本 AV 演员兼电视、电影演员。苍井空 AV 女优是 xx 出道, 日本 AV 女优们最精彩的表演是 AV 演员色情表演") fmt.Println(safe) fmt.Println(keywords) fmt.Println(found) } 可以得到:
日本????兼电视、电影演员。?????女优是 xx 出道, ??????们最精彩的表演是??????表演 [苍井空 日本 AV 女优 AV 演员色情 AV AV 演员] true 示例代码见这里

https://github.com/tal-tech/go-zero

1 sarvatathagata 2020 年 8 月 31 日 AC 自动机了解一下? |
2 dingyaguang117 2020 年 9 月 1 日 |
3 a7217107 2020 年 9 月 1 日 DFA? |
4 kevinwan OP @sarvatathagata she/sheng/her 这三个关键词都要找出来,你用 AC 自动机怎么走?不是匹配最长的,是要把所有的关键字都找出来 |
5 sarvatathagata 2020 年 9 月 3 日 @kevinwan Fail 树了解一下 |
6 zhoushuguangking 2020 年 9 月 4 日 不错的算法 |
7 KesonAn 2020 年 9 月 4 日 有了 go-zero 这个库,微服务、关键字过滤不在话下 |
8 zhoushuguangking 2020 年 9 月 4 日 自研敏感词过滤成本还是比较高的 |
9 KesonAn 2020 年 9 月 4 日 @zhoushuguangking 有 @kevinwan 大佬在,不要怕,就是干 |
10 KesonAn 2020 年 9 月 4 日 |
11 kingxt 2020 年 9 月 4 日 |
12 zhoushuguangking 2020 年 9 月 4 日 go-zreo 是个很不错的微服务框架 |
13 zhoushuguangking 2020 年 9 月 4 日 看了下 go-zero 源码挺不错的,追求极简 |
14 zhoushuguangking 2020 年 9 月 4 日 工具大于文档和约定 |
15 KesonAn 2020 年 9 月 4 日 更多干货尽在 core 包中 |
16 zhoushuguangking 2020 年 9 月 4 日 每天都学习下新的知识 |
17 KesonAn 2020 年 9 月 4 日 |
18 dylanre 2020 年 9 月 4 日 @dingyaguang117 这个看起来也不错哦。 |
19 zhoushuguangking 2020 年 9 月 4 日 |
20 bittoy 2020 年 9 月 4 日 解决了关键字过滤的痛点 |