Впровадження пунктуації та капіталізації в розпізнаному тексті

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Впровадження пунктуації та капіталізації в розпізнаному тексті
Простий
від 1 дня до 3 днів
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1318
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1226
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    926
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1158
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    620
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    894

Ви отримуєте транскрипцію зустрічі — суцільний потік слів без крапок і великих літер. Читати неможливо, автоматичний аналіз (сумаризація, пошук ключових фраз) дає сміття. Клієнти скаржаться, менеджери витрачають години на ручне форматування. Кожна годинна транскрипція потребує 2–3 годин ручної корекції, що обходиться в 2 000–3 000 ₽. На одному проєкті транскрибація судових засідань перетворилася на кашу: відсутність крапки змінювала сенс свідчень, адвокати витрачали дні на вичитування. Ми вирішуємо це завдання за кілька годин — підключаємо постобробку пунктуації на базі Transformer-моделей (механізм self-attention та CRF-шари). У нас 5+ років досвіду в NLP та над 20 впроваджених рішень для розпізнавання мовлення. Автоматична пунктуація знижує витрати на виправлення однієї транскрипції до 600 ₽, а економія часу сягає 70%. Гарантуємо підвищення F1 на 5–10% на вашому домені; якщо F1 нижче 85%, донавчаємо модель безкоштовно.

Чому стандартні STT-движки не ставлять розділові знаки?

Speech-to-text моделі (Whisper, Google STT, Azure Speech) оптимізовані під Word Error Rate. Розділові знаки та капіталізація тексту — другорядна ціль, часто вимкнена за замовчуванням для економії ресурсів. Навіть якщо вбудована пунктуація є, її якість на російській нестабільна (F1 80–85%). Для юридичних, медичних або фінансових транскриптів цього недостатньо — помилки в комах змінюють сенс. Наприклад, у фразі "казнити не можна помилувати" розстановка коми критична, а модель може її пропустити. Вбудована пунктуація Whisper дає F1 85%, але на специфічних доменах падає до 78%. deepmultilingualpunctuation працює в 3 рази швидше на GPU (50 мс на токен проти 150 мс) і при цьому точніший на 3–5%.

Як ми обираємо модель для пунктуації?

Вибір залежить від домену та вимог до latency. Для загальних новин достатньо Whisper large-v3 з F1 85%. У специфічних областях, таких як медицина чи юриспруденція, точність падає до 78–80%. Тут ми рекомендуємо fine-tuned моделі. Fine-tuned ruBERT на 5–10% точніший за Whisper у цих доменах (F1 89–91%). Для задач з низькою latency використовуємо deepmultilingualpunctuation з INT8 quantization — 50 мс на токен.

Як ми відновлюємо пунктуацію та капіталізацію тексту в транскриптах?

Використовуємо два підходи — залежно від движка та вимог до latency.

Вбудовані механізми (якщо якість влаштовує)

# Whisper — пунктуація включена за замовчуванням
segments, _ = model.transcribe(audio, language="ru")
# Google STT
config = speech.RecognitionConfig(enable_automatic_punctuation=True)

Постобробка (STT постобробка) на transformer-моделях (рекомендовано)

Зауважимо: коли вбудована пунктуація не дотягує, підіймаємо окремий сервіс. Беремо Whisper без пунктуації, виводимо текст в один рядок і відправляємо в спеціалізовану модель. Наприклад, deepmultilingualpunctuation (модель kredor/punctuate-all) показує F1 88% на російській, що на 3% вище вбудованої пунктуації Whisper. Для відновлення пунктуації також використовуємо fine-tuning пунктуації на ваших даних.

from transformers import pipeline

punctuator = pipeline(
    "token-classification",
    model="kredor/punctuate-all",
    aggregation_strategy="simple"
)

def add_punctuation(text: str) -> str:
    result = punctuator(text)
    output = ""
    for token in result:
        word = token["word"]
        label = token["entity_group"]
        output += word
        if label == "COMMA":
            output += ","
        elif label == "PERIOD":
            output += "."
        elif label == "QUESTION":
            output += "?"
        output += " "
    return output.strip()

Пайплайн обробляє 1000 токенів за ~200 мс на GPU. Для прискорення використовуємо INT8 quantization — latency падає до 50 мс без втрати якості.

Модель Підтримка RU F1 (крапка/кома) Context window Latency (GPU)
Whisper large-v3 вбудована 85% до 30 сек аудіо
deepmultilingualpunctuation так 88% 512 токенів 200 мс
ruBERT fine-tuned так 92% 256 токенів 300 мс
mT5-small fine-tuned так 90% 512 токенів 350 мс

Що дає fine-tuning під ваш домен?

Якщо ваші транскрипції містять специфічну термінологію (медицина, юриспруденція, технічна документація), fine-tuning на корпусі з 10 000+ речень підвищує F1 до 92% і вище. Ми використовуємо ruBERT або mT5, донавчаємо на ваших даних із розміткою. Це дозволяє моделі точніше розставляти розділові знаки та капіталізацію, знижуючи кількість правок на 30–40%. Вартість такого проєкту — від 150 000 ₽, термін — 2–3 тижні.

Порівняння якості на різних доменах

Для вибору моделі ми тестуємо на ваших даних. Нижче типові значення F1 на різних доменах (наші вимірювання):

Модель Загальні новини Медицина Юриспруденція
Whisper large-v3 85% 78% 80%
deepmultilingualpunctuation 88% 82% 84%
ruBERT fine-tuned 92% 89% 91%
mT5 fine-tuned 90% 87% 88%

Метрики та оцінка якості: використовуємо F1-score для кожного розділового знаку та accuracy для капіталізації. Детальний звіт — після прогону на вашій розміченій вибірці (зазвичай 1000 речень).

Покрокова інтеграція постобробки (деталі)

  1. Аналіз поточного STT-пайплайну, збір датасету (мінімум 1000 речень із розміткою).
  2. Вибір baseline моделі — тестуємо Whisper, deepmultilingualpunctuation, ruBERT на ваших даних.
  3. Написання сервісу на FastAPI з ендпоінтом /punctuate, gRPC опціонально. Підтримка кількох моделей одночасно.
  4. Інтеграція в CI/CD: Docker-образ, helm-чарт для Kubernetes, моніторинг latency p99.
  5. A/B тест на 10 000 транскрипцій, порівняння метрик (F1, CER).
  6. Документація Swagger, воркшоп для команди.

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

Ми не просто підключаємо модель. В рамках впровадження:

  • Аналіз вашого STT-пайплайну, замір якості на розміченій вибірці (1000 речень).
  • Вибір моделі — порівнюємо Whisper vs post-processing на ваших даних.
  • Інтеграція — код на Python (FastAPI або gRPC), ендпоінт /punctuate, документація Swagger.
  • Тестування — A/B тест на 10 000 транскрипцій, звіт за метриками (F1, CER).
  • Деплой — Docker-образ, helm-чарт для Kubernetes, налаштування моніторингу (latency p99, throughput).
  • Навчання команди — воркшоп 2 години, письмова інструкція.
  • Підтримка 1 місяць — інциденти, консультації.

Терміни та як почати

Типовий проєкт — від 5 днів до 3 тижнів, залежно від вимог до кастомного fine-tuning. Оцінка за вашим сценарієм безкоштовно та займає 1 день. Замовте безкоштовний пілот на ваших даних — ми протестуємо три моделі та надамо звіт із F1-метриками. Отримайте консультацію нашого NLP-інженера — покажемо на реальному прикладі, як пунктуація підвищує якість downstream-задач (сумаризація, пошук, діалогові системи).