이 해결하기 매우 어려운 문제이며 정규 표현식이 작동하는지 확인해야합니다 (m
단어의 수이고 n
텍스트 당신이 검색하는의 크기)보다 기본적으로 더 나은해야합니다 당신을 위해 그리고 당신이 embedding을 어떻게 다루는 지 (실제 F-word를 제외하고 frackface와 같은 모독에 사전 단어를 추가 할 때).
정규 표현식은 일반적으로 얼마나 오래 될 수 있는지에 대한 제한이 있으며 일반적으로 모든 단어에 대해 하나의 정규식을 사용할 수 없습니다. 문자열에 대해 여러 개의 정규 표현식을 실행하면 필요한 성능과 블랙리스트의 크기에 따라 실제로 느립니다. 처음에는 CleanSpeak을 정규 표현식 시스템으로 구현했지만 확장되지 않았으며 다른 메커니즘을 사용하여 다시 작성했습니다.
또한 구, 구두점, 공백, 리트 말 및 다른 언어를 고려해야합니다. 이 모든 것들이 정규식을 덜 매력적으로 만들어줍니다. | - |여보세요
h3llo
- 목록 항목
- 안녕하세요
- 안녕하세요
- h_e_l_l_o
- : 여기 안녕하세요 단어를 사용하는 몇 가지 예입니다 (이이 운동에 대한 욕설 가정)
- "안녕하세요"(이 구는 모욕적 인 단어는 포함 할 수 없지만 결합하면 모욕적입니다)
두 개 이상의 사전 (허용 된 사이트) 단어가 서로 옆에있을 때 욕설을 포함하는 경우도 처리해야합니다.의 S-단어가 포함 된 몇 가지 예 :
이 분명 욕설 아니지만, 대부분의 자체 개발 및 많은 상용 솔루션은 이러한 경우에 문제가있다.
우리는 지난 3 년간 CleanSpeak에 사용 된 필터를 완벽하게 처리하여 이러한 모든 문제를 처리하고 계속 개선하고 개선하기 위해 노력했습니다. 또한 성능을 위해 시스템을 완성하는 데 8 개월을 소비했으며 초당 약 5,000 개의 메시지를 처리 할 수있었습니다. 쓸만한 것을 만들 수는 없지만 올 수있는 많은 문제를 처리하고 정규 표현식을 사용하지 않는 시스템을 만들 준비를하십시오.
다음 링크를 확인하십시오. http://stackoverflow.com/questions/273516/how-do-you-implement-a-good-profanity-filter –
Scunthorpe 문제를 찾으십시오. http : //en.wikipedia .org/wiki/Scunthorpe_problem – rossum