Про ИИ

ПРО ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ – КАК КОМПЬЮТЕР ЕСТЕСТВЕННЫЙ ЯЗЫК (ЕЯ) ОБРАБАТЫВАЕТ. ЧАСТЬ 1, ИСТОРИЧЕСКАЯ


Владислав Январев, 31 января 2020

Небольшой обзор на тему того, как компьютерные программы работают с естественным языком (сокращение ЕЯ). Обзор покрывает не все области – только то, в чем автор ориентируется и одновременно посчитал наиболее важным. Автор – программист, когнитивист, занимается исследованиями в области формального моделирования глубинной семантики текста.

Задачу обработки ЕЯ обычно относят к задачам искусственного интеллекта. Причины просты: человек понимает текст? Понимает. Человек может написать статью? Может.
А компьютер? Прочитать и пересказать Евгения Онегина не может.
Следовательно, подумали товарищи ученые, ежели мы научим компьютер читать и писать, то тем самым решим Интеллектуальную задачу.


Можно выделить несколько задач, связанных с ЕЯ. Условно их можно поделить на следующие группы, согласно входам и выходам алгоритма:
  • ЕЯ -> ЕЯ (например, перевод с одного языка на другой)
  • ЕЯ -> Данные (например, категоризация: распознавание эмоциональной тональности текста – это позитивный отзыв, это негативный; или – этот текст о кошках, а этот – о политике. Или фраза для Сири «Позвони маме» должна вылиться в конкретное формальное действие (звонок) конкретному абоненту (маме))
  • Данные -> ЕЯ (Генерация текста. Есть, например, данные эксперимента в табличном формате – надо по ним автоматически написать научную статью. Или пусть компьютер новую сказку сгенерирует!)
Замечу, что мы совершенно не будем касаться пар «Речь -> ЕЯ» (распознавание речи по звуку) и «ЕЯ -> Речь» (синтез человекоподобной речи по тексту). Это совершенно отдельные задачи, с ними работают по другим принципам.

ИСТОРИЯ


Исторически первый раз попытались самым простым алгоритмом решить задачу перевода (ЕЯ->ЕЯ). Взяли словарь, заложили его в машину, и начали переводить пословно. Получили то, что можно назвать «подстрочником» – т.е. буквальным переводом слов в предложении. По которому смысл текста понять было может и можно, но сложно.
«Не…, – сказали ученые – нам это не подойдет!»

И начали думать, как же переводчик тексты переводит. Додумались до того, что переводчик сначала анализирует смысл текста, а уже потом пытается изложить то же самое на другом языке. Заодно выяснилось, что переводчик/читатель, понимая смысл текста, также может отвечать на вопросы по содержанию типа «Кто влюбился в Онегина?».

Таким образом, перед учеными стал вопрос – как перевести ЕЯ-текст в некие формальные структуры данных, которыми может оперировать программа. И воспользовались они для этого наработками лингвистов – морфологией, синтаксисом и деревом синтаксического разбора.

Согласно идеям лингвистов, для членов предложения можно выделить морфологические признаки (род, время и т.д., в зависимости от языка), а затем, на основании них, построить дерево подчинения одних слов другим. Например, в конструкциях русского/английского языков разбор будет строиться вокруг глагола. «Петя пошёл в новый кинотеатр». Пошел кто? Петя. Пошел куда? В кинотеатр. Кинотеатр какой? Новый.

В общем, см. рис 1 к статье.

 (17 Кб)

Подобная структура данных (дерево), в общем-то, несложно обрабатывается программами. Понятно, как отвечать на вопросы, например типа «Кто пошел в кинотеатр?». Для этого надо найти в дереве корень с глаголом «пошел», проверить, что есть ветка «куда?» со значением «В кинотеатр» и перейти по ветке «Кто?», получив слово «Петя».

Более того, у ученых появилась идея – если в самом начале в узлах дерева находятся слова (например, «Петя»), то мы можем обойти всё дерево и соотнести слова с понятиями реального мира. Например, в нашей базе данных уже есть знание о том, что «Петя» это «человек, рост 170 см, 19 лет» и т.д. Тогда, заменив в дереве слова на понятия, мы получим более полное представление о реальности, в которой происходит действие. Назвали этот этап «семантическим анализом» – когда мы переходим от синтаксического дерева слов к семантическому дереву понятий, которое и должно описывать смысл происходящего.
Зная семантику, т.е. значение слов, мы можем обрабатывать более сложные запросы типа «Какого роста был человек, который пошел в кино?». (ответ: 170 см)

«Отлично, – потирали руки ученые – скоро, скоро мы опишем все схемы предложений и сможем давать ответы на все вопросы!»

РЕАЛЬНОСТЬ


Увы, довольно скоро выяснилось, что предложенный метод хорошо работает только на довольно простых пример типа «Петя пошел в новый кинотеатр» и «Peter goes to school everyday». Реальность же обозначила следующую проблему: часто дерево синтаксического разбора сильно неоднозначно, и сильно зависит от семантики.

