欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java DFA算法案例詳解

 更新時間:2021年08月13日 14:44:10   作者:小小華bk  
這篇文章主要介紹了Java DFA算法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

1.背景

項目中需要對敏感詞做一個過濾,首先有幾個方案可以選擇:

  1. 直接將敏感詞組織成String后,利用indexOf方法來查詢。
  2. 傳統(tǒng)的敏感詞入庫后SQL查詢。
  3. 利用Lucene建立分詞索引來查詢。
  4. 利用DFA算法來進行。

首先,項目收集到的敏感詞有幾千條,使用a方案肯定不行。其次,為了方便以后的擴展性盡量減少對數據庫的依賴,所以放棄b方案。然后Lucene本身作為本地索引,敏感詞增加后需要觸發(fā)更新索引,并且這里本著輕量原則不想引入更多的庫,所以放棄c方案。于是我們選定d方案為研究目標。

2.DFA算法簡介

DFA全稱為:Deterministic Finite Automaton,即確定有窮自動機。其特征為:有一個有限狀態(tài)集合和一些從一個狀態(tài)通向另一個狀態(tài)的邊,每條邊上標記有一個符號,其中一個狀態(tài)是初態(tài),某些狀態(tài)是終態(tài)。但不同于不確定的有限自動機,DFA中不會有從同一狀態(tài)出發(fā)的兩條邊標志有相同的符號。

簡單點說就是,它是是通過event和當前的state得到下一個state,即event+state=nextstate。理解為系統(tǒng)中有多個節(jié)點,通過傳遞進入的event,來確定走哪個路由至另一個節(jié)點,而節(jié)點是有限的。

3.敏感詞搜尋中的DFA算法

3.1敏感詞庫構造描述

以王八蛋和王八羔子兩個敏感詞來進行描述,首先構建敏感詞庫,該詞庫名稱為SensitiveMap,這兩個詞的二叉樹構造為:

 

用hash表構造為:

 

3.2基于敏感詞庫收索算法的描述

以上面例子構造出來的SensitiveMap為敏感詞庫進行示意,假設這里輸入的關鍵字為:王八不好,流程圖如下:

  

4.代碼編寫

4.1構造敏感詞實現代碼

4.2實現敏感詞查詢代碼

5.優(yōu)化思路

5.1敏感詞中間填充無意義字符問題

對于“王*八&&蛋”這樣的詞,中間填充了無意義的字符來混淆,在我們做敏感詞搜索時,同樣應該做一個無意義詞的過濾,當循環(huán)到這類無意義的字符時進行跳過,避免干擾。

5.2敏感詞用拼音或部分用拼音代替

兩種解決思路:一種是最簡單是遇到這類問題,先豐富敏感詞庫進行快速解決。第二種是判斷時將敏感詞轉換為拼音進行對比判斷。

不過目前這兩種方案均不能徹底很好的解決該問題,此類問題還需進一步研究。

到此這篇關于Java DFA算法案例詳解的文章就介紹到這了,更多相關Java DFA算法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java實現動態(tài)代理

    Java實現動態(tài)代理

    本文給大家介紹的是java使用動態(tài)代理類實現動態(tài)代理的方法和示例,這里推薦給大家,有需要的小伙伴參考下吧
    2015-02-02
  • 一篇文章帶你入門java多線程

    一篇文章帶你入門java多線程

    這篇文章主要介紹了java多線程編程實例,分享了幾則多線程的實例代碼,具有一定參考價值,加深多線程編程的理解還是很有幫助的,需要的朋友可以參考下
    2021-08-08
  • Java 中的CharArrayReader 介紹_動力節(jié)點Java學院整理

    Java 中的CharArrayReader 介紹_動力節(jié)點Java學院整理

    CharArrayReader 是字符數組輸入流。它和ByteArrayInputStream類似,只不過ByteArrayInputStream是字節(jié)數組輸入流,而CharArray是字符數組輸入流。CharArrayReader 是用于讀取字符數組,它繼承于Reader
    2017-05-05
  • 修改Android應用的樣式的一些關鍵點解析

    修改Android應用的樣式的一些關鍵點解析

    這篇文章主要介紹了修改Android應用的樣式的一些關鍵點,即對影響外觀的theme跟style的相關修改,需要的朋友可以參考下
    2015-12-12
  • springboot3+r2dbc響應式編程實踐

    springboot3+r2dbc響應式編程實踐

    本文主要介紹了springboot3+r2dbc響應式編程實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java連接MYSQL數據庫的實現步驟

    Java連接MYSQL數據庫的實現步驟

    以下的文章主要描述的是java連接MYSQL數據庫的正確操作步驟,在此篇文章里我們主要是以實例列舉的方式來引出其具體介紹
    2013-06-06
  • 關于通過Java連接mysql對反斜杠”\“轉義的測試詳解

    關于通過Java連接mysql對反斜杠”\“轉義的測試詳解

    這篇文章主要給大家介紹了關于通過Java連接mysql對反斜杠”\“轉義的測試的相關資料,文中通過實例代碼介紹的非常詳細,對大家理解反斜杠”\“轉義具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • spring boot2.0總結介紹

    spring boot2.0總結介紹

    今天小編就為大家分享一篇關于spring boot2.0總結介紹,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java數據結構及算法實例:插入排序 Insertion Sort

    Java數據結構及算法實例:插入排序 Insertion Sort

    這篇文章主要介紹了Java數據結構及算法實例:插入排序 Insertion Sort,本文直接給出實例代碼,代碼中包含詳細注釋,需要的朋友可以參考下
    2015-06-06
  • Java實現將png格式圖片轉換成jpg格式圖片的方法【測試可用】

    Java實現將png格式圖片轉換成jpg格式圖片的方法【測試可用】

    這篇文章主要介紹了Java實現將png格式圖片轉換成jpg格式圖片的方法,涉及java文件讀寫及圖形創(chuàng)建等相關操作技巧,需要的朋友可以參考下
    2018-03-03

最新評論