高效的關鍵詞替換和敏感詞過濾工具
1. 演算法介紹
利用高效的 Trie 樹建立關鍵詞樹,如下圖所示,然後依次查詢字串中的相連字元是否形成樹的一條路徑
發現掘金上這篇文章寫的比較詳細,可以一讀,具體原理在此不詳述。
2. 關鍵詞替換
支援關鍵詞重疊,自動選用最長的關鍵詞,程式碼示例如下:
package main
import (
"fmt"
"github.com/tal-tech/go-zero/core/stringx"
)
func main() {
replacer := stringx.NewReplacer(map[string]string{
"日本": "法國",
"日本的首都": "東京",
"東京": "日本的首都",
})
fmt.Println(replacer.Replace("日本的首都是東京"))
}
可以得到:
東京是日本的首都
示例程式碼見這裡
3. 查詢敏感詞
程式碼示例如下:
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演員]
4. 敏感詞過濾
程式碼示例如下:
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
示例程式碼見這裡
5. Benchmark
Sentences | Keywords | Regex | go-zero |
---|---|---|---|
10000 | 10000 | 16min10s | 27.2ms |
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 匹配關鍵詞和敏感詞
- JavaWeb - 【Filter】敏感詞過濾JavaWebFilter
- 基於JavaScript的關鍵詞過濾示例JavaScript
- JavaScript評論敏感詞過濾程式碼JavaScript
- 教你如何實現Python 過濾敏感詞Python
- 關鍵詞加粗和插入關鍵詞
- js實現敏感詞過濾演算法JS演算法
- JAVA使用DFA演算法過濾敏感詞Java演算法
- DFA在C#中的實現:過濾敏感詞C#
- 過濾或者查詢敏感詞(DFA 演算法)演算法
- DFA演算法之內容敏感詞過濾演算法
- 用laravel框架實現敏感詞彙過濾功能Laravel框架
- 開源了一個 JavaScript 版敏感詞過濾庫JavaScript
- 基於PHP + TRIE樹實現敏感詞過濾演算法PHP演算法
- 非法詞彙過濾
- python輕鬆過濾處理髒話與特殊敏感詞彙的方法Python
- robot 關鍵詞
- 關鍵詞提取
- Java的關鍵詞和註釋符Java
- transient關鍵詞的概述
- 【面試被虐】說說遊戲中的敏感詞過濾是如何實現的?面試遊戲
- 網站關鍵詞堆砌後,處理關鍵詞堆砌方法網站
- springboot專案結合filter,jdk代理實現敏感詞過濾(簡單版)Spring BootFilterJDK
- 高亮:單關鍵詞、多關鍵詞、多組多關鍵詞,從簡單到複雜實現滿足多方面需求的頁面關鍵詞高亮
- 電競、便捷、高效、安全,盤點OriginOS功能的關鍵詞
- java—— finall 關鍵詞Java
- 什麼是長尾關鍵詞?如何找到長尾關鍵詞?
- Hive常用命令,快鍵和關鍵詞Hive
- 什麼是關鍵詞策略?網站關鍵詞佈局重要嗎?網站
- 如何優化多個關鍵詞?分享多關鍵詞優化心得優化
- NLP標籤/關鍵詞-提取工具-java開發Java
- 作用域鏈this關鍵詞
- Eclipse註釋關鍵詞Eclipse
- 關鍵詞感知檢索
- PbootCMS設定當前站點模板,模板子目錄,黑白名單,敏感詞過濾等boot
- 從JavaScript 的關鍵詞談起JavaScript
- 資料庫關鍵詞 drop、truncate和delete的用法資料庫delete
- IM敏感詞演算法原理和實現演算法