POTHIEDU Não Decore a Resposta. Entenda o Caminho

Dígrafos Separáveis E Inseparáveis

Dígrafos Separáveis E Inseparáveis

Como lidar com dígrafos em processamento de texto

A primeira coisa que todo mundo tenta fazer é separar letras e contar frequência. Quando você chega num texto em português, logo percebe que ch, lh e nh não se comportam como pares arbitrários. Eles são unidades fonológicas que, dependendo da ferramenta ou do objetivo, precisam ser tratadas de forma diferente. Não existe regra única que funcione para tudo, então é melhor entender o que cada caso exige antes de aplicar qualquer algoritmo. Dígrafos são combinações de duas ou mais letras que representam um único som. O ch em cachorro, o lh em filho e o nh em manhã são os exemplos clássicos do português. A questão prática não é só a definição, mas se você vai separar esses grafemas ou mantê-los juntos no seu pipeline. Isso muda completamente como tokenização, busca, filtragem e até correção ortográfica vão se sair. No meu trabalho com normalização de dados para modelos de linguagem, eu sempre começo definindo o objetivo antes de escolher a estratégia. Se você está treinando um modelo char-level ou subword-level, costuma ser melhor manter os dígrafos inseparáveis. Já em sistemas de busca ou indexação mais ingênuos, às vezes separar ajuda a evitar perdas por variação morfológica. A escolha tem custo, e ela é mais importante do que a maioria das pessoas assume.

Eu tive um problema concreto recentemente com uma base de transcrições de áudio que precisava ser alinhada com textos normatizados. O algoritmo simples de split por caractere estava quebrando palavras como "enchergar" (na variação dialetal) e "chapéu", gerando alinhamentos duplicados e falsos positivos em cerca de 18% dos casos. A solução que funcionou foi criar uma regra de pré-processamento que reconhecesse os dígrafos ch, lh, nh, rr e ss antes da quebra, tratando-os como tokens únicos dentro de um dicionário de mapeamento. Depois disso, o alinhamento caiu para algo perto de 2,3% de erro. Não foi perfeito, mas resolveu a maior parte do ruído que o split cego causava. Um detalhe que poucos mencionam é que dígrafos nem sempre são fixos na escrita. Em textos históricos ou em dialetos, você encontra casos como "cção" em vez de "ção" em abreviações antigas, ou variações regionais que misturam sons similares. A lista padrão de ch, lh, nh é apenas um ponto de partida. Se seu sistema precisa lidar com corpus reais, você vai encontrar exceções cedo ou tarde. Outra coisa que vejo muita gente errar é tratar dígrafos como sinônimos perfeitos de seus fonemas correspondentes. Por exemplo, o som // pode ser representado por ch, x, ou até s em empréstimos linguísticos. Um sistema que só mapeia ch para um token fixo vai falhar em palavras como "sexo" ou "praxe". O mesmo vale para o // do lh e o // do nh, que podem aparecer em formas derivadas ou compostas de maneiras inesperadas. A solução não é complicada, mas exige uma camada extra de reconhecimento baseada em contexto, não apenas em substituição global.

Se você está implementando isso do zero, uma abordagem prática é construir uma máquina de estados finitos simples que identifique dígrafos antes de qualquer splitting. Isso evita a maioria dos problemas comuns e roda rápido em CPU. Para conjuntos de dados muito grandes, vale a pena testar bibliotecas como spaCy ou Stanford CoreNLP, que já trazem pipelines mais robustos, embora com overhead maior. Limitações existem. Dígrafos fixos não resolvem todos os problemas de normalização, e em alguns domínios, como processamento de linguagem médica ou jurídica, as variações são tão grandes que nem a melhor heurística evita retrabalho. Nesses casos, o mais sensato é combinar regra fixa com aprendizado supervisionado em amostras específicas do domínio, sob pena de gastar tempo demais ajustando o que já está quebrado. Se quiser testar algo rápido, um script simples em Python que lê um texto, aplica regras de dígrafo antes de split e exporta para CSV costuma resolver para a maioria dos projetos pequenos. Eu tenho um repositório com um exemplo funcional que segue essa linha, mas o importante é adaptar ao que você realmente precisa, não copiar padrão pronto.

Principais digrafos | Quais são os dígrafos, Dígrafos separáveis e ...
Principais digrafos | Quais são os dígrafos, Dígrafos separáveis e ...

No final, a questão não é saber a teoria dos dígrafos. É saber quando e como eles vão interferir no seu pipeline, e ter uma resposta concreta para isso antes que o problema apareça em produção.