Функционирует при финансовой поддержке Министерства цифрового развития, связи и массовых коммуникаций Российской Федерации

Аналитика

08/04/2019

Как компьютер воспринимает и обрабатывает тексты на естественном языке. Рассказывает Татьяна Даниэлян (ABBYY)

 

Что объединяет поисковики, автоматический анализ документов и интеллектуальных помощников? Их работа основана на технологиях обработки естественного языка (NLP). Это направление находится на стыке искусственного интеллекта и компьютерной лингвистики.

О том, как машины понимают тексты в свободной форме, какие задачи NLP уже решаются на высоком уровне и почему машинный перевод еще долго не будет совершенным, нам рассказала Татьяна Даниэлян – заместитель директора по исследованиям и разработкам компании ABBYY.

Справка

Обработка естественного языка (NLP) — направление, которое изучает проблемы компьютерного анализа и синтеза естественных языков. Некоторые задачи NLP: извлечение информации, анализ и генерирование текста, распознавание и синтез речи.

 

Какие задачи по NLP уже решаются на достаточно высоком уровне, с хорошими результатами?

Лучше всего сейчас решаются задачи, которые связаны с морфологической обработкой текста: определение начальной формы слов и всех возможных словоформ. Прикладное применение — это интеллектуальный поиск. Это могут быть как «массовые» поисковики, так и специализированные системы, которые ищут данные в корпоративных источниках.

На высоком уровне решаются задачи классификации. Что это такое? Допустим, вы распределяете документы по определенным категориям. Приходит новый документ, и нужно определить, к какой категории его отнести. Например, ABBYY работала с отделом управления рисками в Сбербанке. У них создана система, которая автоматически анализирует новости на русском языке о более 1000 банков — контрагентах компании. Для этого должен работать некий механизм, который позволяет проанализировать текст сообщения и соотнести его с той или иной категорией риска. К таким рискам некоторые банки относят смену акционера, конфликты, снижение финансовых показателей. Такое соотнесение нужно, чтобы специалисту не нужно было читать весь поток однотипных новостей, а сразу видеть только релевантные данные.

Чуть хуже с помощью NLP решаются задачи, связанные с распознаванием речи. Программы распознавания речи показывают хорошие результаты для ситуаций, когда в записях нет дополнительных шумов и помех.

Более-менее хорошо решена задача персональных помощников, настроенных на определенную область сервисов: забронировать столик в ресторане, купить билет на самолет, поискать информацию о какой-то книге и т. д. Это очень простые запросы, на которые есть конкретные ответы. Для них не нужно собирать информацию по разным источникам и агрегировать ее.

 

Верно ли, что в английском языке задачи анализа и синтеза речи пока решаются лучше, чем в русском? Если да, то с чем это связано?

Разница в уровне решения задач есть, и под каждый язык задачи решаются по-разному. Языки сложны по-своему. В русском много склонений, спряжений, в английском — огромная омонимия: у каждого слова может быть огромное количество значений.

В любом таком проекте все зависит, во-первых, от количества ресурсов у компании, которая работает над какой-то задачей NLP. Под ресурсами я подразумеваю словари, тексты, примеры документов и другую информацию.

Во-вторых, данные нужно разметить под конкретную задачу: выделить в примерах документов слова, фразы, предложения, которые система должна уметь определять в других структурированных или неструктурированных текстах. Разметка — сложный и дорогой процесс. Как правило, одно и то же предложение можно разметить по-разному. Приведу пример: «Добро побеждает зло». В зависимости от выбранного подлежащего будет меняться смысл предложения. Качество разметки может быть разным, образцов документов может не хватать для машинного обучения.

Есть задачи NLP, которые можно решать без размеченных корпусов, но в таком случае необходимы корпуса представительных документов больших размеров. К примеру, для задач распознавания речи используют модели языка. Модели языка можно построить по неразмеченному корпусу документов.

В-третьих, уровень решения задачи зависит от конкретных специалистов. Это могут быть data scientists, которые получают на вход задачу, проводят различные эксперименты, получают результаты и выбирают, какую из архитектур сетей нужно использовать в данном случае. Затем программисты сделают из того, что предоставил data scientist, решение, пригодное для презентации конечному пользователю, в виде сервиса или программного продукта. Третий вид специалистов — те, кто будет создавать интерфейс взаимодействия пользователя с решением. Например, если мы возьмем вопросно-ответные системы, многое зависит от того, как спроектирован интерфейс. Движок может сколько угодно хорошо отвечать на вопросы, но, если пользователю будет неудобно с ним работать, продукт не станет популярным.

 

Какие виды задач по обработке естественного языка решают в ABBYY?