Пример – «Петя пошел в новый кинотеатр. Он купил билет на 19 ряд». Человеку совершенно очевидно, что «Он» (это, кстати, явление «референции» в лингвистике) относится к Пете. Но, чисто формально, у нас есть «кинотеатр». И в альтернативном предложении «Он находился на улице Ленина», «Он» имело бы отношение к кинотеатру. Оказалось, что построить дерево разбора без учета того, что начали называть человеческим «common sense» (здравым смыслом) чаще всего невозможно – получается много вариантов.

Более того – начали проявляться проблемы даже на уровне морфологии. Например, слово «милая» можно отнести и к существительным, и к прилагательным. Что, опять же, порождает проблемы с разбором – поскольку этап создания дерева подчинения в целом должен идти после этапа анализа форм слова. Два варианта интерпретации формы слова – и у нас опять проблемы с анализом.

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

ФРЕЙМЫ, СЦЕНАРИИ, ОНТОЛОГИИ


Марвин Мински, на кафедре (очень вольный пересказ):

«Товарищи и друзья! Мы пытались анализировать текст через его структуру. Но есть же еще и реальность – и именно она помогает человеку понимать, что происходит.

Например, возьмем фразу «Петя дал 100 рублей». Очевидно, что в реальной жизни 100 рублей не могут деться «куда-то»! (отпивает) Поэтому, перед тем как анализировать текст, мы должны понять, к какой ситуации он относится! Скажем, здесь, в ситуации передачи денег, очевидно должно быть как минимум три параметра: (кто, кому, сколько). Эта тройка не зависит от ситуации, и должна быть всегда в условиях передачи денег – т.е., она универсальна. И хорошая программа, пытаясь узнать пропущенные данные, должна спросить, «Кому Петя дал 100 рублей»? «Васе!»

Я назвал такой набор параметров «фреймом». Конечно, разные типы ситуаций потребуют разных фреймов. Но рано или поздно мы их все опишем!

PS: Отдельным бонусом такого описания можно считать то, что мы, опираясь на фундаментальный смысл предложения, часто можем игнорировать дополнительные красивости описания и не тратить время на их разбор. Такое предложение будет эквивалентно «Петя, смущаясь и теребя в руках свой бумажник, медленно достал 100 рублей и медленно передал их Васе»

PPS: А еще фреймы можно наследовать… Например, «ребенок» является подклассом класса «человек», а тот – «млекопитающих», и из этого тоже можно делать выводы (см. рис 2, взятый из [1])

 (35 Кб)

Роджер Шенк, на кафедре (очень вольный пересказ):

«Ну, еще можно сказать, что типовые ситуации могут идти друг за другом по времени. Я назвал это явление «сценарием». Например, «Петя пришел в кафе. Петя заказал еду. Пете принесли еду. Петя съел еду. Петя оплатил счёт. Петя ушел из кафе». Если какой-то фрагмент пропущен, то его может либо домыслить программа, автоматически добавив соответствующий факт, либо запросить дополнительные данные у пользователя…»

Другие исследователи (сейчас, увы, быстро не найду, кто выдвинул эту идею первым и как она развивалась):
«А еще можно учитывать свойства объектов! Например, «Маша поставила сковородку на стол» – можно, потому что стол обладает атрибутом «твердый». А, «Маша поставила сковородку на воздух» – нельзя…»

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

Возникло два подхода. Представители первого (узкого) упирали на то, что надо смоделировать узкую предметную область (например, часть юриспруденции или медицины) и анализировать типовые фреймы/сценарии там. Представители второго (широкого) замахнулись на то, чтобы смоделировать фреймы/сценарии вообще большинства типовых жизненных ситуаций – т.е. common sense в целом….

РЕАЛЬНОСТЬ 2


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

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

Последняя версия OpenCyc, 1.0 была выпущена в июле 2006 года. OpenCyc 1.0 включает в себя полную онтологию Cyc, содержащую сотни тысяч выражений, миллионы утверждений, связывающих термы между собой. База знаний содержит 47 000 концепций и 306 000 фактов, и её можно просмотреть на сайте OpenCyc.

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

Важный вывод из статьи: к середине 90-х – началу 2000-х исследователи разочаровались в идее описания common sense и универсальном алгоритме поиска смысла текста, и сфокусировались на конкретных задачах – поиска, перевода, локальных предметных областях. Этот тренд продолжается и до сих пор – заниматься смыслом текста сейчас несколько… моветон и совершенно не мейнстрим. (Кстати, у меня есть авторская теория, которая объясняет эту проблему, но поля Фейсбука слишком малы… ну, вы поняли)

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

Литература:
1. Т.А. Гаврилова, В.Ф. Хорошевский «Базы знаний интеллектуальных систем»

Первоначальная публикация в группе Изнакурнож