Реалізація AI-виправлення помилок у пошуку мобільного додатку

Мобільна клавіатура — джерело систематичних помилок. Swipe-введення, автозаміна, маленькі клавіші — середня кількість помилок при мобільному введенні в 2–3 рази вища, ніж при десктопному. Кожна п'ята помилка призводить до нульового результату пошуку, і користувач у 70% випадків закриває додаток післ

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Реалізація AI-виправлення помилок у пошуку мобільного додатку
Середній
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    783
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1080
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    598

Мобільна клавіатура — джерело систематичних помилок. Swipe-введення, автозаміна, маленькі клавіші — середня кількість помилок при мобільному введенні в 2–3 рази вища, ніж при десктопному. Кожна п'ята помилка призводить до нульового результату пошуку, і користувач у 70% випадків закриває додаток після цього. Ми, як команда мобільних розробників з 5+ річним досвідом, щодня стикаємося з цією проблемою. Наші інженери, сертифіковані в AWS та Kubernetes, впровадили AI-виправлення помилок у 30+ проектах, знижуючи zero-result rate до 2% і збільшуючи конверсію пошуку на 9%. Наше рішення справляється з навантаженням понад 1000 запитів/сек і обробляє помилки за мілісекунди. Вартість базового впровадження — від 150 000 грн. Зв'яжіться з нами для безкоштовного аудиту ваших пошукових логів.

Типи помилок та підходи до виправлення

Помилки в мобільному введенні поділяються на три категорії, і для кожної потрібен свій інструмент:

  • Помилки (transposition, deletion, substitution) — «кросівки» замість «кросівки». Обробляються алгоритмами редакційної відстані: Levenshtein (O(n²) складність), Damerau-Levenshtein (враховує транспозицію сусідніх символів, що типово для мобіля). Edit distance вимірює кількість символьних операцій.
  • Фонетичні помилки — користувач пише як чує: «найк» → «nike», «адідас» → «adidas». Для російської мови: метафонний алгоритм або спеціалізований phonetic encoder під кирилицю.
  • Транслітерація — «krossovki», «кросівки», «crossovki» повинні давати однаковий результат. Стандартні транслітераційні таблиці + нормалізація перед індексацією.
Метод Швидкість Точність Складність впровадження
Levenshtein O(n²) Середня (precision ~70%, recall ~60%) Низька
SymSpell O(1) lookup Висока (precision ~85%, recall ~90%) Середня
ES fuzzy + jaro_winkler O(log n) Низька (без контексту) Низька (вбудований)
SymSpell + N-gram LM O(1) + O(m) Дуже висока (precision ~95%, recall ~97%) Висока

AI-виправлення помилок: SymSpell vs Levenshtein

Для продакшну при > 1000 запитів/сек стандартний Levenshtein не підходить через O(n²) складність. SymSpell (Symmetric Delete) попередньо обчислює всі можливі видалення до максимальної edit distance та зберігає в хеш-таблиці. Час пошуку — O(1) для більшості запитів. Як це виглядає на практиці:

from symspellpy import SymSpell, Verbosity sym_spell = SymSpell(max_dictionary_edit_distance=2, prefix_length=7) sym_spell.load_dictionary("ru_frequency_dict.txt", term_index=0, count_index=1) def correct_query(query: str) -> str: suggestions = sym_spell.lookup_compound( query, max_edit_distance=2, transfer_casing=True ) if suggestions and suggestions[0].distance > 0: return suggestions[0].term return query 

Частотний словник для російської мови будуємо з пошукових логів додатку — це важливо: «шкіряний ремінь» буде в топі частотності саме в контексті вашого домену, а не «шкіряна куртка» з універсального словника Яндексу. SymSpell + N-gram LM дає зниження zero-result rate в 4-6 разів порівняно з ES fuzzy.

Як контекстна корекція покращує пошук?

SymSpell виправляє кожне слово незалежно. «кросівки адідас» виправить обидва слова правильно. Але «біліє кросівки» — SymSpell може запропонувати «білі» або «біліше», не знаючи, який варіант граматично коректний в контексті. N-gram language model на пошукових логах допомагає вибрати правильний варіант: P("білі кросівки") >> P("біліше кросівки").

Без контекстної моделі ви ризикуєте запропонувати користувачеві невірний варіант, який все одно не дасть результатів. На практиці це збільшує zero-result rate на 5-7%. У наших проектах ми використовуємо N-gram LM з вікном 3 токенів, навчену на логах конкретного додатку. Це дає приріст точності на 15-20%. Економія на операційній підтримці пошуку може досягати 2 000 000 грн на рік для додатків з високим трафіком.

Elasticsearch: spell correction з коробки та його обмеження

ES надає term suggester з fuzzy matching. Працює, але:

  • шукає найближчі терміни з індексу за edit distance — не враховує контекст запиту
  • слабо працює для коротких токенів (< 4 символів) через кількість варіантів з ed=1
  • немає врахування частотності: «найки» (помилка) і «найки» (брендовий термін) отримують однаковий пріоритет
