Дмитро Вакуленко, Conversational Frontend Engineer, та Олександр Голуб, AI Trainer в Master of Code Global в колонці для AIN.UA розповіли про те, як українська нейромережа на базі 20 000 коментарів чистить інформацію про «прильоти» в соцмережах. Зокрема про те, як в компанії розробляли систему, яка сама шукає відповідні пости користувачів і сама себе вдосконалює.

Олександр Голуб і Дмитро Вакуленко
Фото: Master of Code Global

Як налаштовували чат-бот

Кожен із нас хоч раз бачив коментарі людей, які не дотримуються інформаційної гігієни та повідомляють про місця «прильотів» ворожих ракет. Чи можна вирішити системно цю проблему? Чи можна одним махом якось прибрати в соцмережах всі коментарі, які можуть призводити до загибелі цивільних і військових? 

Насправді місія здійсненна. Ще на початку повномасштабної війни ми запустили волонтерський проєкт — чат-бот UA Anti Spam Bot. Наразі він видаляє шкідливі коментарі у 2600 Telegram-каналах і групах, охоплюючи понад 420 000 користувачів.  

Автором ідеї чат-боту є черкасець Дмитро Вакуленко. Як фронтенд-розробник, на цьому волонтерському проєкті він залучений як бекенд-розробник. А ще треба було розібратись з машинним навчанням — це взагалі третя сфера. 

Як же вдалося налаштувати чат-бот? Спочатку чат-бот базувався на простому алгоритмі порівняння коментарів користувачів з «підозрілою» комбінацією стоп-слова (горить, палає, приліт, танк, БТР тощо) та локації (Київ, Черкаси, заправка, парк, завод тощо). І автоматично видаляв такі коментарі.  

Однак згодом виявилося, що всі дані, які ми збирали протягом місяця — стоп-слова та локації — не підходять для тренування нейромережі. Потрібні повністю цілі коментарі користувачів для налаштування «нейронки».   

Тому ми почали збирати ці коментарі з чатів у Telegram. Коли відбувалися повітряні тривоги, ми моніторили, що пишуть люди. Наприклад, що там пролетіло, де там був вибух, що сталось. І ми такі приклади виписували собі. Це рутинна і нудна діяльність, яку хотілось якось оптимізувати.

Система сама шукає коментарі й сама себе вдосконалює

Один із членів нашої волонтерської команди Андрій Смагін розробляв індивідуальний (кастомний) телеграм-клієнт, який дозволяв від імені користувача писати про початок та відбій тривоги. Ми зрозуміли, що маючи вже натреновану нейромережу, можемо розробити свій телеграм-клієнт, який буде отримувати всі повідомлення з акаунту і перевіряти їх через нейромережу. Всі незрозумілі для мережі приклади ми додаємо в базу і тим самим перетреновуємо нейромережу. 

Ця система не повністю автоматична — все ще потрібно девелоперу брати новий датасет і навчати його. Але все рівно це оптимізація. Адже більше не потрібна команда людей, які б сиділи в Telegram-чатах і моніторили коментарі користувачів. 

Змогли назбирали 20 000 прикладів

І тут раптово зіткнулися з проблемою, що прикладів стало настільки багато, що вони почали конф’юзити нейромережу. Чат-бот починав працювати гірше. 

Тому нам потрібно було оптимізувати ці дані — передивитись датасет і видалити умовно зайві приклади коментарів, щоб потім ми могли натренувати ще одну нейромережу, яка б правильно використовувала цей датасет. 

Виклик №1. Коментарі користувачів відрізняються за розміром

Є коментарі користувачів, де одне-два слова. Наприклад, «хто чув» або «хто бачив» або «летить». Ми можемо розуміти контекст, але чат-бот, коли він бачить ці слова навіть у мирному контексті (наприклад,«хто бачив, чи не з’явився там iPhone 14 в магазинах»), видалить це. 

Тому в нашій базі даних ми прибирали ті приклади коментарів, де одне-два слова. Або редагували їх, додаючи ключові слова (наприклад, літак, ракета, гвинтокрил, танк, солдат, зброя тощо). Завдяки цьому бот не видаляв «невинні» коментарі, які не потрібно видаляти.   

Інша крайність розміру коментарів — величезні повідомлення, коли видно, що людина просто «скопіпастила» якусь новину з іншого каналу. Ми вирішили цей виклик у такий спосіб, що почали перевіряти тільки ті коментарі, які були менше 30 слів і відсіювали всі, що більші. Це допомогло збільшити точність чат-бота. 

Виклик №2. Треба моніторити не тільки коментарі українців, але й у ворожих каналах

Наприклад, доводилося заходити до Telegram-каналу пропагандистки Маргарити Симоньян. І в цьому є морально-психологічно сторона — важкувато було читати безліч ідіотських коментарів про «укронацистів».

Причому, цей моніторинг ворожих каналів ми робили з особистих акаунтів. Зараз на наших особистих акаунтах дуже багато ворожих Z-чатів, які перевіряв юзер-бот. Якщо поліція або військові зупинять нас на вулиці та перевірять Telegram, то будуть питання. 

Виклик №3. Люди часто пишуть з помилками, знаками оклику, смайлами

Для нейромережі кожне слово — це окремий токен. 

При цьому в коментарях користувачі використовують слова у різних відмінках (наприклад, «площа», «площі», «площею») і різного роду (наприклад, «горіла», «горіло», «горів»). Тому, щоб бот ідентифікував всі ці різні варіації слів, ми використовували Stemming. Цей інструмент робив обрізку закінчень слів у різних відмінках і залишав ключове слово.  

А щоб ідентифіковувати слова у різних часових вимірах (наприклад, «горіло», «горітиме», «горить») і в однині та множині, ми використовували Lemmatization. 

Завдяки цим інструментам ми отримуємо одне базове слово, яке потім використовуємо для тренування бота. 

Ще одна особливість написання слів у коментарях, яку потрібно враховувати боту – це подовження букв на емоціях. Наприклад, люди часто пишуть у коментарях «горииииить» чи «виииииибух».

Виклик №4. Існує багато синонімів до слів, які має враховувати чат-бот

Наприклад, слово «бомблять» має 2-3 десятки синонімів. Наприклад, «хріначать», «хірячать», «фігачать» тощо. І нейромережа має розпізнавати коментарі користувачів з усіма цими варіантами слів. 

Ми періодично опитуємо адміністраторів Telegram-каналів і груп, щоб розуміти, які додаткові функції їм потрібні. Виходячи з цього попиту, розвиваємо UA Anti Spam Bot і додаємо нові фічі. Наприклад, чат-бот має антишахрай-систему та може автоматично видаляти коментарі шахраїв з лінками на фейкові ресурси, що мімікрують під офіційні енергетичні сервіси (ДТЕК, Yasno та інші).  

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

Автори: Дмитро Вакуленко, Conversational Frontend Engineer, та Олександр Голуб, AI Trainer в Master of Code Global.