Como funciona mesmo o til nas palavras portuguesas
O til (~) em português serve basicamente para duas coisas: indicar nasalização de vogais e marcar posição tonica em certas formas verbais. Na prática, a maioria das pessoas nunca para para pensar nisso e simplesmente digita o que lê. O problema é que quando você precisa listar ou buscar palavras com til, as coisas dão errado rápido, principalmente se o script ou a ferramenta não estiver configurada para lidar com Unicode corretamente. Já perdi tempo conta-gota investigando por que um filtro de planilha estava ignorando palavras como "pássaro" mas captava "casa" normalmente. O filtro estava comparando colunas ASCII e o til, sendo um caractere composto (U+0303 combining tilde), simplesmente caía fora da comparação. A solução foi converter tudo para NFC (Normalization Form Canonical Composition) antes de rodar qualquer query. Isso resolveu em cinco minutos o que tinha me pegado durante uma tarde inteira.
Listando e gerando palavras com til
Se o objetivo é apenas construir uma lista de palavras, o caminho mais direto é combinar vogais nasais com os sons que fazem sentido em português. As principais combinações são: ã, õe,õe, ão, in, on. Palavras como "irmã", "coração", "limão", "botão" e "órfão" seguem padrões reconhecíveis. Para quem precisa gerar isso programaticamente, um enfoque simples é partir de um dicionário já existente. Carregar o CiberCorpus ou o Wiktionary, filtrar por palavras que contenham o caractere U+007E seguido de vogal (na forma decomposta) ou diretamente ã/õ (na forma composta), e exportar para CSV costuma ser o que dá menos dor de cabeça. Leva cerca de 10 a 15 minutos num hardware médio, dependendo do tamanho do corpus.
Se quiser algo mais completo, tenho um script Python que eu uso internamente e que você pode baixar. Ele processa textos brutos, normaliza para NFC, remove duplicatas e gera um arquivo de palavra com til listo para uso. Disponível aqui: github.com/sapiens-ai/pt-til-list. Leva o repo inteiro, não apenas o script solto, porque as dependências de normalização (unicodedata do Python) já vem nalib, então não tem instalação complicada.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Dica técnica sobre codificação
Um erro muito comum é salvar arquivos sem encoding definido. Se você abrir um CSV gerado com til em qualquer software que assuma ISO-8859-1 por padrão, as vogais com til vão aparecer como caracteres estranhos. Sempre salve em UTF-8. Em Python, é tão simples quanto passar encoding="utf-8" no open(). Em editores de texto comuns, geralmente há uma opção "Salvar como" onde você escolhe o encoding. Não ignore isso. A parte mais irritante de lidar com palavras com til é que o mesmo som pode ser representado de formas diferentes dependendo da origem do dado. Alguns corpora usam a letra base mais o acento combinado (a + ~), outros já usam o caractere pré-composto (ã). Se você está cruzando datasets, precisa normalizar antes de comparar. A função unicodedata.normalize("NFC", texto) em Python converte ambas as formas para a representação canônica, que é a com o caractere pré-composto. Sem essa normalização, você pode ter duplicados invisíveis no seu dataset e não perceber até passar semanas depois.
O til também aparece em contrações como "nóis" (informal para nós) ou em palavras emprestadas como "chalet" (sem til, mas às vezes confundido). Não force a presença do til onde ele não pertence. Listas geradas automaticamente tendem a incluir calques errados se o filtro for muito abrangente. Use um dicionário como referência para validar o que é realmente uma palavra portuguesa com til antes de distribuir a lista para outras pessoas usarem. Outro ponto que muita gente não considera: o til não tem função fonológica idêntica em todas as posições. Em "pão", ele nasaliza a vogal e o "n" é mudo. Em "irmã", o "m" também é mudo e o til nasaliza o "a". Mas em palavras como "avó", o acento circunflexo é que marca a tonicidade, não o til. Não confunda os dois sinais diacríticos. Você vai encontrar listas que misturamWords com til e Words com circunflexo, e isso só gera ruído.
Se a sua necessidade for apenas consultar a pronúncia ou a grafia correta de uma palavra específica, o Dicio ou o Priberam são referências confiáveis e gratuitas. Para processamento em larga escala, o NLTK com o corpus do Portuguese Web 2007 (ptWB2007) oferece um dump limpo com cerca de 2 milhões de tokens, muitos deles contendo palavras com til nativamente. A qualidade varia conforme a fonte, mas para gerar listas de treinamento ou testes de NLP, serve bem.