Skip to content

Morphology Generation Specification (Lemma-First)

1) Objetivo

Evitar cadastro manual exaustivo de todas as formas.

Princípio operacional: - Cadastro primário em vocabulary (lemma-first). - word_forms é preenchida por: 1. regras de geração 2. exceções irregulares (override)

Resultado esperado: consistência morfológica, velocidade editorial e rastreabilidade por features.


2) Regras por idioma (EN como prioridade)

2.1 Verbos

Gerar: - base - 3rd person singular (-s/-es) - past - past participle - present participle (-ing)

Features mínimas por forma: - tense, aspect, person, number, mood, is_irregular

2.2 Substantivos

Gerar: - singular - plural (-s/-es + regras ortográficas) - plurais irregulares por override

Features: - number, countability

2.3 Adjetivos

Gerar: - base - comparative (-er ou more) - superlative (-est ou most)

Features: - degree

2.4 Pronomes/Determinantes

Não usar gerador aberto; usar tabela fixa validada.

Features: - person, number, case, definiteness, gender (quando aplicável)


3) Irregulars e mecanismo de override

Ordem de execução: 1. Aplicar regra regular. 2. Aplicar override irregular (prioridade máxima).

Fonte de override (sem migration nova): - Preferencial: arquivo versionado docs/irregulars/en_verbs.json. - Alternativa: tabela já existente para irregulares (somente se já existir no schema ativo).

Política: - O gerador nunca remove forma válida já revisada manualmente. - Overrides devem marcar is_irregular=true e source=override.

Exemplo mínimo de mapping:

{
  "go": { "past": "went", "past_participle": "gone" },
  "be": {
    "present_1s": "am",
    "present_3s": "is",
    "present_plural": "are",
    "past_1s": "was",
    "past_3s": "was",
    "past_plural": "were",
    "past_participle": "been"
  }
}

4) Contrato Admin: ação “Gerar formas” (Word Detail)

A ação no painel de detalhe deve: 1. Ler lemma, pos, base_lang. 2. Sugerir formas + features (preview). 3. Permitir edição manual antes do persist. 4. Salvar em word_forms (upsert por word_id + form + feature_signature).

4.1 Request conceitual

{
  "word_id": "uuid",
  "mode": "suggest|save",
  "language": "en",
  "overwrite_policy": "keep_manual",
  "forms": []
}

4.2 Response conceitual

{
  "word_id": "uuid",
  "generated": [
    {
      "form": "goes",
      "features": { "tense": "present", "person": 3, "number": "singular" },
      "is_irregular": false,
      "source": "rule"
    },
    {
      "form": "went",
      "features": { "tense": "past" },
      "is_irregular": true,
      "source": "override"
    }
  ],
  "conflicts": [],
  "saved_count": 0
}

5) Regras de qualidade

  • Não salvar duplicatas semânticas de features idênticas.
  • Sempre armazenar features estruturadas (JSON consistente).
  • Sinalizar conflito quando forma existente divergir do gerador.
  • Manter trilha de revisão humana para exceções editoriais.

6) Roadmap rápido

  • v1.0: EN rule-based + overrides irregulares.
  • v1.1: expansão para outros idiomas com packs de regra.
  • v2.0: sugestão híbrida com ranking estatístico + validação humana.

7) Escopo implementado

  • Implementação atual ativa para language=en no endpoint admin de geração.
  • POS suportadas no gerador aberto v1: verb, noun, adjective.
  • pronoun e determiner retornam erro amigável POS not supported for generation.