Когда собираешься строить систему обработки обращений граждан, неплохо бы автоматизировать и работу с текстами. Часть операций по атрибутированию, классификации и аннотированию обращений можно переложить на машину. Но как определить, какие задачи автоматизации поддаются хорошо, а какие - не очень? В поисках ответа на этот вопрос мы попытались понять, что может предложить рынок с точки зрения продуктов по интеллектуальной обработке текста, которые можно было бы интегрировать в систему документооборота white-label и провели небольшое исследование на реальных данных.
Задачи и цели исследования
Основные вопросы, на которые хотелось получить ответ, это:
Как устроен ландшафт интеллектуальной обработки текста? Нас интересовали прежде всего решения, либо зарегистрированные в реестре отечественного ПО, либо построенные на базе открытых библиотек.
Каково состояние коммерческих продуктов? На какое качество можно рассчитывать при минимальной настройке применительно к специфическим текстам?
Насколько велик разрыв между лидерами рынка и новичками?
Как технологии влияют на результат?
От ответов на эти вопросы зависели требования к NLP в продукте: те точки автоматизации обработки обращений граждан, которые мы для себя наметили, исходя из понимания бизнес-процессов, должны были быть модифицированы, конкретизированы или, возможно, отброшены, если существующие технологии не позволяют решать бизнес-задачу с небессмысленным качеством.
Мы не преследовали цель устроить соревнование и построить рейтинг продуктов. Наша задача выглядела следующим образом:
Определить применимость технологий NLP для решения бизнес-задачи.
Понять, на какое качество можно рассчитывать из коробки и какие усилия нужны, чтобы улучшить качество в дальнейшем.
Выделить решения и подходы, дающие приемлемое качество для решения конкретной бизнес-задачи.
Кто участвовал
В исследовании участвовало 11 коммерческих компаний, имеющих различный опыт в NLP. Среди участников были: производители ПО для новостной аналитики и машинного перевода с более чем 20 летним стажем; компании, специализирующиеся в смежных областях, решившие расширить сферу компетенций; стартапы-энтузиасты машинного обучения и пара компаний с научно-исследовательским профилем. Подходы охватывали весь диапазон от чистого rule-based до различных вариантов машинного обучения. Варианты архитектур - от микросервисной до с++ монолита (не обошлось и без скриптов на Python, само собой).
В целом было ощущение, что мы собираемся открыть сеть дарк-кухонь и исследуем инструменты по нарезке овощей для салатов: пару наборов ножей, несколько вариантов ручных и электрических шинковок, производственные комбайны и слегка переделанную соковыжималку.
Данные
В качестве датасета хотелось использовать максимально близкие к жизни данные, так как обращения довольно сильно отличаются как от википедийных, так и от новостных текстов, представленных в корпусах (про классическую литературу говорить не будем): авторами обращений становятся люди с самым разным уровнем грамотности и способностью формулировать суть обращения. Если сравнивать с соцсетями, где используется разговорная лексика, тут тоже свои тонкости: авторы обращений стараются использовать канцелярит (как они его понимают), и в текстах много именованных сущностей - так как пишут об объектах или событиях окружающего мира. Кроме того, у любого обращения есть цель - получить какой-то ответ от чиновников (разъяснения либо действия).
К счастью, удалось получить деперсонализированный массив реальных обращений одного из регионов за период февраль – март 2020 года. Всего в исходной выборке было около 1000 обращений, в том числе отсканированные рукописные документы, открытки с благодарностями и поздравления с праздниками. Рукописные тексты были отброшены, также были исключены слишком короткие и слишком длинные тексты. В итоге получилась выборка из 820 обращений.
Шаблоны обращений имели структурированную «шапку» с метаданными и содержательную часть обращения – текст в произвольной форме, часто со значительным числом орфографических и грамматических ошибок. Тексты обращений содержали по большей части жалобы на плохую работу коммунальных служб, транспорта, системы здравоохранения, образовательных учреждений и, конечно, просьбы о помощи.
Задача
Каждый участник получал одинаковый набор текстов и должен был выполнить следующие задания:
Задача уровня 0: выполнить разбор шаблона: разделить шапку и содержательную часть, а затем выполнить атрибутирование обращений (добыть номер обращения; адресата и дату подачи обращения).
Задача уровня 1: в содержательной части обращения выделить именованные сущности: персоны, локации, организации.
Задача уровня 2: для содержательной части обращения определить тематику и аннотировать текст набором тэгов.
Разбор шаблона и атрибутирование были нужны того, чтобы понять, есть ли инструменты по разбору шаблона, и заодно оценить общий подход участников к задаче: в условиях было указано, что оценка будет производиться по F1, а выделять сущности нужно только из тела обращения, игнорируя шапку. Задание прочитали внимательно не все: кто-то выделил сущности из всего документа вместе с шапкой, а кто-то проигнорировал то, что в данных было два шаблона - один более распространенный, второй менее, и не стали разбирать более редкий шаблон, потеряв в полноте.
Выделение именованных сущностей (Named-entity recognition, NER) в качестве тестового задания было выбрано как одна из самых популярных задач интеллектуальной обработки текста. Кроме того она входит в базовый функционал большинства инструментов компьютерного анализа текста, представленных на рынке, качественное её решение требует целого ряда технологий и компетенций и на базе нее можно решать многие бизнес-задачи, так что она имеет высокую прикладную применимость.
Для выполнения Задачи 1 необходимо было верно:
определить границы объектов – найти непрерывный фрагмент текста, являющийся объектом;
классифицировать тип объекта – присвоить класс «персона», «локация», «организация».
Задач по нормализации и дедупликации объектов не ставилось. Соответственно, важно было не потерять значимые для идентификации объекта фрагменты и не ошибиться с классом.
Если Задача 1 для всех участников была более-менее очевидной, то тематическое моделирование для многих было экспериментальной областью, но тем интересней результат.
Атрибутирование и выделение именованных сущностей оценивалось по F1. Тематическое моделирование оценивалось по степени соответствия присвоенной тематики тексту обращения путем экспертной оценки с тройным перекрытием по шкале от 1 до 3, где 1 - "набор тэгов плохо описывает текст", 3 - "набор тэгов хорошо описывает текст".
Выделение именованных сущностей (NER)
Что получилось хорошо
С задачей выделения именованных сущностей все участники справились хорошо: половина оказалась в диапазоне 0.8-0.9 и только один участник не преодолел отметку 0.5. Можно отметить, что на наших данных подход, основанный на правилах, показал себя лучше, однако похоже, что это издержки именно маленького обучающего датасета. Ниже диаграмма с результатами участников: оранжевые - использовали машинное обучение, синие - правила, а серые - комбинировали то и другое.
![](https://habrastorage.org/getpro/habr/upload_files/646/8e1/cc7/6468e1cc729e4aae53cb80d9323ca4c9.jpg)
Что получилось не очень
Несмотря на то, что большую часть именованных сущностей удалось правильно идентифицировать, часть их оказалась неуловима. Например, фамилию соседки-хулиганки из примера ниже (здесь и далее все имена собственные в примерах заменены на похожие) нашли меньше, чем в половине случаев:
"Просим помощи и решить проблему с нашей соседкой, которая живет по ул. Сталеваров, 16-8. Фамилия у нее Калина, она работает в полиции Орджоникидзевского района Новокузнецка. Работает она начальником следователей"
Аналогичный проблемы возникли с детским лагерем "Лесная сказка" и бассейном "Европа":
"Почему бассейн Европа Кемерово не чистит себе снег? Сам расстат, весна близко. Это не частный бассейе, а государственный. Прошу принять меры к директору бассейна."
"Прошу разобраться со сложившейся ситуацией, в селе Верхотомское, Курская область, каждую неделю приезжает ассенизатор и сливает фикалии возле детского лагеря «Лесная Сказка» (не действующего)."
Еще более распространенная проблема была с определением границ длинных объектов, прежде всего организаций и локаций. Для текста ниже помимо правильного были предложены следующие варианты названия организации: "данной организации", "МБДОУ Детский сад 2", "МБДОУ".
"В реальности заработная плата педагогического работника дошкольного образовательного учреждения в МБДОУ Детский сад № 2 «Скворушка» по адресу проспект Строителей, 61, Междуреченск, Калужская область, Россия (по данным, полученным профессиональным союзом от работника данной организации) составляет около 30000 рублей, то есть меньше, чем заработная плата, установленная Указом Президента."
Для совсем уж длинных объектов ситуация была еще хуже. Для текста ниже были найдены в основном фрагменты сущности, например: "г.Кузбасс,ул. Дмитрия Донского северо-восточнее номера 28" или "Кузбасс, ул. Дмитрия Донского, д. 2".
"Начну с того что нам как семье с ребенком-инвалидом выделили 25.08.2016 г земельный участок под ИЖС в жилом районе г.Кемерова Промышленновский расположенный по адресу г.Кузбасс,ул. Дмитрия Донского, северо-восточнее номера 28, участок номер 2."
Обратная проблема - лишние слова в объекте, также была распространена: «пр. Комсомольский 43-214, Май, Кузбасс, Кемерово, Ленинский район, Соседний область, Новосибирск, Центральный район, Поликлиникея»; «Кузбасс, Новосибирск, Уважаемый владимир, Петербург»; «Сибирь, Кемерово, Пртом»; и даже экзотическое "шахта, куда, колонок, клин, Ул.Братский 24"
Ну и, конечно, неверный тип объекта: «ул. Александра Невского» – Александр Невский не раз попадал в Персоны, бассейн «Европа» – в Локации.
Тематическое моделирование
Если для NER почти все результаты радовали глаз, то тематическое моделирование было экспериментальной областью, и для эксперимента было очевидно маловато данных.
Что получилось хорошо
При том, что выборка была не достаточна для полноценного применения инструментов тематического моделирования (700 документов), часть компаний (примерно треть) сумела разумным образом выделить тематики и подобрать набор тегов, неплохо аннотирующий текст. Остальные результаты были скорее бесполезны для бизнес задачи - ни один регистратор обращений не обрадовался бы такой автоматизации.
![](https://habrastorage.org/getpro/habr/upload_files/3a1/e71/d43/3a1e71d43c560f3422c208432851fc2e.png)
Что получилось не очень
Учитывая, что тексты были непростыми, с орфографическими ошибками, с неформальной лексикой и множеством избыточной, не относящейся к сути, информации, задача была не из легких. Разнообразие вариантов тематик, представленных участниками, можно оценить на примерах ниже.
Пример 1:
"Здравствуйте уважаемый Глеб Владимирович! Наша Компания ООО «Глыба» является давним партнером и эксклюзивным представителем АО «Уральские шахты», собственника крупнейшего месторождения гранита в Республике Башкортостан. Предлагаем к поставке изделия из гранита, различных форм и вида, на особых условиях!"
Предложенные тематики:
"семья, шахта, сестра, переселение, интересовать"
"Товарно-сырьевой рынок, представитель, предлагать, гранит
гранит; здравствовать; башкортостан; глеб; давний; эксклюзивный; владимирович; месторождение; грант; уважаемый""собственник крупнейшего месторождения гранита, поставка изделия, особые условия, гранит"
"крупные месторождения,глеб владимирович,эксклюзивный представитель,особые условия,давний партнер,гранит,поставка изделий,уральский камень,различная форма"
"ВИД, ФОРМА, ПРЕДСТАВИТЕЛЬ, УСЛОВИЕ, СОБСТВЕННИК, ИЗДЕЛИЕ, ПАРТНЕР, МЕСТОРОЖДЕНИЕ"
"гранита, крупнейшее месторождение, давний партнер, республика, поставка изделие"
Пример 2:
"Здесь жили наши прадеды, дедуля с бабулей, живут родители и мы продолжаем жить. Все было хорошо до строительства Кемерово - Сити. О людях можно подумать все таки. Улицу надо было снести полностью и строить, делать дороги и т.д., и т.п. Стройка движется, нарушается почва - у нас стеклопакеты треснули и пластик лопнул!!!!. Летом делали ремонт - треснул аргалит!!!!. Постоянно отключают электричество без предупреждения - телевизор СГОРЕЛ!!!!! А если другая техника полетит? но это еще не все. 31 января в проулке шириной 2 метра (между домом №173 и №175) техника проводила работы по очистке снега!!! Вы что творите????? Здесь люди живут!!!!!! У нас скоро дома рухнут от всего этого. Вам нужна наша земля - предоставьте нам другое жилье. Мы жили спокойно, а сейчас как на пороховой бочке."
Предложенные тематики:
"дедуля, бабуля, родитель, строительство, кемерово, почва, стеклопакет, делать ремонт, отключать электричество"
"жильё, строительство, отец, сдать, родитель, дорога, снег, чистить, ребёнок, весна, аварийный, акт, ремонт, фундамент, отремонтировать, вода, холодный, водоснабжение, давление, водопровод"
"земля, ремонт, строительство, жильё"
"строительство, дорога, ремонт, техника, уборка снега, электроэнергия"
"'дорога', 'жилье', 'ремонт', 'снег', 'строительство'."
Большая часть ошибок при этом была скорее не в неверной классификации, а в самом наборе тэгов. Самые распространенные примеры ниже:
технические ошибки разбора шаблона: в тэги попали названия полей из карточки обращения: "учетная карточка, предыдущее обращение, дата сопровождения, автор сопровождения, приемная сайта, сайт ако, краткое содержание, индекс поступления, дорога";
несловарные последовательности символов: "гараж, снежный, ypdg, nydibc, обжаловать, дорога, снег, чистить, ребёнок, весна, крыша, вода, подъезд, ремонт, потолок";
неоправданные повторы: "окно квартир, наши квартира, моя квартира, операция, врачи"; "маленькие собаки, бездомные собаки, ленинский район, стаи собак, бегать, собака, детский сад, задрать, ленинский";
просто странный набор слов: "взносов; горемыка; воронин; вов; пальто; удумать; дедка; мфц; сообразоваться; учтивость", "автобусов; здраствовать; анжеро-судженск; задом; наперед; безобразный; видать; махать; рваный; непрофессиональный";
странное согласование слов: "вся вод", "второе звонок", "поставка изделие".
Кажется, что тут основная проблема тут не только в том, что было мало данных для обучения, но и в том, что не хватило системного подхода к задаче: аккуратный разбор шаблона и самопроверка позволили бы получить более симпатичный результат.
Результаты
Итак, на наши вопросы нам удалось получить ответы.
1. Как устроен ландшафт рынка интеллектуальной обработки текста?
Очевидно, мы охватили в исследовании не всех участников рынка, но собранная нами картина кажется относительно репрезентативной. Самыми сильные игроками ожидаемо оказались компании, которые давно специализируются на ПО для аналитики текстов: Megaputer, RCO, IQmen, Seldon, Авикомп - все они имеют мощные инструменты для решения разнообразных околоаналитических задач от сбора до представления данных. Все они работают на правилах, за исключением компании Авикомп. С близким качеством выступает и ABBYY. Почти так же хорошо выступили компании, выросшие из лабораторий при институтах или университетах - это Лабинформ и Tesyan.
Компании, которые недавно начали заниматься NLP ожидаемо выступили хуже, но объективно разрыв не так уж велик и, кажется, что через несколько лет картина может сильно измениться.
2. Каково состояние коммерческих продуктов? На какое качество можно рассчитывать при минимальной настройке применительно к текстам на разговорном языке?
Продуктов, пригодных для коммерческого использования не мало. Есть из чего выбрать как по качеству, так и по цене, гибкости, масштабируемости, пригодности к интеграции, возможностям доработки, архитектуре, программному стеку и так далее. Качество не идеально, но достаточно для того, чтобы была ощутимая польза, особенно если поток более-менее похожих документов большой, и хочется глубокую аналитику по срезам, которые невозможно добыть вручную - например, по именованным сущностям (жестоко заставлять регистратора при заведении карточки обращения выписывать в отдельные окошечки названия организаций и адреса, которые упомянуты в тексте).
3. Насколько велик разрыв между лидерами рынка и новичками?
Разрыв есть, но уменьшается на глазах. Наличие открытых библиотек привлекает в сферу NLP все новых участников, а конкуренция - всегда здорово. Но пока еще заметно, что препроцессинг не лишний, да и опорные словари не вредят, а привлечение на проект аналитика, для которого есть удобная среда настройки конвейера обработки текста и средства замера качества, вместо разработчика, который на коленке в юпитере обуздывает питон - приближает к успеху сильнее, чем самые свежие нейросети.
4. Как технологии влияют на результат?
На примере нашей задачи видно, что на специфических текстах и отсутствии полноценных обучающих данных несколько лучше показал себя подход, основанный на правилах: результат был более чистый и удобочитаемый. Когда большая часть знаний о выборке находится в голове у аналитика, а не в данных, то правила справляются лучше. Но если есть возможность построить обучающий датасет необходимого объема, то ситуация может измениться полностью (но пре- и пост-процессинг нужны все равно, хотя бы для исправления орфографических ошибок и фильтрации несловарных последовательностей).