java 實現敏感詞(sensitive word)工具詳解使用說明

sensitive-word

平時工作中,只要涉及到用戶可以自由發言(博客、文檔、論壇),就要考慮內容的敏感性處理。

sensitive-word 基於 DFA 算法實現的高性能敏感詞工具。工具使用 java 實現,幫助我們解決常見的問題。

特性

  • 6W+ 詞庫,且不斷優化更新

  • 基於 DFA 算法,性能較好

  • 基於 fluent-api 實現,使用優雅簡潔

  • 支持敏感詞的判斷、返回、脫敏等常見操作

  • 支持全角半角互換

  • 支持英文大小寫互換

快速開始

準備

  • JDK1.7+

  • Maven 3.x+

Maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>sensitive-word</artifactId>
    <version>0.0.4</version>
</dependency>

api 概覽

SensitiveWordBs 作爲敏感詞的引導類,核心方法如下:

方法 參數 返回值 說明
newInstance() 引導類 初始化引導類
contains(String) 待驗證的字符串 布爾值 驗證字符串是否包含敏感詞
findAll(String) 待驗證的字符串 字符串列表 返回字符串中所有敏感詞
replace(String, char) 使用指定的 char 替換敏感詞 字符串 返回脫敏後的字符串
replace(String) 使用 * 替換敏感詞 字符串 返回脫敏後的字符串

使用實例

所有測試案例參見 SensitiveWordBsTest

判斷是否包含敏感詞

final String text = "五星紅旗迎風飄揚,毛主席的畫像屹立在天安門前。";

Assert.assertTrue(SensitiveWordBs.newInstance().contains(text));

返回第一個敏感詞

final String text = "五星紅旗迎風飄揚,毛主席的畫像屹立在天安門前。";

String word = SensitiveWordBs.newInstance().findFirst(text);
Assert.assertEquals("五星紅旗", word);

返回所有敏感詞

final String text = "五星紅旗迎風飄揚,毛主席的畫像屹立在天安門前。";

List<String> wordList = SensitiveWordBs.newInstance().findAll(text);
Assert.assertEquals("[五星紅旗, 毛主席, 天安門]", wordList.toString());

默認的替換策略

final String text = "五星紅旗迎風飄揚,毛主席的畫像屹立在天安門前。";
String result = SensitiveWordBs.newInstance().replace(text);
Assert.assertEquals("****迎風飄揚,***的畫像屹立在***前。", result);

指定替換的內容

final String text = "五星紅旗迎風飄揚,毛主席的畫像屹立在天安門前。";
String result = SensitiveWordBs.newInstance().replace(text, '0');
Assert.assertEquals("0000迎風飄揚,000的畫像屹立在000前。", result);

更多特性

後續的諸多特性,主要是針對各種針對各種情況的處理,儘可能的提升敏感詞命中率。

這是一場漫長的***之戰。

忽略大小寫

final String text = "fuCK the bad words.";

String word = SensitiveWordBs.newInstance().findFirst(text);
Assert.assertEquals("fuCK", word);

忽略半角圓角

final String text = "fuck the bad words.";

String word = SensitiveWordBs.newInstance().findFirst(text);
Assert.assertEquals("fuck", word);

後期 road-map

  • 數字的轉換處理

  • 繁簡體互換

  • 重複詞

  • 停頓詞

  • 拼音互換

  • 用戶自定義敏感詞和白名單

  • 文字鏡像翻轉

  • 敏感詞標籤支持

拓展閱讀

敏感詞工具實現思路

DFA 算法講解

敏感詞庫優化流程

停止詞的思考記錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章