Главная > Интеллектуальные системы > Искусственный интеллект (Э. Хант)
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

15.2.2. Системная грамматика

Группа Шенка проделала некоторую программистскую работу, но в основном она занималась теоретическим анализом. Несколько более конкретный подход принадлежит Винограду (1972). В предыдущей главе мы упоминали программу, которую он написал для управления рукой робота в упрощенном мире игрушечных кубиков. Фактически основной целью исследований Винограда была проверка определенного подхода к машинному пониманию, основанному на представлении о системной грамматике, развитом английским лингвистом Холлидеем (1967, 1970). Системная грамматика определяется рядом эвристик для анализа лингвистической цепочки. Виноград пользуется этими эвристиками вместе с концептуальным представлением, которое строится, чтобы произвести то, что Шенк назвал бы концептуальным анализом значения входа на естественном языке. Этот анализ затем объединяется с базой данных дедуктивной системы. Чтобы продемонстрировать, как это делается, мы, следуя Винограду, рассмотрим примеры, полагая, что читатель знает английский язык. Наша цель здесь — иллюстрация принципов. Читатель должен помнить об этом и не заключать отсюда, что существует программа, эффективно работающая во всех обсуждаемых случаях. Действия программы Винограда, а именно манипуляция воображаемыми блоками на поверхности стола, тривиальны в отличие от принципов, лежащих в ее основе.

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

программы PARSE. Грамматически использование программы для представления грамматики сходно с использованием рекурсивно вызываемых сетей в анализе Вудса расширенной сети переходов. Кроме того, здесь важно, что процедуры, ответственные за анализ данной лингвистической структуры, могут решать и синтаксические вопросы, вызывая программы, которые просматривают базу данных, чтобы определить наиболее разумную семантическую интерпретацию предложения. Таким образом, программа могла бы отвергать синтаксическую структуру из-за того, что она ведет к семантическому утверждению, которое противоречит предыдущим утверждениям или не связано с ними. Можно представить себе, как такая программа выбирает подходящую интерпретацию для Алисы в примере с Дон Жуаном и Белым Кроликом (предложения (30) и (31)). В общем случае можно пойти по пути анализа, ведущему к разумной интерпретации, а не производить сначала все возможные грамматические разборы цепочки естественного языка и затем выделять ту, которая по смыслу лучше всего согласуется с контекстом. Это осуществимо, ибо смысл устанавливается поэтапно, путем направления потока управления в программе PARSE на основе результатов работы как синтаксических, так и семантических процедур, вызываемых как подпрограммы в PARSE.

Чтобы продемонстрировать общие идеи этой программы, рассмотрим предложение

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

поставил целью процесса PARSE получить утверждения, со структурами которых может работать программа решения задач PLANNER (гл. 12). Таким образом, (37) превращается в

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

и в то же время это ответ на вопрос

В обоих случаях для выяснения смысла (38) требуется дедукция.

В основе процесса раскрытия смысла с помощью переходов от семантического к синтаксическому анализу, и обратно, лежит идея о различных уровнях анализа. Отправляясь от идей Холлидея, Виноград выделяет три уровня синтаксической структуры: предложение, единица и слово. Предложение (clause) в отличие от сложного предложения (sentence) является независимой единицей мышления. Это означает, что оно в конечном счете преобразуется в выражение из базы данных, хотя может содержаться внутри другого выражения. Очень важно, чтобы каждому предложению приписывался правильный логический уровень в базе данных. Логическая структура предложения

такова:

Она не противоречит утверждению

если только (43) соответствует тому же логическому уровню, что и (42).

В предложении группы слов, определяющие либо термы для логической беседы, либо отношения между ними, образуют единицы. Различаются четыре типа единиц: группы существительного, которые определяют основные элементы, и группы прилагательного, предлога и глагола, которые устанавливают отношения между элементами. Такое предложение само является элементом; его структурой можно пользоваться рекурсивно, как показано в (41). Эта синтаксическая структура хорошо согласуется с идеей грамматики как процедуры. Программа PARSE пытается определить структуру,

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

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

Грамматический анализ обычно идет сверху вниз, хотя и не следует никакой строгой иерархии. На каждом уровне программа „знает", что структура, с которой она работает, должна принадлежать одному из нескольких типов, причем каждый из них обладает своими отличительными особенностями. Первоначально задача состоит в нахождении главного предложения, которое может быть утвердительным, повелительным или вопросительным. Какое именно, устанавливается исследованием нескольких слов. Эта информация в свою очередь определяет возможные типы групп слов. Например, если выяснено, что предложение утвердительное, то самая левая группа слов должна быть группой существительного. Обратите внимание, как это переводит поток управления с одного уровня на другой. Итак, интерпретацию входной цепочки определяют, разумеется, словарные значения слов, выбор же одного из нескольких словарных значений диктуется свойствами слов, найденных в словаре, свойствами лингвистической структуры и ее возможными семантическими интерпретациями. Чтобы проиллюстрировать это, допустим, что входным предложением было

Сначала программа PARSE вызвала бы процедуру CLAUSE (главную), где список (главный) аргументов диктует особенности предложения, для которого строится анализ. Исследование слова who показывает (после просмотра словаря), что встретился терм Поэтому CLAUSE может далее ограничить свой поиск главных предложений предложениями в вопросительной форме. После этого CLAUSE разрешает в качестве следующего элемента найти группу глагола. Если терм не встретился, CLAUSE переходит к поиску группы существительного. Работа других подпрограмм, включая перераспределение свойств, аналогична.

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

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

Приведем несколько отредактированный пример подхода Винограда. На вход поступает предложение

которое производит следующие действия:

(1) PARSE вызывает Эта процедура, разыскивающая главное предложение, устанавливает, что первое слово — глагол, и заключает, что предложение повелительное:

(2) Затем CLAUSE вызывает т. е. подпрограмму для разбора группы глагола в повелительном наклонении, поскольку эта группа неизбежно будет началом повелительного предложения. Процедура VERB-GROUP просматривает свой список аргументов и передает управление той части, которая ищет глаголы в повелительном наклонении. Возможны только инфинитивы и формы глагола Поскольку pick — не форма глагола вызывается программа

(3) VERB относится к программам слов, т. е. она проверяет вхождение в словарь. В нашем случае VERB определяет, что pick—, в самом деле, инфинитив возможного основного глагола. Она отмечает также, что рассматриваемый глагол переходный и может требовать после себя предлога или наречия. Поэтому, когда VERB возвращается к VERB-GROUP, в структуре предложения включается pick со списком свойств (Последний терм — сокращенная запись свойства „Глагол может требовать после себя предлога или наречия". )

(4) Снова получив управление, VERB-GROUP определяет, что при анализе группы глагола в повелительном наклонении нужен только основной глагол, и поэтому обращается к CLAUSE. Процедура CLAUSE теперь знает, что анализируется цепочка вида и только что опознана группа глагола. Тогда разыскивается предлог (или наречие), если основной глагол его требует. Проверяя свойства обрабатываемой структуры, CLAUSE обнаруживает, что да, требует, так что вызывается процедура .

(5) — снова процедура для работы со словами. В еловаре она находит, что — наречие, а из структуры и затем из словаря, что — переходный глагол с наречием. Когда управление возвращается от эти свойства добавляются к списку свойств в CLAUSE, так что CLAUSE теперь анализирует CLAUSE(MAJOR IMPERATIVE PRT TRANSITIVE), и нужное наречие только что найдено.

(6) В этом месте процедура CLAUSE должна найти группу дополнения. Она может сделать это двумя способами, вызывая процедуру NOUN-GROUP, разыскивающую группу существительного или CLAUSE (SECONDARY) для нахождения придаточного предложения. Первая из них будет успешной. Цепочке, которую она отыщет, можно приписать функцию „дополнения». При завершении этой процедуры все слова нашей цепочки найдены, и окончательно цепочка имеет следующую структуру:

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

<< Предыдущий параграф Следующий параграф >>
Оглавление