Один клиент пишет «o'zbekcha», другой — «ozbekcha», третий — «ўзбекча», а четвёртый, у которого на телефоне только русская раскладка, — «узбекча». Для человека это одно слово. Для бота — четыре разных строки, и если хотя бы одна часть системы сравнивает строки буквально, клиент получит «товар не найден» или попадёт в CRM дважды. В этой статье разберём, где именно двойная письменность ломает автоматизацию, как устроить слой нормализации текста, какую письменность выбирать для ответа и как проверить всё это до запуска.
Модель понимает — система вокруг неё нет
Современные языковые модели читают узбекский и в латинице, и в кириллице, и даже в «латинице без апострофов». Если бот целиком состоит из одной модели, которая просто отвечает на вопросы, проблем с письменностью почти не будет. Подробнее о том, где модели на узбекском сильны и слабы в целом, — в статье «ИИ на узбекском языке: что умеют модели».
Но рабочий бот — это не только модель. Вокруг неё стоят детерминированные части, которые сравнивают текст буквально:
- поиск по каталогу и базе знаний — по ключевым словам или по векторам;
- триггеры и меню — «если сообщение содержит „narx“, показать прайс»;
- CRM — поиск дубликатов по имени, адресу, названию компании;
- аналитика — частотность тем и запросов, отчёты по обращениям.
Именно здесь «Toshkent», «Tashkent» и «Тошкент» превращаются в три разных города, а «g'isht», «gʻisht» и «g`isht» — в три разных товара. Ошибка тихая: никто не видит, что поиск ничего не нашёл, бот просто отвечает «уточните, пожалуйста».
Какие варианты написания встречаются на самом деле
Официальный алфавит Узбекистана — латиница, но кириллица остаётся привычной для многих взрослых клиентов, в документах и на вывесках. В переписке встречаются как минимум шесть вариантов одного и того же слова:
| Вариант | Пример | Откуда берётся |
|---|---|---|
| Латиница по стандарту | oʻzbek, gʻisht | Узбекская раскладка, официальные тексты |
| Латиница с обычным апострофом | o'zbek | Самый частый вариант в мессенджерах |
| Латиница с другими знаками | o`zbek, o’zbek | Разные клавиатуры и автозамена на телефоне |
| Латиница без апострофа | ozbek, gisht | Спешка, лень переключать раскладку |
| Полная узбекская кириллица | ўзбек, ғишт, қовун | Узбекская кириллическая раскладка |
| «Русская» кириллица | узбек, гишт, ковун | Нет букв ў, қ, ғ, ҳ — их заменяют на у, к, г, х |
К этому добавляются русские слова внутри узбекской фразы («zakaz qilmoqchiman»), транслит русского латиницей («dostavka bormi?») и редкий, но неприятный случай: кириллическая «о» или «а» внутри латинского слова. Визуально не отличить, а для поиска это другой символ.
Слой нормализации: что делать до поиска
Решение — не учить каждую часть системы всем вариантам, а привести текст к одной форме до того, как он попадёт в поиск, триггеры и CRM. Исходное сообщение при этом сохраняется без изменений: модели и человеку лучше видеть то, что написал клиент.
Шаг 1. Унифицировать апострофы
Все варианты знака — ' (прямой апостроф), ` (обратный), ’ (типографский), ʻ и ʼ (стандартные знаки узбекской латиницы) — заменяются одним. Какой выберете, неважно, главное — один везде: в каталоге, в базе знаний и во входящих.
Шаг 2. Перевести кириллицу в латиницу
Направление «кириллица → латиница» надёжнее обратного. Большинство букв переводится однозначно: ў → o', қ → q, ғ → g', ҳ → h, х → x, ш → sh, ч → ch, ё → yo, ю → yu, я → ya. Сложности в нескольких местах:
- е в начале слова и после гласной даёт «ye» («ер» → «yer», «оила» → «oila»), в остальных случаях — «e»;
- ц в русских заимствованиях передают то как «s», то как «ts» — здесь нужен словарь исключений по вашим словам;
- ъ в узбекских словах соответствует знаку ʼ («маъно» → «ma'no»).
Обратное направление ошибается чаще. Латинское «yo'l» — это «йўл», а не «ёл»; «sh» в «Is'hoq» — это не «ш», а «с» и «ҳ». Поэтому для поиска удобнее хранить всё в латинице, а кириллицу использовать только для ответа, если она нужна.
Шаг 3. Сделать «грубый ключ» для поиска
Поверх нормализованного текста строится упрощённая форма: апострофы убраны, «ў/o'» → «o», «ғ/g'» → «g», «қ» → «k», «ҳ» → «h», всё в нижнем регистре. Тогда «Oʻzbekiston», «ozbekiston» и «узбекистон» совпадут. Да, такой ключ иногда склеивает разные слова, поэтому его используют для поиска кандидатов, а окончательный выбор делает модель или точное сравнение.
Шаг 4. Заменить «чужие» символы
Кириллические буквы, похожие на латинские (а, е, о, р, с, х), внутри латинского слова заменяются на латинские. Проверка простая: если в слове смешаны символы двух алфавитов, это почти всегда опечатка раскладки.
Где что работает: таблица для архитектуры бота
| Процесс | Что делает ИИ или код | Что остаётся человеку |
|---|---|---|
| Понять смысл сообщения | Модель читает оригинал в любой письменности | Ничего, кроме разбора спорных случаев из логов |
| Найти товар или ответ в базе | Код нормализует запрос, ищет по грубому ключу, модель выбирает из кандидатов | Ведёт словарь синонимов и названий товаров |
| Записать лид в CRM | Сохраняет оригинал и нормализованную форму имени и адреса, ищет дубли по нормализованной | Решает, объединять ли сомнительные дубли |
| Ответить клиенту | Отвечает в письменности клиента по шаблонам и базе знаний | Утверждает шаблоны в обеих письменностях |
| Отчёты по обращениям | Группирует темы по нормализованному тексту | Делает выводы и меняет сценарии |
Похожим образом устроен наш AI-консультант, который превращает входящие сообщения в структурированные лиды: свободный текст клиента читает модель, а в CRM уходят поля в единой форме.
На какой письменности отвечать
Самое простое правило, которое редко ошибается, — отвечать в той письменности, в которой написал клиент. Если сообщение смешанное или короткое («ok», «rahmat»), смотреть на предыдущие сообщения в диалоге. Если истории нет — отвечать в той письменности, которую вы выбрали для бизнеса по умолчанию.
Пример диалога в Telegram магазина стройматериалов:
Клиент: гишт борми? 500 дона керак, Чилонзорга
Бот: Ассалому алайкум! Ҳа, ғишт омборда бор. 500 дона учун нархни ва Чилонзорга етказиб беришни менежеримиз аниқлаштиради. Қайси турдаги ғишт керак — пишган ғиштми ёки блокми?
Что здесь произошло. Клиент написал «русской» кириллицей без ў и ғ. Нормализатор превратил «гишт» в ключ «gisht», поиск нашёл товар «G'isht pishgan». Бот ответил кириллицей, как клиент, но уже правильной узбекской — с ғ и ҳ. Цену бот не назвал, потому что она зависит от объёма и доставки, и передал этот вопрос человеку, задав уточняющий вопрос.
Две вещи стоит прописать в инструкции модели явно. Первая — не смешивать письменности в одном ответе: латинское название товара внутри кириллического текста допустимо, только если так он называется в каталоге. Вторая — не исправлять клиента и не комментировать его написание.
Чек-лист перед запуском
- Каталог и база знаний приведены к одной латинице с одним видом апострофа, у каждого товара есть варианты названий (бытовые, русские, сокращения).
- Нормализация стоит перед поиском, триггерами и CRM, а оригинал сообщения хранится рядом.
- Есть словарь исключений для транслитерации: названия брендов, районов, улиц, слова с «ц» и «е».
- Правило выбора письменности ответа записано в инструкции и проверено на смешанных сообщениях.
- Шаблоны с ценами, условиями и сроками утверждены человеком в обеих письменностях.
- Собран тестовый набор: одни и те же 20–30 запросов, каждый в 4–6 вариантах написания из таблицы выше. Бот должен находить одно и то же для всех вариантов.
- В логах отмечаются запросы, по которым поиск ничего не нашёл, — их разбирают раз в неделю и пополняют словарь.
Последний пункт важнее, чем кажется: словарь вариантов никогда не бывает полным с первого дня, его наполняют реальные клиенты. Если при этом вы обрабатываете имена, телефоны и адреса, проверьте и требования к хранению данных — об этом статья про закон о персональных данных и ИИ-автоматизацию.
Частые вопросы
Может ли модель сама переводить кириллицу в латиницу, без отдельного кода?
Может, и для разового перевода текста это удобно. Но для поиска и CRM лучше простой предсказуемый код: он работает одинаково на каждом сообщении, быстро и бесплатно. Модель стоит оставить там, где нужно понимание смысла, а не замена букв.
В какой письменности хранить каталог?
В одной, и практичнее в латинице: обратная транслитерация ошибается чаще. Кириллические названия для ответов можно держать отдельным полем, проверенным человеком.
Что делать с голосовыми сообщениями?
Система распознавания речи сама выбирает письменность расшифровки, и не всегда ту, которую вы ожидаете. Расшифровку стоит пропускать через тот же слой нормализации, что и обычный текст.
Нужно ли спрашивать клиента, на какой письменности ему удобнее?
Обычно нет — это лишний шаг в диалоге. Достаточно отвечать так, как пишет клиент. Исключение — рассылки и уведомления: там письменность можно запомнить из первых сообщений и сохранить в карточке клиента.
Другие материалы о том, как автоматизация работает с местной спецификой, — в разделе «Узбекистан». Если хотите, чтобы ваш бот одинаково понимал клиентов в любой письменности, посмотрите, как мы строим ИИ-агентов, или напишите нам. Стоимость зависит от объёма и данных — первый разговор нужен, чтобы её посчитать.