Как мне обратиться к слову, используя все варианты, независимо от размера букв в словах? - PullRequest
0 голосов
/ 10 мая 2019

Хорошо, поэтому я делаю бот Discord и пытаюсь установить параметры для слов, которые не могут быть произнесены на сервере (вы знаете, что такое, slurs и тому подобное).Итак, я поставил пятно (я просто использую слово «собака» в качестве примера), но оно было только строчным.В общем, это просто «собака», и если кто-то говорит «собака» в чате, то его сообщение будет удалено, и бот отправит им сообщение через DM.Но если кто-то скажет «Собака», то не удалит свое сообщение.Что я должен добавить к коду, чтобы убедиться, что все варианты slur подобраны?

Я невероятно новичок в любой форме кодирования, и я получил массу помощи от моих друзей, чтобы сделать этого бота, поэтому я действительно понятия не имею, что я делаю.

(если вы хотите увидеть код, вот он. Я заменил все пятна на слова, но я думаю, вы понимаете суть):

   "bannedWords":[
       "apple",
      "dog",
      "bird",
      "cat"
   ],
   "code":""
}

Я ожидаю слова "собака", "Собака "," ДОГ "," СОБАКА "," СОБАКА "," ДОГ "," ДОГ "," ДОГ "и т. Д. Должны быть идентифицированы вместо просто" собака ".

1 Ответ

0 голосов
/ 10 мая 2019

Это на самом деле очень сложный вопрос.
Самый простой подход - создать массив запрещенных слов в нижнем регистре и сравнить его со строкой после полной манипуляции с нижним регистром, используя что-то вроде .toLower ().или .toLowerCase () в JavaScript.
Но это не остановит пользователей, пытающихся обойти ваш список, используя аналогичные символы и даже символы ASCII в качестве замены, например, dög, d0g или даже døg.Решение этой проблемы на самом деле является сложной частью вопроса.
Один из вариантов - использование подстановочных знаков Regex, таких как.operator.

\d.g\
Will match dog, dög....

Но это было бы очень непрактично и отнимало бы много времени, не говоря уже о вычислительных затратах, если ваш забаненный список длинный.Есть несколько способов, как это можно сделать, самые простые, как описано выше, вполне подойдут некоторым серверам только для друзей, как вы только что описали, но в ситуациях, когда обнаружение этих слов критически важно, используя Stemming Алгоритмы, Нечеткое сопоставление , Регулярные выражения и машинное обучение, как описано в этой статье, - все допустимые варианты и оптимальны, если эффективно объединяются друг с другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...