2.7к
0
1
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники
Назад

Как научить ИИ извлекать основную информацию из текста?

Время чтения 5 минут
Нет времени читать?
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники
2.7к
0
1
Нет времени читать?
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники

Привет! Позвольте представиться, Варвара. Я студентка третьего курса IT-направления и никак не могу выбрать тему для дипломной работы. Основное мое хобби — чтение книг, и мне бы хотелось связать любимый род деятельности с интересом к миру информационных технологий. Именно так появилась идея создать искусственный интеллект, который способен, анализируя произведения всеми любимых классиков, создавать новые шедевры на основе стиля конкретного писателя.

В таком случае ИИ должен распознавать естественный язык, потому что программным кодом объяснить ему алгоритм работы было бы очень тяжело. Функция NLP также применяется в поисковых системах Яндекса, Google и других. Она отлично подходит для работы с текстовыми запросами, которые зачастую составляются человеком, незнакомым с языками программирования.

Как научить ИИ извлекать основную информацию из текста?

Выбор метода обучения

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

Как можно понять из названия метода, используя корпусную лингвистику, вы предоставляете ИИ огромное собрание текстов на разные тематики. Чем больше объем, тем «умнее» будет интеллект. Вот только у данного подхода есть минус: прямая зависимость от качества и количества текста. Если так выйдет, что в текстах ни разу не упоминается буква «ь», интеллект и вовсе не узнает о его существовании. 

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

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

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

Определение конкретной задачи

Чтобы ИИ научился генерировать собственные тексты, нужно сначала научить его разбираться в уже существующих. Первая задача искусственного интеллекта будет состоять в формулировании выводов на основе некоторого комментария. Например, мы предоставим ИИ отрывок текста: She is a girl with blue eyes and light hair. The girl has a small nose, red cheeks and a lot of freckles. She is tall. She is wearing a yellow T-shirt and black jeans. She is my best friend. 

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

Рабочий процесс

Человеку проще понять единственное высказывание, одиночную мысль, чем сразу делать выводы на основе целого параграфа. Поэтому прежде всего ИИ должен разделить текст на отдельные предложения. В отрывке их пять: 

  1. She is a girl with blue eyes and light hair.
  2. The girl has a small nose, red cheeks and a lot of freckles.
  3. She is tall.
  4. She is wearing a yellow T-shirt and black jeans.
  5. She is my best friend.

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

Далее запрограммируем ИИ анализировать слово и относить его к определенной части речи: girl — существительное (noun), yellow — прилагательное и так далее. Для реализации этого процесса в Python есть библиотека spaCy, а в ней уже имеется специально обученная модель en_core_web_sm. Однако, прежде чем приступать к группировке слов по частям речи, необходимо произвести лемматизацию — приведение слова к его начальной форме. 

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

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

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

Какие библиотеки я использовала

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

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

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

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

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

Демонстрация результатов

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

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

Затем я поменяла предложения в тексте местами. ИИ вывел то же самое, только в другом порядке, хронологически соответствующем новому тексту.

Небольшой шаг на пути к разработке собственного ИИ с обработкой естественного языка я реализовала на одном из простейших языков программирования высокого уровня Python. 

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

Комментарии1
Alex
7 месяцев назад
Стоит добавить для общей картины knowledge graphs и конечно llms. Проблема которую сложно решить - сложность языка, утверждения (факты) редко бывают абсолютными. Есть контекст, условия, сложная логика: если так, то этак.. Нужен подход который сможет это учитывать.
Тоже интересно
Комментировать
Поделиться
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники