(←) предыдущая запись ; следующая запись (→)

образовательное, размышления

Сейчас на смартфонах многие пользуются свайп-клавиатурами. Ведёшь линию над нужными буквами, а какая-то магия определяет, какие буквы вы на самом деле имели в виду (даже если провели линию не в точности над буквой), а каких не предполагали (хотя линия прошла над ними).

Мне кажется, написать такую клавиатуру — красивая задачка на языковые модели. Я не изучал, как она сделана, но мне кажется логичным промоделировать вероятность генерации линии для конкретного слова. А затем максимизировать правдоподобие вариантов из словаря.
Правдоподобие слова XYZ — это вероятность получить такую линию, как мы получили на практике, при условии что мы писали на экране именно это слово.

Допустим, мы написали пальцем слово «затем». Но мы (т.е. алгоритм дешифрования слов) пока этого не знаем. Всё, что мы видим — это какая-то линия.

Будем перебирать все слова из словаря в поисках того, на которое лучше всего ложится линия.

Предположим, что проверяемое слово — «азбука». Оно начинается на «а». Потому мы знаем, что стартовый участок линии имеет большую вероятность пройти над «а», поменьше — над «п» и совсем маловероятно, что она начнётся в районе «хз» (как проходит реально нарисованная линия слова «затем»).

Мы можем сказать, что правдоподобие слова «азбука» для такой линии пониженное. Контур линии противоречит гипотезе, что линия проходит над словом «азбука». А для слова «затем» правдоподобие велико, то есть наша линия не противоречит ему.

Конечно, на практике перебирать все слова слишком долго. Но концептуальная схеме такая.

———

Эта задача уже решённая, но получившееся решение создаёт проблемы. Ведь клавиатура в конечном итоге возвращает не линию, а конкретное слово. Могло получиться так, что алгоритм декодирования ошибся. Вместо словосочетания «глупая опечатка» в поисковой строке вы написали «глубокая оснастка». Теперь яндекс уверен, что вы не офисный работник, а рыбак. Если бы поисковик видел линию, у него было бы больше возможностей сделать предположения о вашем запросе.

Я не знаю, насколько технически реализуемо отправлять помимо текста запроса ещё и информацию о том, как этот текст был получен.
Но даже в отсутствие такой возможности, поисковик кое-что предпринять может.

Когда принимающая сторона смотрит на текст, она может читать его не напрямую, а пропуская через модель опечаток. Она делает примерно то же самое, что мы делали раньше. Для увиденного слова «оснастка» прикидывает правдоподобие при условии, что исходное слово было «опечатка». И заключает, что такое произойти вполне могло.

Я не знаю, есть ли у поисковиков модель опечаток на свайп-клавиатуры (кто знает, расскажите). Но модель опечаток обычной клавиатуры они точно разрабатывали.