ConjugAI

Conjugação verbal assistiva em CAA: apoio a frases telegráficas em português do Brasil (pessoa gramatical e tempos verbais).

Entrada

Texto bruto
Tempo Verbal (Opcional)

Processamento

Passo a passo

Selecione um exemplo ou digite uma frase e clique em Analisar.

Saída

Frase final

O resultado aparecerá aqui após a análise.

Problemática, solução e pranchas

Problemática

Em comunicação aumentativa e alternativa (CAA), muitas mensagens são telegráficas: o utilizador pode seleccionar palavras ou pictogramas sem conjugar o verbo nem marcar sempre a pessoa ou o tempo de forma explícita. Isso produz frases como «eu quer», «nós ir», ou infinitivos isolados — pouco alinhadas com o português falado e escrito, e pouco informativas para quem lê ou ouve a mensagem.

Como o ConjugAI aborda o problema

O ConjugAI concentra-se na conjugação verbal em função do sujeito (incluindo sujeito composto) e do tempo (presente, futuro ou passado a partir de marcadores como amanhã e ontem). O núcleo conjugai-core faz tokenização, identificação de sujeito e tempo, consulta a um léxico de formas e aplica regras de presente regular quando aplicável; em seguida reconstrói a frase substituindo a forma verbal pela flexão adequada. Esta página mostra o processo passo a passo para inspeccionar o pipeline e apoiar testes ou integrações.

Integração com pranchas de comunicação assistiva

As pranchas (conjuntos de símbolos ou pictogramas) podem mapear diretamente para o que o motor já espera: por exemplo, símbolos de tempo equivalentes a «ontem» / «amanhã» para escolher passado ou futuro; núcleos de sujeito (eu, nós, nomes + «e») para a pessoa gramatical; e o verbo como infinitivo ou forma do léxico. O fluxo típico seria: selecção na prancha → texto linear (ou lista de tokens) → pipeline ConjugAI → mensagem lida por voz ou mostrada em texto flexionado.

O motor está empacotado como JavaScript offline (conjugai-core.js), o que facilita integrar numa app (por exemplo em React) ou num cliente móvel, alinhado ao requisito de leveza em dispositivos usados em CAA — sem obrigar a um servidor para a conjugação básica.

A integração com sistemas de pranchas específicos pode ser realizada via API do `conjugai-core`.

Como a tokenização funciona

A função tokenize prepara a frase para os passos seguintes: divide por espaços, remove segmentos vazios e limpa pontuação final em cada pedaço (vírgula, ponto, interrogação, etc. só no fim do token).

O que não faz (por agora)

Não há segmentação por vírgulas no meio da frase, nem tratamento de contrações tipo do/da como dois morfemas: cada bloco entre espaços é um token.

Como o algoritmo identifica sujeito e pessoa

O motor (conjugai-core) corre depois da tokenização e antes do tempo verbal e da conjugação. A ideia é obter o pronome de referência e o índice de pessoa (0–4) usados na conjugação do pipeline CAA.

1. Onde está o verbo?

Primeiro localiza-se um infinitivo (ex.: comer, ir) ou uma forma reconhecida pelo léxico. Tudo o que fica à esquerda desse verbo é tratado como prefixo de sujeito (pode ser vazio).

2. Sujeito composto com «e»

Se o prefixo tiver pelo menos três tokens, contiver o conector «e» e corresponder ao padrão telegráfico X e Y antes do verbo, aplica-se uma de três regras:

  • Se aparecer «eu» → sujeito verbal Nós (1.ª plural), pessoa 3 no motor.
  • Se aparecer «tu» ou «você» → Vocês e pessoa 4 (forma verbal alinhada a «eles» em PT-BR).
  • Caso contrário (ex.: nomes próprios) → Eles, pessoa 4.

3. Caso especial «Eu + mamãe/papai»

Combinações como eu e mamãe ou mamãe e eu (e variantes com «papai») são mapeadas para Nós (1.ª plural), por ser um sujeito composto familiar frequente em CAA.

4. Sujeito simples (pronome explícito)

