Фильтр чата теперь говорит на всех наших двенадцати языках
У него был один словарь, и он был английским. Поэтому он не ловил ничего из брани на остальных одиннадцати языках — и при этом отклонял совершенно обычные слова, в том числе французское «три» в игре, где бросают кубики.

Простыми словами
Четверть всего, что игроки набирают в opolyx, — не по-английски, и до сих пор фильтр чата не мог прочитать из этого ничего. У него был один большой английский список слов, а значит, брань на русском, китайском, арабском, испанском или немецком проходила нетронутой. Это та половина, которую ожидаешь. Неожиданная половина в том, что тот же список исправно отклонял слова, ничуть не грубые: французское слово «три» — в игре, где бросают кубики; немецкое слово со значением «богатый» в игре про недвижимость; и английское название шахматной фигуры. Французский игрок не мог набрать в чате число три.
Теперь есть словарь для каждого языка, на котором работает сайт, плюс украинский, и каждый написан под то, как этот язык действительно устроен, а не переведён с английского списка. Русский склоняется и спрягается, значит правило должно попадать в корень вместе с окончаниями. В китайском между словами нет пробелов, значит правило должно заглядывать внутрь предложения. И сообщение, которое вы получаете при отказе, теперь тоже переведено: раньше оно было английским — на сайте с двенадцатью языками, так что человек, которому труднее всего было его понять, как раз чаще всего его и получал.
Для тех, кому интересны детали
Труднее всего было доказать, что хоть что-то из этого работает, и причину стоит проговорить прямо: фильтр модерации нельзя проверить по его собственному логу чата. Сообщение, которое старый фильтр отклонил, никогда не сохранялось, так что в логе лежит только то, что прошло, — а для языка, на котором ещё нет игроков, там нет вообще ничего. Проверять по нему значило бы мерить выживших и называть это покрытием. Поэтому словари проверяются по нашим же переведённым текстам: каждая страница сайта на каждом языке, написанная нами и чистая по построению. Любое слово, на которое фильтр там срабатывает, — ложное срабатывание по определению, без всякой вкусовщины.
| Что он делал | Количество |
|---|---|
| Поймано бранных сообщений за всё время | 0 |
| Бранных сообщений он теперь видит | 113 |
| Наших чистых страниц пометил ошибочно | 40 |
Ники весят больше сообщений, а их не фильтровали вовсе. Сообщение уезжает вверх; ник печатается рядом с каждым вашим ходом и попадает в те самые клипы, которые сайт выкладывает на YouTube, в Instagram и TikTok. Теперь их проверяют — но намеренно не по большому списку: как голые подстроки он отклоняет «Classic» и «Cassandra». Если наивно прогнать его по двум с половиной тысячам настоящих ников opolyx, подстрочный подход сработает сорок раз, и примерно половина из них — обычные имена: Hassan, Yassin, Phoenix. Выпустить такое значило бы сообщить этим людям, что их имена непристойны.
Китайский случай нагляднее всего объясняет, почему английский список нельзя было просто перевести. Старое сопоставление сравнивало целые слова, разделённые пробелами, — вполне разумная конструкция, ведь именно она не даёт отклонить «assassin» из-за грубой подстроки внутри. Но в китайском слова пробелами не разделяются, поэтому целое китайское предложение приходит как один огромный токен, и ни одна запись ни в каком списке слов внутри него никогда не совпадёт. Дело не в том, что фильтр плохо знал китайский, — он структурно не мог его увидеть.
