ТОМ: Модель речевого акта: различия между версиями
ASBer (обсуждение | вклад) м (→Фаза 1 для строки введенной игроком) |
ASBer (обсуждение | вклад) м |
||
(не показано 11 промежуточных версий этого же участника) | |||
Строка 23: | Строка 23: | ||
(он же и контекст метода) | (он же и контекст метода) | ||
− | При | + | При выполнении кода на платформе ТОМ в любое время можно обратиться к специальным контекстным значениям: |
Речевые роли текущего речевого акта: | Речевые роли текущего речевого акта: | ||
Строка 50: | Строка 50: | ||
При анализе введенной команды этот же метод вызывается парсером для отсева объектов, не подходящих по контексту. | При анализе введенной команды этот же метод вызывается парсером для отсева объектов, не подходящих по контексту. | ||
− | == | + | ==Специальные переменные и свойства объектов== |
Для формирования речевого контекста парсером также используются: | Для формирования речевого контекста парсером также используются: | ||
*глобальная переменная global.narrator | *глобальная переменная global.narrator | ||
Строка 59: | Строка 59: | ||
**Addressee - значение этой переменной используется как addressee | **Addressee - значение этой переменной используется как addressee | ||
− | == | + | ==Речевой контекст фаз парсинга== |
− | + | В парсинге можно выделить 3 фазы, изменяющие речевой контектс: | |
− | + | ||
− | + | '''1 фаза''' - распознание строки. Контекст настраивается на анализ текста. Для правильного распознания необходимо понимать кто это говорит и кому говорит. | |
− | Конкретные настройки контекста зависят от категории распознаваемого текста. Об этом более подробно далее. | + | |
+ | '''2 фаза''' - проверки и генерация ошибок. Контекст настраивается на формирование ошибки как ответа на фразу. | ||
+ | |||
+ | '''3 фаза''' - выполнение действия. Контекст настраивается как повествование о выполнении действия. | ||
+ | |||
+ | Конкретные настройки контекста для каждой фазы зависят от категории распознаваемого текста. Об этом более подробно далее. | ||
===action=== | ===action=== | ||
---- | ---- | ||
Строка 77: | Строка 82: | ||
====Фаза 1 для оператора X < "command"==== | ====Фаза 1 для оператора X < "command"==== | ||
− | где X - объект персонажа, а "command" - | + | где X - объект персонажа, а "command" - строка, содержащая команду, переданную персонажу. |
− | talker = told | + | Для этой фазы парсер устанавливает следующие контекстные значения: |
− | + | talker = told | |
− | + | addressee = X | |
+ | actor = X | ||
− | + | ====Фаза 2: выполнение проверок и генерация ошибок==== | |
− | |||
− | ====Фаза 2: генерация ошибок==== | ||
====Фаза 3: выполнение действия==== | ====Фаза 3: выполнение действия==== | ||
− | talker = global.narrator | + | Для этой фазы парсер устанавливает следующие контекстные значения: |
+ | told = talker | ||
+ | addressed = addressee | ||
+ | talker = global.narrator | ||
+ | addressee = global.narrator.addressee | ||
+ | actor = pers | actor = Х //в зависимости от источника команды | ||
+ | В качестве рассказчика используем глобального нарратора. | ||
Если нарратором является протагонист, игра идет от 1го лица. | Если нарратором является протагонист, игра идет от 1го лица. | ||
− | + | Нарратор обращается к некоторому слушателю. | |
− | + | Слушателя может не быть вовсе (null), тогда игра идет от 3го лица, | |
− | + | или им может быть любой персонаж на усмотрение автора игры. | |
− | Слушателя может не быть вовсе (null), тогда игра идет от 3го лица | ||
− | |||
Если слушателем является протагонист, игра идет от 2го лица. | Если слушателем является протагонист, игра идет от 2го лица. | ||
− | + | В полях told и addressed запоминаем значения из 1 фазы - они нам еще пригодятся. | |
===phrase=== | ===phrase=== | ||
Строка 111: | Строка 119: | ||
===event=== | ===event=== | ||
---- | ---- | ||
+ | Речевой акт этой категории является произвольным описанием некоторого произошедшего события. | ||
+ | |||
====Фаза 1==== | ====Фаза 1==== | ||
====Фаза 2==== | ====Фаза 2==== |
Текущая версия на 13:15, 21 сентября 2009
Для генерации и анализа текстов в ТОМ используется достаточно сложная модель речевого акта.
Содержание
Речевой акт
(далее просто речь, фраза, команда, предложение и т.п.)
Любой текст, который вводится в ТОМ или выводится ТОМом рассматривается как речевой акт.
Речевой акт имеет четко обозначенные временные границы и определённые речевые роли.
Речевые роли четко обозначены самим языком и однозначно выделяются в речи.
В пределах одного речевого акта речевые роли неизменны. Изменение хотя-бы одной роли говорит о начале следующего речевого акта.
Значениями речевых ролей являются объекты, способные говорить, т.е. соответствующие персонажам, протагонисту, нарратору и, возможно, самому игроку.
Всего выделяется 3 речевые роли:
- некто говорящий;
- некто, к кому обращается говорящий;
- некто, упомянутый в речи и производящий некоторое активное действие.
Первые 2е роли влияют на личные местоимения (1 и 2 лицо). 3я роль влияет на возвратные местоимения.
Контекст речевого акта
(он же и контекст метода)
При выполнении кода на платформе ТОМ в любое время можно обратиться к специальным контекстным значениям:
Речевые роли текущего речевого акта:
- talker - персонаж, от которого в данный момент исходит речь;
- addressee - персонаж, которому адресована речь;
- actor - персонаж, в данный момент активно выполняющий действие;
Речевые роли предыдущего речевого акта:
- told - персонаж, произнёсший предыдущую речь;
- аddressed - персонаж, которому была адресована предыдущая речь;
Парсер самостоятельно настраивает контекст в зависимости от выполняемого действия.
Автор игры также может при необходимости изменять значения контекста.
При вызове метода создается новый контекст, и все значения копируются из контекста вызывающего метода.
Влияние на морфологические свойства объектов
Для объектов, входящих в предложение, проводится расчет морфологических ключей, зависящий от значений речевого контекста.
Так, например, если в предложении встречен объект == talker, то для него будет установлен ключ первого лица (1л) и в тексте этот объект отобразится как "я".
Для расчета контекстно-зависимых морфологических ключей объекты имеют специальный метод: CalcKey().
При анализе введенной команды этот же метод вызывается парсером для отсева объектов, не подходящих по контексту.
Специальные переменные и свойства объектов
Для формирования речевого контекста парсером также используются:
- глобальная переменная global.narrator
- свойства объектов addressee (у каждого объекта может быть свой адресат).
- предопределенные шаблонные переменные:
- Actor - значение этой переменной используется как actor.
- Talker - значение этой переменной используется как talker
- Addressee - значение этой переменной используется как addressee
Речевой контекст фаз парсинга
В парсинге можно выделить 3 фазы, изменяющие речевой контектс:
1 фаза - распознание строки. Контекст настраивается на анализ текста. Для правильного распознания необходимо понимать кто это говорит и кому говорит.
2 фаза - проверки и генерация ошибок. Контекст настраивается на формирование ошибки как ответа на фразу.
3 фаза - выполнение действия. Контекст настраивается как повествование о выполнении действия.
Конкретные настройки контекста для каждой фазы зависят от категории распознаваемого текста. Об этом более подробно далее.
action
Речевой акт этой категории является указанием о выполнении некоторого действия.
Фаза 1 для строки введенной игроком
Для этой фазы парсер устанавливает следующие контекстные значения:
talker = null addressee = pers actor = pers
Команда исходит от игрока. Игрок, как правило, не имеет отражения в игре, поэтому talker = null. Команда адресована протагонисту. Выполнять команду также будет протагонист.
Фаза 1 для оператора X < "command"
где X - объект персонажа, а "command" - строка, содержащая команду, переданную персонажу.
Для этой фазы парсер устанавливает следующие контекстные значения:
talker = told addressee = X actor = X
Фаза 2: выполнение проверок и генерация ошибок
Фаза 3: выполнение действия
Для этой фазы парсер устанавливает следующие контекстные значения:
told = talker addressed = addressee talker = global.narrator addressee = global.narrator.addressee actor = pers | actor = Х //в зависимости от источника команды
В качестве рассказчика используем глобального нарратора. Если нарратором является протагонист, игра идет от 1го лица. Нарратор обращается к некоторому слушателю. Слушателя может не быть вовсе (null), тогда игра идет от 3го лица, или им может быть любой персонаж на усмотрение автора игры. Если слушателем является протагонист, игра идет от 2го лица.
В полях told и addressed запоминаем значения из 1 фазы - они нам еще пригодятся.
phrase
Речевой акт этой категории является фразой диалога, произносимой протагонистом или другим персонажем.
Фаза 1 для строки введенной игроком
Фаза 1 для оператора X > "text"
где X - объект персонажа, а "text" - текстовка, произнесённая персонажем.
Фаза 2
Фаза 3
event
Речевой акт этой категории является произвольным описанием некоторого произошедшего события.