Se nenhuma regra composta se aplicar, procuram-se, nos tokens antes do verbo, pronome(s) como nós, eles, ela, ele, eu, tu (comparação normalizada, sem acentos). O primeiro critério que coincidir define o sujeito e a pessoa.

5. Sujeito implícito

Se não houver pronome reconhecível, assume-se Eu (1.ª pessoa do singular) — adequado a muitas telegrafias em que o falante omite o pronome.

6. Oração composta (coordenação)

Se a frase tiver duas (ou mais) orações ligadas por coordenação («e», «ou», «mas», «porém», «então»), o motor segmenta em blocos com verbo cada um. Os conectores «e» e «ou» só partem orações quando aparecem depois do primeiro verbo — assim João e Maria comer ou Ana ou Pedro viajar continuam como sujeito composto. Exemplos na barra lateral: Eu comer e ele dormir, Eu comer ou ele dormir (com tempo futuro na UI), Eu comer pizza e dormir, Ele viajar mas eu ficar.

7. SVP e SVO (interruptores na entrada)

Por omissão os dois estão desligados: o motor só procura sujeito antes do verbo (heurísticas habituais) e não reordena a frase.

SVP (sujeito–verbo–predicado): o prefixo inteiro é o sujeito (incluindo as crianças e a gente) e o que vem depois fica no predicado. Desfaz a ambiguidade eu mamãe querer (co-sujeito) vs eu querer mamãe (objeto).

SVO (sujeito–verbo–objeto): aceita sujeito depois do verbo (VSO/VOS) e reordena para a ordem direta (comer eu maçã → Eu como maçã).

No pipeline CAA, os índices 0–4 correspondem a: eu, tu, ele/ela, nós, eles/vocês. Na demo de paradigma da raiz existe também API de tabela com 0–5 (inclui vós).

Como o tempo verbal é escolhido

O motor olha a lista de tokens (já sem acentos na comparação) e procura marcadores «amanhã» e «ontem». O resultado é um tempo verbal (presente, futuro ou passado) usado depois na conjugação.

Regras (resumo)

  • Seleção Manual (UI): Botões de tempo na interface têm prioridade máxima sobre os marcadores da frase.
  • «ontem» em qualquer posição → Pretérito Perfeito (passado).
  • «amanhã» → por defeito Futuro do Presente (futuro), exceto se a frase começar com perífrase de ir no presente (vou/vai/vamos…) e ainda houver «amanhã» — aí o verbo suporte fica no presente (caso típico vou viajar amanhã).
  • Sem marcadores ou seleção → Presente (presente).
  • Oração composta: em períodos com várias orações coordenadas, os marcadores são lidos dentro de cada oração (a seleção manual de tempo na UI aplica-se a todas, como antes).

Como a conjugação é aplicada

Dados o infinitivo (ou forma reconhecida no léxico), a pessoa (0–4) e o tempo, o pipeline chama conjugarTempo. Primeiro tenta o léxico verbos.json; se o verbo não estiver no léxico, o motor aplica regras regulares de sufixos (-ar / -er / -ir) para presente, passado e futuro. Tempos compostos utilizam o auxiliar mais o particípio.

Locuções verbais (telegrafia)

O lema escolhido para conjugar pode ser o núcleo de uma locução: por exemplo ter que ou ter de + infinitivo (o verbo flexionado é ter, não o segundo verbo); poder / dever + infinitivo; começar a, acabar de, etc. O «que» de ter que não deve ser lido como subjuntivo isolado — o tempo segue os marcadores habituais (ou a seleção manual). A forma posso é tratada como poder nestes padrões (evita colisão léxica com outro verbo homógrafo).

Orações compostas coordenadas

Quando a entrada é segmentada em várias orações, cada uma passa pelo mesmo fluxo (sujeito → tempo → conjugação → corrigir); a frase final junta as correções e repete o conector. Subordinação (ex.: que, embora) não é analisada como orações separadas nesta versão.

Fallbacks

Verbos regulares em -ar / -er / -ir possuem cobertura automática para presente, passado (perfeito) e futuro mesmo fora do léxico. Verbos irregulares ou formas compostas complexas dependem de dados em verbos.json.