🧠 COMPUTER SCIENCE

Как работает автодополнение и исправление опечаток

Ты пишешь «превед», а телефон вежливо предлагает «привет». Откуда он знает, что ты хотел сказать? Разбираем, как машина читает твои мысли по буквам и почему иногда промахивается.

Ты тыкаешь в экран большими пальцами на бегу, попадаешь мимо половины букв, выходит «првиет каак деал» — а собеседник получает аккуратное «привет, как дела». Кто-то невидимый поправил тебя за доли секунды. Это не магия и не маленький человечек внутри телефона. Это математика, словари и немного статистики. Давай разберём, как машина угадывает, что ты хотел написать.

Сначала надо понять, где ты ошибся

Представь, что ты набрал слово «сабака». Телефон сравнивает его со словами из своего словаря и ищет самое похожее. Но что значит «похожее»? Машине нужна не интуиция, а точная мерка. И такая мерка есть — она называется расстояние Левенштейна, по имени советского математика Владимира Левенштейна.

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

  • заменить одну букву на другую (сабака → собака);
  • вставить недостающую букву (сбака → собака);
  • удалить лишнюю букву (соббака → собака).

Чем меньше правок, тем ближе слова. «Сабака» превращается в «собака» одной заменой — расстояние равно единице. А вот до слова «кошка» путь длинный, поэтому его телефон даже не предложит. Машина просто перебирает кандидатов из словаря и выбирает тех, до кого «рукой подать».

Аналогия: игра в превращение слов

Есть старая головоломка: превратить одно слово в другое, меняя по одной букве за ход, и каждый раз должно получаться настоящее слово. Например, КОТ → КИТ → КИТЕЛЬ. Чем больше ходов нужно, тем дальше слова друг от друга.

Исправление опечаток — это та же игра, только наоборот: телефон видит «сломанное» слово и ищет, какое настоящее слово находится к нему ближе всего по числу ходов.

Только человек играет в эту игру медленно и ради удовольствия, а компьютер прогоняет тысячи слов за миллисекунды. Ему всё равно — он не устаёт и не отвлекается.

Откуда телефон знает, какие слова бывают

Всё это работает, только если у машины есть словарь — список «правильных» слов. Поначалу это был обычный заранее загруженный список, как толстая книга-орфографический справочник внутри телефона. Если слова в словаре нет, оно подчёркивается красным и считается ошибкой — даже если ты написал имя своего кота или название города.

Но современные клавиатуры хитрее. Они учатся у тебя. Каждый раз, когда ты упорно набираешь слово, которого нет в словаре, и не даёшь себя исправить, телефон постепенно добавляет его в свой личный словарик. Поэтому через пару недель он перестаёт спорить с твоим сленгом и именами друзей. По сути, у каждого человека со временем складывается свой персональный словарь.

Угадать следующее слово: тут начинается статистика

Исправлять опечатки — это половина дела. Вторая, куда более впечатляющая половина — это когда ты ещё не дописал фразу, а телефон уже предлагает следующее слово целиком. Набираешь «спасибо за» — и выскакивает «внимание». Откуда?

Здесь работает идея N-грамм. Звучит страшно, но смысл детский: машина запомнила, какие слова часто стоят рядом друг с другом. Если на огромной куче текстов после «спасибо за» чаще всего шло «внимание» или «помощь», то именно их телефон и подсунет. Он не понимает смысла — он просто знает статистику: какое слово обычно идёт за каким.

Это похоже на то, как ты сам можешь закончить за друга предложение, если хорошо его знаешь. Услышал «ну ты прям как…» — и уже догадываешься, что дальше будет что-то про черепаху или улитку. Ты не читаешь мысли, ты просто слышал эту фразу сотню раз. Машина делает ровно то же самое, только её «друг» — это миллиарды страниц текста.

Почему современный Т9 стал таким умным

Старый Т9 на кнопочных телефонах смотрел только на текущее слово и часто выдавал нелепицу. Современное автодополнение — это уже языковые модели, дальние родственники того самого ИИ, про который все говорят. Они учитывают не одно-два соседних слова, а весь контекст фразы.

Благодаря этому система понимает разницу:

  • «я иду к врачу» — здесь нужно одно слово;
  • «я иду к реке» — а здесь совсем другое;
  • и то, и другое начинается одинаково, но по контексту модель выбирает разное продолжение.

Именно поэтому подсказки стали точнее, но иногда и забавно промахиваются: модель угадывает вероятное, а не то, что в голове именно у тебя. Она ставит на самый частый вариант — а ты человек непредсказуемый.

Так что в следующий раз, когда телефон поправит твой «превед» на «привет», знай: внутри только что сработали расстояние Левенштейна, словарь, статистика соседних слов и немного машинного обучения. Никакой магии. Только очень быстрая и очень упорная математика, которая всю жизнь только и делает, что считает, какое слово ты, скорее всего, имел в виду.

#автодополнение#алгоритмы#опечатки#т9#языковые модели
Понравилась статья?
В Telegram-канале — лучшее из журнала и анонсы новых учебников.