Проверка совпадения со списком

finista

Client
Регистрация
10.10.2012
Сообщения
361
Благодарностей
57
Баллы
28
Есть список стоп слов, есть ответ пользователя. Как быстро проверить не содержит ли ответ пользователя совпадения со списком стоп слов.

Сейчас каждое слово беру из писка и проверяю с регуляркой с ответом пользователя. Список большой, долго проверяет. Можно как то упростить?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 454
Благодарностей
8 678
Баллы
113
Есть список стоп слов, есть ответ пользователя. Как быстро проверить не содержит ли ответ пользователя совпадения со списком стоп слов.
Сейчас каждое слово беру из писка и проверяю с регуляркой с ответом пользователя. Список большой, долго проверяет. Можно как то упростить?
брать в цикле стоп-слово из списка и по очереди проверять вхождение в тексте сообщения.
если список стоп слов намного больше средне-статистического сообщения,
то можно действовать наоборот, разбивать сообщение на отдельные слова в списке, брать уже из него слова в цикле и искать
вхождение в объединенном в переменную списке стоп-слов.
 
Последнее редактирование:

evgen2208

Client
Регистрация
12.10.2016
Сообщения
130
Благодарностей
162
Баллы
43
Есть список стоп слов, есть ответ пользователя. Как быстро проверить не содержит ли ответ пользователя совпадения со списком стоп слов.

Сейчас каждое слово беру из писка и проверяю с регуляркой с ответом пользователя. Список большой, долго проверяет. Можно как то упростить?
otvet - переменная с ответом (локальная string otvet="содержимое ответа" или переменна ЗП);
проверяет только факт наличия слова.
В указанном примере если стоп-слово "спам", то не найдет. а стоп-слово "спамом" найдет.


Код:
string otvet = @"вам пришло письмо со спамом на почту";
return Regex.Matches(otvet,@"\w+").Cast<Match>().Select(m=>m.Value).ToList().Any(aa=>project.Lists["test"].Contains(aa));
делал в одну строчку чтоб просто удобнее было кописпастить, а не для понимания.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)