DSL: Linguistic Agency Transformation (LAT)

1. Общая модель

input(statement)

  → parse()
  → detect()
  → classify()
  → transform()
  → output(actionable_statement)

2. Базовые сущности

2.1 Statement

Statement {
  text: string
}

2.2 Agent

Agent {
  type: "explicit" | "implicit" | "absent"
  value: string | null
}

2.3 Action

Action {
  type: "present" | "absent" | "abstract"
  verb: string | null
}

2.4 Modality

Modality {
  type: "external" | "internal" | "undefined"
  markers: string[]
}

Примеры маркеров:

  • external: “надо”, “должен”, “приходится”
  • internal: “хочу”, “решаю”, “делаю”

2.5 Observability

Observability {
  level: 0..2
}
  • 0 — не наблюдаемо («что-то менять»)
  • 1 — частично («начать делать»)
  • 2 — конкретное действие («пишу 1 сообщение клиенту»)

3. Парсинг

parse(statement) → {
  tokens,
  verbs,
  subjects,
  markers
}

4. Детекция

detect(statement) → {
  agent: Agent,
  action: Action,
  modality: Modality,
  observability: Observability
}

5. Классификация

classify(state) → mode

Возможные режимы:

mode = 
  "action"        // есть агент + действие
  "intention"     // есть желание, нет действия
  "reflection"    // описание, без действия
  "avoidance"     // уход от агентности

6. Правила трансформации

Rule 1: Добавление агента

IF agent.type == "absent"
THEN insert("я")

Rule 2: Замена внешней модальности

IF modality.type == "external"
THEN replace_with_internal()

пример:

"надо сделать" → "я делаю"

Rule 3: Конкретизация действия

IF action.type != "present"
THEN define_observable_action()

Rule 4: Повышение наблюдаемости

WHILE observability.level < 2
  → уточнить действие

7. Трансформация

transform(statement) → actionable_statement

8. Пример

Input

"Надо что-то менять"

Detect

agent: absent
action: absent
modality: external
observability: 0
mode: avoidance

Transform

→ "я выбираю изменить X"
→ "я делаю конкретное действие Y"

Output

"Я пишу одному клиенту сегодня"

9. Минимальный интерфейс (как API)

analyze(statement) → {
  agent,
  action,
  modality,
  observability,
  mode
}

transform(statement) → {
  variants: [neutral, direct, radical, aggressive, toxic],
  recommended: actionable_statement
}

10. DSL-синтаксис (человеко-читаемый)

Почти как язык:

S: "не получается начать"

→ detect:

  agent: absent
  action: abstract
  modality: undefined

→ transform:

    +agent("я")   +action("начинаю с X")   +constraint("сегодня")  

→ result:

    "я начинаю с X сегодня"  

11. Главное правило языка

Нет агента → нет действия   Нет действия → нет изменения


Агентность и режим высказывания как базовый слой анализа речи - читать White Paper

Области прикладного применения LAT

Описание метода простыми словами

Приглашаю поучаствовать в совместном исследовании