高效的關鍵詞替換和敏感詞過濾工具
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
相關文章
- Java敏感詞過濾Java
- JavaWeb - 【Filter】敏感詞過濾JavaWebFilter
- 基於JavaScript的關鍵詞過濾示例JavaScript
- JavaScript評論敏感詞過濾程式碼JavaScript
- 教你如何實現Python 過濾敏感詞Python
- js實現敏感詞過濾演算法JS演算法
- JAVA使用DFA演算法過濾敏感詞Java演算法
- DFA在C#中的實現:過濾敏感詞C#
- 過濾或者查詢敏感詞(DFA 演算法)演算法
- DFA演算法之內容敏感詞過濾演算法
- 過濾器應用【編碼、敏感詞、壓縮、轉義過濾器】過濾器
- 開源了一個 JavaScript 版敏感詞過濾庫JavaScript
- empire帝國cms 標題、關鍵詞、描述替換的sql命令SQL
- 基於PHP + TRIE樹實現敏感詞過濾演算法PHP演算法
- 利用Python爬蟲過濾“掘金”的關鍵詞檢索結果Python爬蟲
- python 字串整詞替換Python字串
- 【面試被虐】說說遊戲中的敏感詞過濾是如何實現的?面試遊戲
- 關鍵詞提取
- 百度流量與關鍵詞工具重大升級:推“關鍵詞影響力”
- Java的關鍵詞和註釋符Java
- 網站關鍵詞堆砌後,處理關鍵詞堆砌方法網站
- 新廣告法實施波及電商平臺 部分啟用關鍵詞過濾
- 高亮:單關鍵詞、多關鍵詞、多組多關鍵詞,從簡單到複雜實現滿足多方面需求的頁面關鍵詞高亮
- Spring關鍵詞的理解Spring
- Linux shell grep 或 egrep 或awk過濾兩個或多個關鍵詞Linux
- Hive常用命令,快鍵和關鍵詞Hive
- 什麼是關鍵詞策略?網站關鍵詞佈局重要嗎?網站
- 如何優化多個關鍵詞?分享多關鍵詞優化心得優化
- java—— finall 關鍵詞Java
- 關鍵詞感知檢索
- NLP標籤/關鍵詞-提取工具-java開發Java
- springboot專案結合filter,jdk代理實現敏感詞過濾(簡單版)Spring BootFilterJDK
- PbootCMS設定當前站點模板,模板子目錄,黑白名單,敏感詞過濾等boot
- 從JavaScript 的關鍵詞談起JavaScript
- IM敏感詞演算法原理和實現演算法
- 資料庫關鍵詞 drop、truncate和delete的用法資料庫delete
- 用 RAKE 和 Maui 做 NLP 關鍵詞提取的教程UI
- Java關鍵詞synchronized解讀Javasynchronized