O que realmente acontece quando você tenta classificar palavras em português
A coisa mais comum que eu vejo gente fazer errado é tentar usar regras fixas para decidir a classe de uma palavra. Isso funciona até o momento em que você se depara com algo como "o frio", onde frio é substantivo, ou "está frio", onde a mesma palavra é adjetivo. A diferença não está na forma — está na sintaxe. Eu passei semanas tentando construir um analisador morfológico caseiro e desisti. A solução foi admitir que cada classe de palavras existe em um espectro, não como caixinhas estanques. Você precisa pensar no que cada categoria faz na frase, não apenas no que ela parece.
Entendendo todas as classes de palavras na prática
Vou listar elas da forma como eu as uso no dia a dia, com exemplos que mostrem onde a coisa complica. Substantivo — É a classe mais intuitiva, mas também a mais traiçoeira. Prazer, coragem, pensamento, branco. O problema é que praticamente qualquer verbo ou adjetivo pode virar substantivo com um artigo em frente: "o correr", "o azul". Minha dica aqui é parar de perguntar "é substantivo?" e começar a perguntar "ele atua como núcleo de um sintagma nominal?". Se sim, trate como substantivo naquele contexto específico.
Adjetivo — Modifica substantivos. Simples. Até aparecer o caso de adjetivos que funcionam como advérbios, como em "ele corre rápido" — aqui rápido não concorda com nada, então pode ser classificada como advérbio ou adjetivo invariável dependendo do framework que você está usando. Eu prefiro tratar como advérbio nesse caso, porque funciona como modificador do verbo, não do substantivo. Artigo — Definido e indefinido. O, a, os, as, um, uma, uns, umas. Parecem triviais, mas a armadilha éarticle como parte de locuções e expressões fixas. Em "de vez em quando", o em não é preposição separada — é parte de uma unidade adverbial. Classificar palavra por palavra sem olhar o contexto gera ruído absurdo.
Pronome — Aqui é onde muita gente trava. Pronome pessoal (eu, tu, ele), possessivo (meu, teu), demonstrativo (este, esse), relativo (que, o qual), indefinido (alguém, nada). O problema real aparece com que — pode ser pronome relativo, conjunção integrante, ou partícula expletiva, e só o contexto resolve. Eu aprendi isso na marra quando um script meu classificava todas as ocorrências de que como pronome relativo e estragava a análise sintática inteira. Verbo — O coração da oração. Conjugação, tempo, modo, pessoa, número. Mas cuidado com formas nominais do verbo: infinitivo (amar), gerúndio (amando), particípio (amado). Elas se comportam como verbos em alguns contextos e como adjetivos/substantivos em outros. "Tenho amado" — verbo. "A porta está amada" — adjetivo. A forma é idêntica. A classificação muda conforme a função.
Advérbio — Modifica verbo, adjetivo ou outro advérbio. Muito, bem, mal, hoje, aqui, não, sim. A pegadinha é que português tem uma quantidade enorme de palavras que são simultaneamente advérbio e outra classe. Muito pode ser advérbio ("ele come muito") ou determinante ("muita gente"). Bem pode ser advérbio ("ele fala bem") ou substantivo ("o bem e o mal"). Semambiguidade sintática, é impossível classificar corretamente. Preposição — a, ante, após, até, com, contra, de, desde, em, entre, para, perante, por, sem, sob, sobre, trás. A lista curta. O problema é que muitas preposições se confundem com outras classes. Por pode ser preposição ("passar por aqui") ou conjunção ("por favor"). Como funciona como preposição em "trabalha como professor" e como advérbio em "como você está?".
Conjunção — Coordenativas (e, mas, ou, porque) e subordinativas (que, se, quando, embora). A dificuldade real aqui é distinguir conjunção subordinativa de pronome relativo. "O livro que li" — que é pronome relativo. "Dizem que choverá" — que é conjunção integrante. A única forma confiável de separar é testar se o termo introduzido é um complemento nominal ou uma oração completa. Interjeição — Oh, ai, uh, psiu. Classe menor, menos problema. Mas atenção para interjeições que aparecem em textos formais — "Ai!" em narrativa literária não é erro de digitação, é interjeição. Classificadores automáticos costumam marcar como erro ortográfico.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Como classificar na prática
Se você está fazendo análise de texto, tem duas abordagens. A primeira é usar um tagger morfossintático. O spaCy com o modelo pt_core_news_sm ou pt_core_news_md roda bem e já traz classificações de todas as classes de palavras com boa precisão. Eu uso isso em pipelines de processamento de linguagem natural rotineiramente. A segunda abordagem, quando você precisa de mais controle, é construir regras baseadas em contexto. O truque que funcionou para mim foi parar de tentar classificar palavras isoladamente e começar a analisar o sintagma inteiro. Quando uma palavra está entre artigo e nome, é provável que seja adjetivo. Quando está antes de verbo, é provável que seja advérbio. Quando está no início de oração subordinada sem função sintática própria, é provavelmente conjunção.
O problema que eu encontrei e precisei contornar foi com palavras que mudam de classe entre formas nominais do verbo e substantivos. Meu script tratava todos os infinitivos como verbos, o que causava erros quando o infinitivo funcionava como sujeito — "Fumar faz mal", onde fumar é substantivo. A solução foi adicionar uma regra pós-processamento: se o infinitivo ocupa posição de sujeito ou complemento nominal, reclassificar como substantivo. Isso corrigiu cerca de 80% dos erros do meu tagger inicial.
Ponteiros úteis
Não existe download de classe de palavras como se fosse um arquivo — isso é conhecimento linguístico aplicado. O que você pode baixar são modelos prontos: — spaCy modelo pt_core_news_md: disponibilizado pelo spaCy, instala via python -m spacy download pt_core_news_md. Cobre todas as classes de palavras com tagset Universal Dependencies.
— Stanford CoreNLP com suporte a português: modelo disponível para download direto no site do projeto. Mais pesado que o spaCy, mas com análise sintática mais completa. — UDPipe: modelo treinado no Corpus Universitario de Português. Boa opção para projetos acadêmicos que usam treesban.
Se você está começando do zero e quer algo mais leve, o NLTK junto com o PortugueseTagger do GERES é suficiente para tarefas simples de classificação morfológica. Não espere alta precisão em textos formais ou literatura, mas para prototipagem rápida funciona.
O que ninguém te conta sobre classificação de classes de palavras
O maior erro que eu vejo é achar que o problema está resolvido quando o tagger roda. A realidade é que classificação morfossintática em português tem uma taxa de ambiguidade naturalmente alta — estimativas na literatura ficam entre 15% e 25% das palavras em textos livres. E isso antes de considerar neologismos, nomes próprios, e variações dialetais. Outro ponto importante: todos os classificate baseados em regras puras falham em textos informais. Redes sociais, mensagens de WhatsApp, comentarios de fórum — tudo isso escapa aos padrões que os modelos foram treinados para reconhecer. Eu perdi uma tarde inteira debuggando um tag que classifikava "tô" como verbo no infinitivo em vez de contração coloquial de "estou". A solução foi adicionar um dicionário de contrações informais antes do tagge rodar.
O custo de manter um sistema assim é real. Atualizar o dicionário de neologismos, ajustar regras para novos contextos, revalidar contra corpus anotados manualmente — tudo isso leva tempo. Se o seu objetivo é apenas classificação básica para um projeto pequeno, usar um modelo pré-treinado com ajustes mínimos é muito mais eficiente do que construir do zero. Só não conte que vai ter 100% de acurácia.