Я хочу создать приложение для обмена сообщениями и отфильтровать входящую строку на основе определенных ключевых слов.Язык, который я планирую использовать, - это Java, но я тоже могу использовать Groovy.
Список ключевых слов будет статичным где-то в файле или CSV.
Размер списка ключевых слов будет не более 100 слов(ни в коем случае я не буду использовать более 100 ключевых слов)
Входящая строка будет макс. 200 байт (UTF-8)
Я видел довольно много сообщений, в которых говорится, что использование ключевых слов для фильтрацииСтрока устарела.Приложение, которое я планирую сделать, будет простым, поэтому я не хочу связываться с nlp.
Ключевые слова могут быть регулярными выражениями или обычными словами.
Я знаю, что есть много способов сделатьэто, но я хочу самый быстрый.У меня есть прочитанный, хороший подход - использовать HashMap, но я не понимаю, как это можно быстро объединить с регулярным выражением.
Например, входящая строка может быть:
String example = "I want to gamble and drink vodka all day"
AСписок ключевых слов будет содержать:
DRUGS
VODKA.?
GAMBLE
Пример строки должен быть отфильтрован, поскольку он содержит как минимум 1 слово из списка ключевых слов
EDIT *
После некоторых ответов, указывающих на то, что использование регулярных выражений медленное, я хочу найти хорошее решение без регулярных выражений.
Без использования регулярных выражений один из способов сделать это - поместить ключевые слова в набор. Разделить входящую строкув массив, затем перебираем массив и проверяем, содержатся ли какие-либо слова массива в наборе.
В некоторых случаях это не будет работать.Например, кто-то может ввести «Я люблю играть и пить водку весь день».Это не будет совпадать.
Это одна из причин, по которой я вижу регулярное выражение как единственный способ фильтрации слов ...