Анализ звонков в колл-центры

    Для проверки технологии я записал несколько обращений в разные колл-центры. Дальше они будут фигурировать под кодовыми названиями: water, mosenergo, rigla, transaero и worldclass.


    Первым делом нужно разбить запись на реплики. Как оказалось, этот процесс называется диаризацией. Есть несколько готовых инструментов: LIUM, ALIZE, SDT. Я выбрал LIUM, потому что он выглядел солиднее остальных. Написал небольшую обёртку и разметил свои треки. Качество получилось нормальное, на картинке показана разметка для water:
    • Зелёным отмечена эталонная разметка, синим — автоматическая, красным — ошибки.
    • SO — это оператор, S1 — я. Видно, что короткие ответы S1 часто подклеиваются к S0. Это не очень страшно, обычно там ничего содержательного нет, только фразы вида: «да», «верно», «нет», «хорошо».
    • Более или менее корректно выделяются паузы в разговоре.

    mosenergo, rigla, transaero и worldclass.
    mosenergo

    rigla

    transaero

    worldclass


    Для расшифровки реплик я использовал яндексовый SpeechKit. Чтобы оценить ошибку работы их API, я сначала скормил туда реплики, полученные по эталонной ручной разметке. Ошибки значительные, но жить можно. На картинке показана расшифровка для water:
    • Слева текст, который пришёл от API, справа — то, что на самом деле было в записи. Всё что не попало в пересечение подчёркнуто красным.
    • Ошибки слева — это слова, которых в записи на самом деле не было. Мне кажется, они нестрашные потому что часто совсем выбиваются из контекста разговора: «даже смерть», «лопаточные кольца», «до скольких женщин», «ленина седого», «вечер вашей страны», и к ошибкам второго рода не приведут.
    • Ошибки в правой колонке — это слова, которые потерялись при расшифорвке. Их 30%-50%. Это, конечно, печально.





    mosenergo, rigla, transaero и worldclass.
    mosenergo

    rigla

    transaero

    worldclass



    Потом я расшифровал реплики, полученные автоматически. Убедился, что ошибки сильно не изменились, представил себя владельцем колл-центра и попробовал извлечь какую-то пользу:
    1. Попробовал оценить успешность обращений по ключевым словам:
      show_query_results(query_transcripts(u'спасибо большое пожалуйста', transcripts, top=10))

      show_query_results(query_transcripts(u'не получается не могу нет', transcripts, top=5))

      show_query_results(query_transcripts(u'заявку оформил', transcripts))

      show_query_results(query_transcripts(u'будем ждать', transcripts))

    2. Проверил скилы операторов по впариванию услуг:
      show_query_results(query_transcripts(u'у нас есть скидки', transcripts))

      show_query_results(query_transcripts(u'рекомендую заключить договор на техническое обслуживание', transcripts))

      show_query_results(query_transcripts(u'мы предлагаем замену труб и радиаторов на выгодных условиях', transcripts))

      show_query_results(query_transcripts(u'завтра завтрашний день', transcripts))

      show_query_results(query_transcripts(u'за выезд мастера никто денег не возьмёт', transcripts))

      show_query_results(query_transcripts(u'в любое время когда вам удобно', transcripts))

      show_query_results(query_transcripts(u'приходите поговорим о ценах акциях подберем выгодный вариант', transcripts))

      show_query_results(query_transcripts(u'у нас принято встречать гостей', transcripts))

      show_query_results(query_transcripts(u'скажите вашу фамилию и телефон', transcripts))

    3. Попробовал определить цель звонка:
      show_query_results(query_transcripts(u'хотел бы оформить узнать сколько стоит сколько платить подключить посмотреть посещать уточнить наличие', transcripts, top=5))

      show_query_results(query_transcripts(u'горные лыжи', transcripts))



    По-моему, технология жизнеспособная и может принести некоторую пользу.
    Поделиться публикацией
    Комментарии 2
      0
      А можно подробнее — где хранили, чем обрабатывали?

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое