Як ми знаходимо й перевіряємо спільноти
Групи українців за кордоном у Telegram та Facebook для каталогу Svitom (svitom.org) знаходить та перевіряє Meridian, наша система пошуку й перевірки груп. Вона поєднує правила в коді, сучасні мовні моделі й людину, яка налаштовує перевірки. Тут про те, які перевірки проходить група, як ми стежимо за якістю відповідей та чому якоїсь групи може не бути.
Звідки беруться групи
Групи для Svitom ми знаходимо у відкритих джерелах. Одного способу, яким можна зібрати всі групи українців у Telegram та Facebook, не існує, а повний список груп навіть однієї категорії одним способом не зібрати. Тому ми поєднуємо кілька джерел та зводимо все знайдене в один каталог. Одна й та сама група часто трапляється не раз, тож повтори ми відсіюємо. Кожна група в каталозі є лише один раз. Так склався найбільший каталог українських груп і чатів за кордоном з прив’язкою до країн та міст.
Чому це складніше, ніж здається
Коли в нас тільки з’явилися перші групи й ми спробували визначити, до якого міста належить кожна та про що вона взагалі, здавалося, що це не так уже й складно. Виявилося навпаки. Зібрати двадцять груп та зібрати тисячі це різні задачі. На великому обсязі виникає купа винятків, які не лягають у загальне правило, а ігнорувати їх не можна.
Ми уявляємо собі групу як щось просте, на кшталт «Українці в Берлині». Насправді назви бувають німецькою, польською чи англійською, латиницею або транслітом, зі скороченнями, сленгом та емодзі замість слів. В одній назві можуть стояти п’ять міст разом із країною, район замість міста або регіон без жодного міста. Слова «українці» часто немає взагалі, є лише прапор. Буває, що опис порожній, а назва складається з одного слова, яке нічого не каже ні про місто, ні про тему. Однакові назви міст трапляються в різних країнах, а частина назв лише схожа на місто. Кожен такий випадок треба розпізнати правильно, бо від цього залежить, у якому місті та в якій категорії група з’явиться на сайті.
За каталогом стоїть велика система обробки даних, а перевірки мовними моделями лише одна її частина. Як вона влаштована й скільки роботи за нею стоїть, ми розповіли в матеріалі «Що стоїть за каталогом Svitom».
Як група проходить перевірки
Перевіряє групи Meridian, наша система пошуку й перевірки груп. Що це за система та як вона влаштована, ми розповіли окремо. Спершу Meridian збирає відомості, які про групу бачать усі, тобто назву, опис та юзернейм. Частину груп правила в коді відсікають ще до мовних моделей. Далі група проходить від шести до десяти перевірок мовними моделями, найчастіше сім.
Кожна перевірка відповідає на своє питання. Ми з’ясовуємо, до якого міста й країни належить група, чи правильна ця прив’язка, чи вона для українців, зокрема за непрямими ознаками, та до якої категорії її віднести. Окремий бан-фільтр відсікає групи з підозрілою назвою чи описом, тобто ті, що потенційно можуть містити заборонений вміст.
Ми використовуємо сучасні мовні моделі останніх версій разом з автоматичними перевірками за правилами. Для експериментів порівнюємо моделі різних розробників, зокрема OpenAI, Anthropic та Google. При цьому зважаємо не лише на якість відповідей, а й на вартість.
Барахолки й вакансії ми збираємо за темою, а не за аудиторією. Їх ми визначаємо за словами, які властиві оголошенням або вакансіям, тож групи в цих розділах не обов’язково створені саме для українців.
Як ми визначаємо місце групи
Місце групи ми визначаємо за її назвою, описом та юзернеймом. «Українці в Берліні» та «Українці в Берліні, Німеччина» належать до Берліна, країна тут лише уточнює місто. Кілька сусідніх міст у назві зазвичай означають одне місце, де люди живуть поруч, тож така група стоїть у кожному з цих міст. На сторінці міста у фільтрі «Охоплення» такі групи позначено як «Рівень регіону», а групи одного міста як «Рівень міста».
Група рівня країни це не будь-яка група в країні, а група для всієї країни, на кшталт «Українці в Іспанії». Довгий перелік міст однієї країни теж означає групу для всієї країни. На сторінці країни такі групи стоять окремо від міських.
Інша справа, коли перелік міст явно роздутий. Буває, що в назві чи описі стоять десятки міст підряд або довгий хвіст хештегів з назвами міст, а сама група про одне місто чи взагалі про щось інше. Так групу намагаються показати в пошуку якомога ширше. Міста з такого хвоста хештегів ми не зараховуємо, бо місце групи задає її назва, а не хештеги. До груп, які роздувають назву чи опис переліками міст або хештегами, можуть застосовуватися обмеження.
Буває й так, що назва лише схожа на місто. «Реал Мадрид» це клуб, «Essens» парфумерія, а не Ессен, а Mitte та Queens райони, а не міста. Назва «Ukrainians in Georgia» може означати як штат Джорджія у США, так і Грузію. Такі випадки ми розбираємо окремо, а правила для них постійно уточнюємо.
Чому модель вирішила саме так
До кожного рішення модель пише коротке пояснення, чому вона так вирішила. До пояснення вона додає цитату з даних групи, на підставі якої ухвалила рішення. Програма потім звіряє, що така цитата в даних групи справді є. Тож рішення без опори в даних ми бачимо одразу.
Найчастіше ці пояснення потрібні не для того, щоб ловити помилки моделі. Вони показують, де завдання в промпті розходиться з тим, що ми хочемо бачити на сайті. Тоді ми правимо промпт, випускаємо нові редакції й за числами дивимося, чи став результат таким, як треба.
Як ми стежимо за якістю
Перевірки калібрує людина. Ми регулярно переглядаємо вибірки груп та відповіді системи й налаштовуємо правила за результатами. Складні групи ми іноді розбираємо разом із сильнішими моделями. Від них ми чекаємо не повтору тієї самої перевірки, а пояснення, чим ця група відрізняється від інших та чому з нею виникла складність.
Писати промпт без замірів це вгадування, а не робота. Тому ключові промпти проходять від 6 до 15 редакцій, а то й більше, а деякі ми переписували з нуля. Одне й те саме питання, сформульоване по-різному, може давати помітно різні відповіді, особливо коли питання абстрактне, а не вибір із заздалегідь заданих значень. Кожну редакцію ми перевіряємо спершу на малій вибірці, потім на все більшій, а тоді порівнюємо з попередніми та з контрольним набором складних груп.
Наскільки стабільні відповіді
Мовна модель не завжди відповідає однаково. Якщо поставити те саме питання вдруге з тими самими даними й налаштуваннями, частина відповідей може змінитися. Це називають шумом. Таке обмеження мають усі сучасні моделі. Шум виникає, коли задача сама по собі складна, коли промпт сформульований нечітко або коли він не охоплює всіх випадків, які трапляються в наших даних.
Тому ми його міряємо. Той самий набір груп проганяємо вдруге без жодних змін, а потім рахуємо, скільки рішень змінилося. На ранніх редакціях визначення місця повтор змінював відповідь у 15 % випадків. Причину ми знайшли й виправили. Відтоді правку промпту зараховуємо, лише якщо її ефект більший за розкид повторів.
У новому поколінні перевірок результати такі. Окремі перевірки ми проганяли вдруге на тестових наборах. На наборі з 200 складних груп бан-фільтр не змінив жодного рішення. Перевірка, чи група належить до нашої теми, на наборі з 400 груп змінила відповідь у 0,5 % випадків, а підтвердження зв’язку групи з містом чи країною на наборі з 300 груп у 2 %. Промпт, що визначає список міст та країн групи, на повному обсязі даних дає близько 1,7 % шуму. Набори для інших перевірок ми навмисно склали переважно зі складних випадків, а пограничні групи шумлять трохи більше за явно складні.
Низький шум означає, що перевірки справляються не лише із загальною масою груп, а й із рідкісними, складними та пограничними випадками. Там, де відповідь усе ж змінюється, групу часто важко віднести кудись і людині, бо даних про неї просто замало. Тож причина зазвичай не в моделі, а в самих даних групи. Назва й опис дають два однаково правдоподібні варіанти, наприклад місто чи весь регіон, та не містять слова, яке б вирішило вибір. Такого розкиду не прибере ні сильніша модель, ні кращий промпт, бо відомостей, яких у групі немає, вони не додадуть.
Чого ми не хочемо бачити в каталозі
Небажаного вмісту в Telegram, чесно кажучи, вистачає. Платформа дуже береже приватність груп. До криптовалют та груп, де їх обмінюють, ми ставимося критично. Усе, що пов’язане з криптовалютними схемами, послугами для дорослих, «легким» швидким заробітком чи надто вигідними фінансовими пропозиціями, з обманом, маніпуляціями чи забороненими речовинами, ми відсікаємо. Цим займається окремий бан-фільтр.
Що можна робити з самим каталогом, а чого не можна, ми розповіли в правилах користування каталогом.
Чому вашої групи може не бути
Більшість наших помилок буває через те, що назви й опису групи часто просто замало. Річ не в розумі моделі й не в її потужності. Ми проводили різні експерименти, й навіть дуже сильні моделі не допомагають, якщо місто ніде не вказане, ні в назві, ні в описі. Тому такі групи часто не потрапляють у каталог.
Адміністратори нерідко не заповнюють опис, не дають групі нормальної назви. Звичайна людина таку групу пошуком Telegram теж не знайде. Назва, опис та юзернейм для нас головне, з чого ми робимо висновок про групу. Якщо там немає нічого, крім одного абстрактного слова, сленгу чи незрозумілих символів, група перевірок не пройде. Часто в таких випадках навіть людина не змогла б сказати, що це за група та для кого вона. Згодом ми підготуємо поради для адміністраторів, як назвати й описати групу, щоб її легше знаходили пошук Telegram та наш каталог.
Якщо ви не знайшли свою групу, додайте її через форму або напишіть нам. Надіслані групи спершу вручну переглядає адміністрація сайту, бо в надісланих даних може бути що завгодно. На це йде до двох тижнів. Потім група проходить ті самі автоматичні перевірки, що й решта, тож у каталог вона може й не потрапити. Дізнатися, як просувається ваша група, можна, написавши нам на пошту.
Закритих груп у каталозі немає. Відвідувач, який перейде з нашого сайту за посиланням у закриту групу, туди найімовірніше не потрапить. Якщо ви надішлете нам закриту групу, ми збережемо посилання, але такі групи програмно не обробляємо.
Що далі
У каталозі чотири категорії, це спільноти, підтримка, барахолка й вакансії. На сайті працює шосте покоління Meridian, а над сьомим ми вже працюємо. Код швидко росте саме в цьому напрямку. Воно додасть нові категорії, точніше визначатиме, про що група, посилить перевірки й врахує неточності шостого. Ми плануємо суттєво розширити каталог.
Каталог оновлюється поколіннями даних, а кожне нове покоління перевіряє групи заново. Між оновленнями назва чи опис групи в нас можуть трохи відставати від того, що ви побачите в самій групі. Через один-два місяці після збирання каталогу доступність підтвердилася в 97 % груп Telegram, а невелика частина груп з часом закривається. Якщо група закрилася або посилання вже не працює, повідомте нам.