Smart Keyboard: як він вирішує, чи міняти слово
Пишете фразу, підводите очі — а там «ghbdsn» замість «привіт». Розкладка лишилася англійською. Стираєте, перемикаєте, набираєте знову. Хто пише двома-трьома мовами, робить це багато разів на день. Тепер це може робити VerbaIDE. Функція називається Smart Keyboard.
Що він робить
Коли слово закінчилося — пробілом, комою, крапкою, — Smart Keyboard на нього дивиться. Якщо воно набране не в тій розкладці, слово замінюється, а розкладка системи перемикається, щоб наступне вийшло правильним. «ghbdsn» стає «привіт», «руддщ» — «hello», а «тыльки», набране на російській розкладці, — «тільки». Ще він виправляє прості одруківки в правильній розкладці: «сьогдні» стає «сьогодні», «відповдь» — «відповідь». І те й інше водночас: «cmjulys», набране на англійській розкладці, — «сьогодні».
Виправив даремно — натисніть ⇧ двічі. Повернуться і слово, і розкладка, а це слово більше ніколи не виправлятиметься. Ще раз ⇧ двічі — виправлення знову на місці.
Правило, з якого почали
Пропущене виправлення коштує вам одного повторного набору. Хибне — дорожче: його треба помітити, а іноді помічаєш, коли повідомлення вже пішло. Тому ще до першого рядка коду ми поставили межу: не більше однієї хибної заміни на 10 000 правильно набраних слів. Усе, що нижче, міряли за нею.
Як він вирішує
Усе відбувається на вашому Mac. Smart Keyboard дивиться на три речі.
Перевірка правопису macOS — той самий словник, що підкреслює слова червоним. Вона відповідає на питання «чи є таке слово». Своїх словників ми в застосунок не кладемо.
Таблиці сполучень із трьох літер. Для кожної мови ми порахували, які трійки літер трапляються на початку, всередині й наприкінці слова і як часто. «ghb» на початку англійського слова майже не буває, а «при» на початку українського — на кожному кроці. Рахували на загальнодоступних фразах проєкту Common Voice. У застосунку лежать лише таблиці, 22–43 КБ на мову, самих фраз там немає.
Списки частих слів — з тих самих фраз: 300 найчастіших коротких слів кожної мови і довгий частотний список, щоб обирати між варіантами виправлення одруківки.
Коротким словам знадобилося своє правило. Перевірка правопису вважає словом майже будь-яку літеру й багато пар на кшталт «cd» чи «bc», тому для однієї-двох літер ми віримо лише спискам частих слів. Одиночну латинську літеру на англійській розкладці Smart Keyboard сам по собі не чіпає ніколи: на перевірці це перетворювало «E», «C», «J» і «R» на кирилицю від 52 до 65 разів на 10 000 слів. Така літера виправляється лише разом із сусіднім словом.
З українською й російською окрема історія. Їхні розкладки різняться лише кількома клавішами: «і» та «ы», «є» та «э», «ї» та «ъ». Вирішують словники, але в російського словника macOS є діри: він може не знати «продавцы», а український водночас знає «продавці». Тому самої відповіді словника мало — з нею мають погодитися й таблиці літер. Слова, які є в обох мовах, як-от «ті» й «ты», вирішують сусіди, і потрібно два таких слова. З одним на змішаному українсько-російському тексті виходило 15 хибних замін на 10 000 слів.
Для одруківки варіанти — підказки перевірки правопису й слова, що відрізняються від набраного одним промахом: одна літера не та, пропущена чи зайва, або дві літери стоять місцями. Свої варіанти йдуть у рахунок, лише якщо вони є в частотному списку. Перемагає найчастіший — і лише якщо він більше схожий на мову, ніж те, що ви набрали.
Як ми міряли
Частину фраз Common Voice ми відклали й нічого з них не будували: 111 373 правильно набрані слова англійською, російською й українською, плюс ті самі слова в чужій розкладці. Перевірка набирає їх клавіша за клавішею й питає справжню перевірку правопису macOS.
- Чужа розкладка. Зі слів у п’ять літер і довших виправлено 99,2% (українських — 96,4%). Короткі слова складніші: з дволітерних — 65–78%.
- Хибні заміни. 10 із 111 373 правильних слів, 0,9 на 10 000. Усі десять — слова, у які перевірка навмисно додала одруківку. Правильно написані слова не зачеплено жодного разу.
- Англійське всередині української й російської. «Slack», «PR», «API», «GitHub», «to», «is» і ще 16 слів, вставлених в українські й російські фрази: 18 400 вставок, жодної заміни.
- Одруківки. На правильному тексті: 4 хибні заміни на 50 562 англійські слова, 3 на 39 664 російські й 1 на 15 760 українських. Виправлено приблизно 83% англійських одруківок, 66% російських і 40% українських.
Потім ми перевірили правило одруківок на тексті, за яким його не підбирали: рядки інтерфейсу самого застосунку, фрази нашого перевірного набору для диктування і наші російськомовні робочі записи. Англійська й українська — жодної хибної заміни. Російська — одна на 22 756 слів: «нодах» стало «годах».
Що ми вимкнули, бо воно шкодило
Суддя для одруківок. У VerbaIDE є маленька локальна модель — наша дотренована Qwen3-1.7B, яка вже перевіряє терміни зі словника в диктуванні. Ми дали їй переглянути виправлену одруківку, коли набрано наступне слово. Псувала вона частіше, ніж рятувала: у російській зіпсувала 67 слів і врятувала 23, в англійській — 58 і 53, в українській — 8 і 2. А до того, обираючи між кількома варіантами одруківки, вона помилялася в 23–29% питань. Вимкнено і те, і те.
Для слів у чужій розкладці, де таблиці літер вагаються, та сама модель лишилася. Там вона підняла частку виправлених довгих слів з 97,7% до 99,2% (українських — з 90,6% до 96,4%) ціною чотирьох зайвих хибних замін на 111 373 слова, і всі чотири — на словах із навмисною одруківкою. 95 відповідей зі 100 вкладаються в 34 мілісекунди.
Одиночна «э», що ставала «є». На російській розкладці «э» стоїть на клавіші, яка в англійській дає лапки. Англійська фраза, що починалася з лапок не в тій розкладці, отримувала «Є» замість лапок — 20 разів на перевірці. Вимкнено.
Сміливе налаштування одруківок. Воно виправляло 92% російських одруківок, але міняло 8,8 правильного російського слова на 10 000, а на відкладеному російському тексті — 71 слово. Ми взяли суворе: 66% виправлених і менше ніж одна хибна заміна на 10 000.
Що лишається на вашому Mac
Усе. Натискання обробляються на вашому Mac. Для виправлення розкладки в пам’яті обробляється фактичний текст поля до курсора: до початку речення, максимум 16 384 одиниці UTF-16; потім знімок забувається. Останнє виправлення зберігається для скасування. Нічого з набраного не зберігається, не пишеться в журнал і нікуди не надсилається. Smart Keyboard використовує «Універсальний доступ», щоб слухати клавіші й друкувати виправлення, пропускає поля паролів і застосунки-винятки та призупиняє виправлення під час диктування.
Smart Keyboard — платна функція, вона входить у платний пакет і в пробний період на 30 днів. Що він виправляє, чого не чіпає і чого не впіймає — на сторінці Smart Keyboard.