Немного про NLP для ИИ

Компьютеры стали неотъемлемой частью нашей жизни, многие из нас хоть раз заходили в интернет с целью найти интересующую информацию или узнать что-то новое. Но компьютер был и остается не только помощником в бытовых делах, а и основополагающим в развитии современных технологий. С развитием технологий стали развиваться и новые разделы в науке. Так на пороге общения людей и компьютеров появилось понятие “обработки естественных языков”. Мир дошел до того момента, когда общение с компьютером (двигателем технологий) стало настолько же естественным, как и общение с людьми. Но за возможностью понимания компьютером  человека стоит большой раздел науки под названием “прикладная лингвистика”, и в частности ее раздел обработки естественного языка (NLP).

NLP в повседневной жизни

Какое применение NLP имеет в повседневной жизни? Каждую минуту в мире люди делают более 2 млн запросов в Google, отправляют более 200 млн писем по электронной почте, создают более 500 веб сайтов, посещают несколько миллионов страниц, совершают тысячи звонков в call-центры. Все это объединяет один главный фактор — естественный язык. Именно он используется для поиска информации, для описания товара на сайте или же для отправки спам-рекламных сообщений (именно тех, которые оказываются в вашей корзине каждый день).

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

Взаимодействие человека и компьютера

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

Посмотрим на максимально абстрактную форму общения человека и компьютера

Немного про NLP для ИИ

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

Этапы обработки языка

На втором этапе включаются методы NLP для обработки текста пользователя. Самый первый и известный всем метод — это исправление опечаток. Данный этап нельзя пропускать, так как зачастую люди пишут некорректно и неграмотно, а системы по распознаванию речи могут выдавать ошибки (например, одна из самых частых ошибок при написании — это неправильное использование одной или двух букв “н” в словах). Компьютер подобно учителю в школе проверяет каждое слово на наличие ошибок и в случае необходимости исправляет их. Однако одна из главных проблем алгоритмов исправления ошибок — правильно выбрать слово для того, чтобы исправленное слово подходило по контексту.

После чего происходит морфологический, синтаксический и семантический анализ текста, благодаря которым решается ряд лингвистических проблем:

  1. Решается проблема раскрытия местоименных анафор, благодаря решению которой компьютер начинает понимать, каким объектом заменить местоимение, ссылаясь на общий контекст некоторого диалога (текста) и свои знания. Например, в предложениях “В зоопарке дети покормили обезьян бананами, потому что они были голодными” и “В зоопарке дети покормили обезьян бананами, потому что они были вкусными” местоимение “они” будет раскрыто по-разному. Задача NLP сопоставить между собой несколько фактов, о том, что дети кормили обезьян, а действие “кормление” может быть связано с состоянием голода того, над кем производится “кормление”, а также, что свойство “вкусный” в большей степени относится к съедобным объектам.

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

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

На этом этапе полностью формируется картина вокруг диалога с пользователем, заполняются все проблемы, которые были в контексте до текущего момента, пополняется база знаний компьютера (при необходимости).

Представление знаний ИИ

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

Пример семантической сети
Пример семантической сети

Самыми распространёнными моделями хранения знаний являются:

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

  • Фреймовые модели — это модели, задачей которых является представление и описание абстрактных ситуаций/составных моделей, например, понятие «машина» является целостным, не определяющимся во фреймовой модели, а ситуация «машина красного цвета продается за 700000 рублей» описывает ситуацию, где каждое понятие представляет из себя слот со своей структурой. Каждый такой слот каким-либо образом характеризует понятие, хранящееся в нём.

  • Экспертные системы — это сложные программные комплексы, составленные специалистами в узкой области и аккумулирующие знания в этой области.

  • Логические модели — в основе системы лежит формальная система вида: M=, где T — множество элементов некоторого ограниченного набора, P — множество правил, при помощи которые образуются правильные совокупности из T, A — аксиомы, выделяемые из набора правил P, и B — множество правил вывода, применяя которые к A можно получить новые правила для вывода.

Сейчас очень популярны методы машинного обучения, которые сами пытаются найти закономерности в последовательностях и сделать выводы на основе ранее обученных данных. Такие модели зачастую представлены нейронными сетями с огромных числом параметров, как например, GPT-3 (и её аналоги). Однако огромной проблемой таких сетей является то, что они опираются только на тот материал, на котором были обучены, и не могут делать логические выводы, строя закономерности между материалом из различных областей. В них встроен принцип «чем больше получил знаний в одной сфере, тем больше опираюсь только на неё», это приводит к тому, что рано или поздно узкоспециализированные знания теряют свой вес в таких системах, и они становятся не пригодны для дальнейшего использования.

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

Зная о том, как компьютер ведет диалог с человеком и какие трудности встречаются в современных подходах с использованием нейронных сетей, можно сказать, почему же важно развитие технологий обработки естественного языка. Повсеместное внедрение технологий ИИ (умные дома, умные колонки, боты-ассистенты и др) требует большого количества знаний для того, чтобы правильно выполнять назначенные функции, а развитие новых методов и подходов в обработке ЕЯ может сильно снизить зависимость между качеством понимания человеческой речи и количество необходимых данных. Уже сегодня стало реально создавать алгоритмы, которые могут понимать смысл неизвестного текста по аналогии с имеющимися знаниями. Например, если ИИ знает, что фрукты могут быть желтого, красного цвета и иметь кислый, сладкий и пресный вкус, то в рамках нехватки знаний о ягодах ИИ может провести аналогию, что в текущем контексте знания о фруктах можно использовать в качестве замены знаний о ягодах.

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

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

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

 

Источник

Читайте также