민감 어 검출 알고리즘 소결

2061 단어
순서.
본 고 는 민감 한 단어 나 더러 운 단어 검출 알고리즘 을 간단하게 소개 한다.
고전 AC 알고리즘
전형 적 인 AC 알고리즘 은 세 부분 으로 구성 되 어 있 으 며, goto 표, fail 표 와 output 표 는 모두 네 가지 구체 적 인 알고리즘 을 포함 하고 있 으 며, 각각 세 장의 검색 표를 계산 하 는 알고리즘 과 AC 알고리즘 자 체 를 포함한다.
  • goto 표 는 모델 집합 P 의 모든 모델 로 구 성 된 상태 전이 자동 동기 이다.( goto trie )
  • failure 표 의 역할 은 goto 표 에서 실패 후 상태 전환 과 일치 하 는 근거 로 KMP 에서 next 표 의 역할 과 비슷 하 다.( trie , ,AC , )
  • output 는 출력 을 표시 합 니 다. emits 라 고도 부 릅 니 다. 즉, 특정한 상태 에 도착 한 후에 특정한 패턴 문자열 이 일치 하 는 데 성공 한 것 을 의미 합 니 다
  • AC 자동 기 는 본질 적 으로 trie 트 리 를 바탕 으로 하 는 kmp 알고리즘 으로 AC 알고리즘 은 세 개의 함수 로 문자열 을 일치 시 켜 야 하 며 이 세 함수 의 구 해 는 모두 확 정 된 DFA (유한 상태 자동 동기) 와 관련 이 있다.
    일반 DFA 알고리즘
    결정적 으로 가난 한 자동 동기 가 있 습 니 다. 정규 표현 식 의 일치, 최 장 왼쪽 자식 일치 에 사 용 됩 니 다.
    hashmap 사용 하기
    public void createKeyWord(String keyWord) {
            Map nowMap = sensitiveWordMap;
            for (Character c : keyWord.toCharArray()) {
                Object obj = nowMap.get(c);
                if (obj == null) {
                    Map childMap = new HashMap<>();
                    childMap.put("isEnd", "false");
                    nowMap.put(c, childMap);
                    nowMap = childMap;
                } else {
                    nowMap = (Map) obj;
                }
            }
            nowMap.put("isEnd", "true");
        }
    

    사용자 정의 데이터 구조 사용
    public class WordNode {
        private int value; //     
        private List subNodes; //    
        private boolean isLast;//   false
    
        public WordNode(int value) {
            this.value = value;
        }
        public WordNode(int value, boolean isLast) {
            this.value = value;
            this.isLast = isLast;
        }
        //......
    }    
    

    doc
  • 문자열 다 중 모드 일치: AC 알고리즘
  • Java 는 DFA 알고리즘 이 민감 어, 광고 어 에 대한 여과 기능
  • 을 실현 한다.
  • 민감 어 여과 알고리즘 원리 의 Aho - Corasick 알고리즘
  • 민감 어 필터 링 알고리즘 원리 의 DFA 알고리즘
  • AC 자동 기와 Fail 나무
  • 두 배열 의 AC 매 칭 알고리즘 학습
  • 좋은 웹페이지 즐겨찾기