Мы решаем много подобных задач. Это, во-первых, анализ документов, когда технология сначала распознает текст, определяет значение слов и тематику всего документа. Во-вторых, это классификация, когда машина определяет тип документов и данных и делит их на разные категории. В-третьих, задачи кластеризации, когда документы необходимо распределить по непонятным пока для пользователя принципам. Например, «сложить» в папку все акты, которые похожи друг на друга по смыслу.

Мы решаем задачи интеллектуального поиска, извлечения информации — сущностей, фактов, событий. Решаем задачи текстовой аналитики. Это воплощено в продуктах и решениях компании для бизнеса.

 

Использование нейросетей — основной метод для решения этих задач?

Машинное обучение — основной метод. Не всегда можно использовать нейросети: для их обучения нужно огромное количество данных и большие мощности, что не всегда оправданно. Сложно интерпретировать результат работы нейронных сетей и проводить анализ ошибок. Например, для извлечения сущностей (named-entity recognition) используются нейросети: они быстро находят закономерности и могут выявить даже сущности, которые не представлены в текстах, на которых проходило обучение. А вот для задач классификации не нужно использовать нейросеть, она для этого слишком тяжела — достаточно простых методов машинного обучения.
 

Чем принципиально отличается процесс обработки данных в машинном обучении от обработки данных нейросетью?

Нейросети — частный случай машинного обучения. Приведу один из примеров того, как в общих чертах работает машинное обучение. Есть размеченный корпус, неважно, как он размечен и из чего он состоит. 2/3 этого корпуса используется для обучения, 1/3 — для верификации, тестирования. Берется 2/3, делится на части. На одной части используются различные алгоритмы: линейные, нелинейные, нейросети. В традиционных методах машинного обучения все признаки подбираются вручную. После получения результата проводится анализ: все ли правильно сделала машина? Если обнаружены ошибки, то data scientist начинает их анализировать, находить систематику. После этого он принимает решение, каким образом можно улучшить результат: поменять признаки или обучающую выборку, поработать еще над разметкой?

Если задача решается с помощью нейросети, то подбор признаков осуществляется самой нейросетью, у нее для этого есть различные алгоритмы. Процесс работы выглядит так: есть отобранные нейросетью признаки, а data scientist смотрит на результат работы сети. Признаки он поменять не может, потому что их выбрала сама нейросеть. Но он может проверить разметку, добавить еще документы.

Как правило, чтобы улучшить работу традиционных методов машинного обучения, нужно самому подобрать признаки и привести разметку в соответствие. Чтобы улучшить работу нейросети, необходимо добавить новые размеченные данные.

 

Как вы получаете датасеты для обучения нейросетей?

Мы размечали корпус вручную. Как правило, датасетов не хватает, поэтому у нас есть специальные методы. Мы, используя малое количество данных, генерируем документы или картинки, похожие на те, которые были предоставлены заказчиком, либо пытаемся каким-то образом находить еще документы, чтобы пополнить выборку. Для работы с датасетом у нас есть различные инструменты разметки, верификации и т. д.

Самая главная борьба, которая сейчас ведется между всеми компаниями и институтами, занимающимися обработкой естественного языка, в том, как получить корпус и так его разметить, чтобы на нем потом можно было решать конкретную задачу.

 

То есть вы когда-то сформировали корпус и сейчас с ним работаете или это постоянный процесс дополнений?

Это постоянный, динамический процесс. Мы сформировали корпус, разметили его, начали на нем обучаться. После этого мы продолжаем поиск похожих документов близкой тематики, продолжаем разметку, добавляем в обучающую выборку и в тестовые корпуса.

 

Расскажите, пожалуйста, на конкретном примере, как решаются задачи обработки естественного языка с технической точки зрения.
 
Возьмем в качестве примера открытие счета для юридических лиц, похожий проект ABBYY реализовала для банка ВТБ. Как устроен процесс? Существует набор внутрикорпоративных документов, на основе которых банк принимает решение, будет ли сотрудничать с тем или иным юридическим лицом. В этом комплекте есть неструктурированные документы, написанные в свободной форме. Из них банку нужно извлечь значимые данные о компании, ее генеральном директоре, юридическом адресе, уставном капитале, собственниках, принятых решениях и так далее. Набор документов включает уставы, учредительные договоры, протоколы, приказы о назначении руководителя, договоры и пр. Они поступают в систему в виде изображений: PDF, отсканированных изображений или фотографий.

Первое, что нужно сделать, – подготовить их к распознаванию, то есть провести различные операции по улучшению качества изображений: выровнять, убрать шумы, повысить контрастность, удалить печати и другие элементы. В этой задаче используются различные нейронные сети, а также метод градиентного «бустинга» — последовательное построение композиции алгоритмов машинного обучения, когда каждый следующий алгоритм стремится компенсировать недостатки композиции предыдущих алгоритмов.

Следующий этап — распознавание текста. Документ делится на страницы, текстовые блоки, строки, слова, отдельные символы. Для изображений плохого качества не происходит деление на символы. Здесь также используются различные механизмы, в том числе нейронные сети, которые позволяют получить оцифрованный текст в хорошем качестве.

