Thursday, April 8, 2021

Поиск ключевых фраз

Для добавления нативной интеграции необходимо реализовать алгоритм фильтрации сообщений.

Пример фраз, которые годятся для нативной интеграции:


Поиск ключевых фраз

Требования к алгоритму:

  1. Необходимо игнорировать регистр. Фразы идентичны:
    • «я жирная»;
    • «Я жирная»;
    • «Я ЖИРНАЯ».
  2. Между ключевыми словами могут быть разные разделители и разное их количество.  Необходимо учитывать разные разделители. Пример:
    • «я жирная»;
    • «я - жирная»;
    • «я — жирная»;
    • «я      жирная».
  3. Между ключевыми словами могут быть разные усиливающие слова. Алгоритм должен это понимать:
    • «я очень жирная»
    • «я нереально жирная»
    • «я в последнее время конкретно разжирела». 
  4. Нет смысла обрабатывать сообщения, размер которых меньше пяти символов:
    • «ок»;
    • «неа»;
    • «норм».
  5. Возможна ситуация, когда ключевые слова присутствуют в сообщении, но сообщение не является целевым. Пример:
    • «я держусь, а вот подруга — жирная»;
    • «я не хочу ходить в офис, но мне очень нравится работать».
  6. В объемном тексте с большей вероятностью встретится несколько ключевых слов. Искать необходимо только первое совпадение, остальные ключевые — игнорировать. В современности люди пишут короткие сообщения, а объемный текст скорее всего является копией и не представляет интереса. Подразумевается, что сознательное игнорирование дополнительных ключевых слов не является проблемой и не ведет к потере ключевых фраз.

Исходя из пунктов выше видно, что невозможно написать идеальный алгоритм. В пунктах 3 и 5 всегда будет противоречие. 

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


Отображение результата

Вторая задача — отобразить найденное сообщение в удобном для пользователя виде. Предусмотреть минимальное количество текста.

Требования к алгоритму:

  1. Предварить каждую фразу строкой:
    • «🤖 Cовпадение:»
  2. Выделить ключевое слово жирным. Пример: 
    • «🤖 Cовпадение:
      Нам худеть надо к лету😂»
    • «🤖 Cовпадение:
      Да какая гайка, мне нужно пожрать))»
  3. Обрезать длинное сообщение. Иногда текст сообщения очень большой. Ограничить текст сообщения пятьюдесятью символами справа и слева. Пример:
    • «🤖 Cовпадение:
      ...олго молча в трубку. Потом резко выпалила.
      – Я сейчас приеду. И сбросила вызов.
      Через несколько минут, девушка уже стояла в палате и утешала...»
    • «🤖 Cовпадение:
      ...ты покорила меня своим позитивом, добротней, бескорыстной помощью и мудростью💝 спасибо тебе за тебя  😘😘😘 желаю всего прекрасного и что б все твои мечты обязательно сбывались...»
  4. Отключить предпросмотр ссылок.