Обработка естественного языка в ИИ

Автор: Даниил Горбенко

1. Подходы к NLP

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

Проблема большинства ботов сводится к банальному описанию всех возможных конструкций языка по типу : if { фраза 1 } then {выполнить действие 1} else if { фраза 2 } then { выполнить действие 2 } else … . Проблема видна невооруженным глазом, замените хоть одно слово во входной фразе и вы в лучшем случае получите совсем иной результат, в худшем — система вас просто не поймет. Однако такая проблема свойственна простым чат-ботам, заточенным лишь под решение узкого круга задач. Более сложные и усовершенствованные помощники обучены понимать смысл вашего высказывания. Но что скрывается за этим «пониманием»?

Пониманием текста (под текстом далее понимается текст на естественном языке) занимается область науки, которая известна под названием «компьютерная лингвистика». Существуют различные подходы к обработке текстов, среди них можно выделить: глубокое обучение, корпусная лингвистика, машинное обучение и другие.

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

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

Ярким примером неправильного понимания смысла может послужить ситуация с чат-ботом Олегом от банка “Тинькофф”. Олега обучали на сырой выборке, после чего бот начал грубить людям и давать “плохие” советы.

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

Таким образом, для глубокого понимания смысла текста недостаточно методов, которые основаны по большей части на обработке большого корпуса текстов. Глубокое понимание смысла текста требует более формального описания знаний о мире и взаимоотношениях в нем.

2. Этапы обработки и понимания смысла текста.

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

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

Однако такой подход имеет ряд недостатков: перейдя к новому этапу, данные из других этапов не могут меняться; знания из последующих этапов не могут быть задействованы при анализе на предшествующих этапах.

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

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

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

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

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

Мама -> Мыть(Действие)/Мыло(Моющее средство)->Рама(Часть окна)/Рам(Озеро)

Мы видим, что для слова “мыла” и слова “раму” нашлось несколько вариантов значений. Система способна провести анализ пар: мыть(действие) + рама(часть окна), мыть(действие) + рам(озеро), мыло(моющее) + рама(часть окна), мыло(моющее) + рам(озеро).

Исходя из анализа система может однозначно определить, какой из вариантов логичнее выбрать в данной ситуации. Таким образом, система оставит пару мыть(действие) + рама(часть окна). В отличие от нейронных сетей мы можем объяснить, почему именно такой выбор был сделан системой. Очевидно, что знание “мыть -> окно” будет иметь больший вес, чем “мыть -> озеро”, а так как рама является частью окна, то система делает вывод, так как “мыло -> окно” и “мыло -> озеро” не несет никакой смысловой нагрузки, то предложение будет иметь вид: Мама мыла (действие) раму (часть окна) мылом.

В основе синтаксического анализа лежит система правил. Такой подход позволяет обходить востребованность большого объема данных, от которой зависит корректность и правильность разбора предложения. Каждое правильно представляет собой конструкцию вида : if {рассматриваемая конструкция имеет вид A} then {определяем роли сущностей в соответствии с правилом A’} else if … .

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

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

Итак, какой вывод можно сделать? Совокупность методов: параллельного разбора всех этапов, применение системы правил на некоторых этапах, задействование интеллектуальной системы для определения смысла, дает высокий результат в понимании смысла текста.

Мы провели небольшой тест. Задача этого теста состояла в том, чтобы пересказать текст с одного языка на другой. Оценивались как качество перевода на другой язык, так и качество того, насколько правильно был передан смысл текста на другом языке:

Исходный текст

During the 20th century not many people travelled abroad on their holidays. The majority of people spent their holidays at home then. Today the situation is different, the world feels much smaller. Nowadays people can travel by car, by train or by plane. Some prefer hitchhiking. It is possible to buy tickets online or via phone at home. They can book a room in a hotel on the other side of the world. People also can make new friends, try out new things, visit new places and take a lot of pictures.

Пересказанный текст

Люди не много путешествовали в течение 20 века в зарубежье на праздниках. Большинство людей проводило праздники дома в 20 веке. Сегодняшняя ситуация является другой. Земля чувствуется много маленькой. Люди сегодня могут путешествовать  автомобилем поездом самолётом. Некоторый предпочитает автостоп. Возможно покупать онлайн билеты с помощью телефона дома. Люди могут бронировать помещение в отеле на иной стороне Земли. Люди могут находить новых друзей. Люди могут испытывать новые вещи. Люди могут посещать новые места. Люди могут много делать снимков.

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

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

3. Мультиязычность. Почему это важно?

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

Все эти преимущества делают возможным смешение языков при общение. Так, например, вы можете задать вопрос, строя его конструкцию на удобном для вас языке, но при этом подменяя некоторые сущности представлениями из другого языка.
Где это может помочь? Представьте, что вы приехали в другую страну, и вам надо узнать что-то о предмете, о котором вы услышали в ходе разговора с иностранцем. Чтобы более точно понять информацию, вы можете построить вопрос так, как будет удобно вам и получить ответ на языке, который будет понятен вам. Например, представьте, что вы попали в Лондон, и в ходе разговора вам посоветовали посетить West End. Однако вы не имеете понятия о том, что это такое. Тогда вы можете спросить голосового помощника “Что такое West End”, на что получите ответ на своем языке: “Это западная часть центра Лондона”, или еще проще спросить “расскажи про West End”, и получить полноценный ответ: “Это западная часть центра Лондона. Здесь вы можете посетить Южный Кенсингтон, Театр Сохо...”. Это намного удобнее, чем лезть в переводчик (который к тому же может перевести некачественно некоторые понятия), затем лезть в поисковые системы и пытаться что-то найти.

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

Смешивание языков

Человек: how many человек живет in Russia?
ИИ: 146 880 432 humans.
Человек: What is similar между penguin and курицей
ИИ: Are birds.

4. Как говорит ИИ?

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

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

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

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