На следующем этапе из текста нужно получить информацию: наименование компании, реквизиты юридического лица, различные даты, принятые решения и так далее. Сначала проводится лексический анализ текста, документ разбивается на отдельные слова.  Далее происходит семантический анализ: строится семантическое представление текста. На основе этих данных технология определяет вид документа: устав, протокол, контракт или что-то другое. После этого начинает работать первая нейронная сеть, которая в каждом документе выделяет именованные сущности: персоны, локации, организации, деньги, даты и т. п. Для каждой сущности с помощью градиентного «бустинга» извлекаются атрибуты: например, дата начала и окончания договора, фамилия генерального директора. Часть фактов и событий извлечь с помощью нейросетей невозможно, для таких исключений создаются правила. Заказчик получает гибридную модель, в которой работают и правила, и нейросети, и другие методы машинного обучения.

Для каждого документа разработчики определяют количество атрибутов, которые нужно извлечь. По нашему опыту, таких атрибутов может быть от 10 до 120 для одного документа. Эти структурированные метаданные поступают в банковскую систему, и сотрудник использует их для принятия решения об открытии счета. Благодаря NLP мы достигаем довольно высокого уровня автоматизации процесса. В большинстве случаев нужно только проверять, все ли данные заполнены правильно.

 

Как ваша система работает с различными ошибками и опечатками?

Не для всех задач нужно работать с опечатками или ошибками распознавания. Например, для задач классификации вообще не важно, есть опечатки или нет. Это может быть важно, когда разработчик создает персонального помощника либо различные вопросно-ответные системы. Но для задач, которые решает ABBYY, мы проводим внутреннюю работу с опечатками — этого достаточно.

 

Есть ли в NLP задачи, которые пока не получается решать эффективно?

В первую очередь это задачи, связанные с машинным переводом. Их сложно решать, потому что нет или мало корпусов, на которых можно обучаться. Человек разговаривает по-разному, может ошибаться, разговаривать литературным и нелитературным языком. Для определенных предметных областей или некоторых пар языков может вообще не быть данных для обучения, или этих данных критически мало. Из-за нехватки ресурсов и индивидуального стиля речи каждого человека задача машинного перевода решается пока не очень хорошо.

Текущего уровня развития технологий достаточно для понимания информации в общих чертах, например при переводе содержания сайтов через браузер. Если вы захотите перевести официальный документ на другой язык для редактирования или передачи перевода для принятия решений, вам все равно придется обращаться к живому переводчику. Особенно в ситуации с формальными документами, которые используется правительствами, государственными учреждениями, юридическими организациями, медицинскими учреждениями и т. д. Во всех этих ситуациях очень важна точность отражения информации. Никто не дает прогнозы, когда машинный перевод выйдет на высокий уровень. С каждым годом задача решается все лучше, но пока только в довольно простых областях.

Вторая большая область развития технологий — это вопросно-ответные системы. Если взять конкретную область, например покупку бытовой техники, то эти системы будут работать прекрасно. Но стоит выйти за пределы этой темы, нужно заново подбирать корпус и обучать систему. Например, вы сделали чат-бота, который умеет говорить о погоде или о гостиницах. Как только вы начнете задавать вопросы за пределами этой области, он не сможет ответить. В туризме, например, как только вы поедете в страну, по которой очень мало данных и где нет туристических агентств, в «общении» с ботом будут проблемы.

 

Расскажите о деятельности и ключевых проектах NLP Advanced Research Group в ABBYY.

NLP Advanced Research Group занимается исследованиями в направлениях, которые в будущем могут быть полезными для клиентов и развития решений ABBYY. У этого подразделения компании много задач, но я расскажу про три наиболее интересные.

Первое — мы вели исследования по определению авторства документа. Скажем, пришел документ или маленький абзац текста из какой-нибудь известной соцсети или сообщение на телефон. Мы вели исследования того, как определить авторство.

Второе направление — саммаризация. Есть документ из 100 страниц, мы хотим понять, о чем в нем говорится, чтобы не читать его целиком, а понять, нужен он или нет.

Еще одно направление — это работа для лингвистов — восстановление пропущенных слов. В речи, особенно русской, могут пропускаться слова: существительные, глаголы, прилагательные. Человек понимает эти слова из контекста. Машине, чтобы потом по документу проводить поиск, извлекать сущности и т. д., нужно восстановить пропущенные слова.

 

Интервьюер: Анна Ангелова

Респондент: Татьяна Даниэлян

 © robo-hunter.com


https://robo-hunter.com/news/kak-kompyter-vosprinimaet-i-obrabativaet-teksti-na-estestvennom-yazike-rasskazivaet-tatyana-danielyan-abbyy16775