Đây là một vấn đề khó giải quyết và bạn cần xác định xem cụm từ thông dụng có hoạt động không cho bạn và cách bạn xử lý nhúng (khi bạn thêm từ điển vào từ thô tục như frackface ngoại trừ từ F thực).
Cụm từ thông dụng thường có giới hạn về độ dài của chúng và điều này thường ngăn bạn sử dụng một regex cho tất cả các từ của bạn. Thực thi nhiều biểu thức chính quy với một chuỗi thực sự chậm, tùy thuộc vào hiệu suất bạn cần và danh sách đen của bạn lớn đến mức nào. Ban đầu chúng tôi triển khai CleanSpeak làm hệ thống biểu thức chính quy, nhưng nó không được mở rộng và chúng tôi viết lại nó bằng một cơ chế khác.
Bạn cũng cần xem xét các cụm từ, dấu chấm câu, dấu cách, ngôn ngữ nói và các ngôn ngữ khác. Tất cả những điều này làm cho các biểu thức chính quy kém hấp dẫn hơn như một giải pháp. Dưới đây là một số ví dụ sử dụng từ hello (giả định nó là thô tục cho bài tập này):
- List item
- chào
- chào
- h_e_l_l_o
- | - | ello
- h3llo
- "xin chào" (cụm từ này có thể không chứa bất kỳ từ tục tĩu nào nhưng kết hợp chúng là tục tĩu)
Bạn cũng cần xử lý các trường hợp cạnh trong đó hai hoặc nhiều từ điển (danh sách trắng) chứa từ thô tục khi nằm cạnh nhau.Một số ví dụ có chứa các s-từ:
- bash nó
- ssh đó là thời gian yên tĩnh
Đây là rõ ràng không thô tục, nhưng hầu hết các giải pháp thương mại cây nhà lá vườn và nhiều người có vấn đề với những trường hợp này.
Chúng tôi đã dành 3 năm qua để hoàn thiện bộ lọc được sử dụng bởi CleanSpeak để đảm bảo bộ lọc xử lý tất cả các trường hợp này và chúng tôi tiếp tục tinh chỉnh và làm cho nó tốt hơn. Chúng tôi cũng đã dành 8 tháng để hoàn thiện hệ thống của mình cho hiệu suất và có thể xử lý khoảng 5.000 tin nhắn mỗi giây. Không phải để nói rằng bạn không thể xây dựng một cái gì đó có thể sử dụng, nhưng được chuẩn bị để xử lý rất nhiều vấn đề mà có thể đi lên và cũng để tạo ra một hệ thống không sử dụng các biểu thức thông thường.
Nguồn
2011-12-01 18:15:28
Kiểm tra liên kết này: http://stackoverflow.com/questions/273516/how-do-you-implement-a-good-profanity-filter –
Tìm hiểu vấn đề về Scunthorpe: http: //en.wikipedia .org/wiki/Scunthorpe_problem – rossum