# ES term suggester — базовий рівень response = await es.search( index="products", body={ "suggest": { "spell_suggest": { "text": query, "term": { "field": "title", "suggest_mode": "missing", # тільки якщо термін не знайдено "max_edits": 2, "min_word_length": 4, "string_distance": "jaro_winkler" } } } } ) 

jaro_winkler краще підходить для коротких рядків, ніж levenshtein — він надає більшу вагу збігам на початку рядка.

Як ми це робимо: кейс з практики

Для клієнта — інтернет-магазину взуття з каталогом 50 000 товарів і 200 000 активних користувачів — ми впровадили зв'язку SymSpell + N-gram LM. Вихідний zero-result rate був 12%, після впровадження він знизився до 2.3%. Ключові кроки:

  1. Зібрали 2 млн пошукових запитів за 3 місяці, очистили від ботів.
  2. Побудували частотний словник та N-gram LM (триграми).
  3. Налаштували fallback: якщо SymSpell дає кілька варіантів, обираємо той, що максимізує ймовірність за LM.
  4. На клієнті додали UX-компонент з можливістю відкату до оригінального запиту.

Результат: користувачі приймають виправлення у 85% випадків, конверсія пошуку зросла на 9%, а операційні витрати на підтримку пошуку знизилися на 30%.

Деталі налаштування SymSpell для російської мови

Для побудови частотного словника ми використовуємо лише релевантні запити з логів, виключаючи ботів та тестові сесії. Мінімальна частота входження слова — 3. Для фонетичних помилок застосовуємо метафонний encoder, адаптований під кирилицю. Словник містить близько 200 000 унікальних слів.

Що входить в роботу

  • Аналіз логів та побудова частотного словника на основі ваших даних
  • Розробка та налаштування SymSpell + N-gram LM під специфіку вашого домену
  • Інтеграція в search API (REST або GraphQL) з урахуванням поточної архітектури
  • Мобільні компоненти (Android Compose, iOS SwiftUI) з UX-паттерном відкату
  • Документація по експлуатації та моніторинг ключових метрик
  • Код та доступи до репозиторію з CI/CD
  • Підтримка протягом 1 місяця після деплою

Мобільна інтеграція: UX виправлення

// Android: відображення виправлення з можливістю скасування @Composable fun SearchResultsHeader( originalQuery: String, correctedQuery: String?, onRevertToOriginal: () -> Unit ) { if (correctedQuery != null && correctedQuery != originalQuery) { Row( modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp), verticalAlignment = Alignment.CenterVertically ) { Text( text = buildAnnotatedString { append("Результати для: ") withStyle(SpanStyle(fontWeight = FontWeight.Bold)) { append(correctedQuery) } } ) Spacer(modifier = Modifier.weight(1f)) TextButton(onClick = onRevertToOriginal) { Text("Шукати «$originalQuery»") } } } } 

Паттерн «ми виправили — але ви можете повернути оригінал» — стандарт індустрії. Не нав'язуйте виправлення без escape hatch.

// iOS: аналогічний підхід через SwiftUI struct CorrectionNoticeView: View { let original: String let corrected: String let onRevert: () -> Void var body: some View { HStack { Text("Показуємо результати для «\(corrected)»") .font(.subheadline) Spacer() Button("Шукати «\(original)»", action: onRevert) .font(.subheadline) } .padding(.horizontal) .padding(.vertical, 6) .background(Color(.systemGray6)) } } 

Процес роботи та терміни

  1. Аналітика — збір та очищення пошукових логів, визначення частотності та типових помилок (1-2 дні).
  2. Проектування — вибір стеку (SymSpell, N-gram LM, fallback), налаштування словників (1-2 дні).
  3. Реалізація AI-виправлення помилок у пошуку мобільного додатку — інтеграція корекції в search API, написання клієнтських компонентів (iOS/Android) — 2-5 днів.
  4. Тестування — A/B тест на 10% трафіку, порівняння zero-result rate та метрик юзабіліті (2-3 дні).
  5. Деплой — поетапний rollout з моніторингом (1-2 дні).

Орієнтовні терміни: ES fuzzy + SymSpell з готовим словником — 2-4 дні; з кастомним словником та N-gram LM — 1-2 тижні. Детальний план складаємо після аудиту ваших даних. Замовте впровадження AI-виправлення помилок.

Як вибрати підходящий алгоритм?

Якщо трафік менше 100 запитів/сек і не критична точність — достатньо ES fuzzy. Для високих навантажень і вимог до якості обирайте SymSpell + N-gram LM. Нижче порівняльна таблиця ефективності різних підходів:

Метрика ES fuzzy тільки SymSpell SymSpell + N-gram LM
Zero-result rate 8-12% 4-6% 2-3%
Час відповіді (p95) < 20 мс < 5 мс < 10 мс
Частка прийнятих виправлень 50-60% 70-80% 80-90%
Складність впровадження Низька Середня Висока

Ми допоможемо визначитися: зв'яжіться з нами для безкоштовної оцінки вашого проекту. Досвід нашої команди — понад 30 успішних інтеграцій пошукових систем у мобільних додатках. Ми гарантуємо зниження zero-result rate до 3% або повертаємо кошти.

Згідно з Human Interface Guidelines від Apple, пошук повинен бути стійким до помилок і пропонувати релевантні результати (розділ «Search»).