O que realmente acontecem quando você enfrenta questões classe de palavras
A classificação morfológica é uma das tarefas mais comuns em processamento de língua natural e também uma das mais negligenciadas por quem acha que resolver basta rodar um etiqueta automaticamente. A realidade é bem diferente. As ferramentas modernas fazem um trabalho razoável em textos formais, mas assim que você encontra ambiguidades estruturais ou registros informais, o sistema começa a errar feio. Já perdi horas corrigindo tags de verbos que o analisador interpretou como substantivos porque estavam em posição de sujeito. Isso acontece com frequência em construções nominais de infinitivo, como "o correr diário", onde o verbo perde sua marca de conjugação e ganha função nominal.
Como lidar com questões classe de palavras na prática
Antes de qualquer coisa, defina claramente se você está trabalhando com português do Brasil ou de Portugal. O comportamento morfológico de determinadas classes varia significativamente entre as variantes. Depois disso, a primeira decisão que importa é qual abordagem usar: regra baseada em dicionário, modelo estatístico ou modelo neural. Cada uma tem prós e contras que costumam ser mal avaliados por iniciantes. Modelos baseados em dicionário funcionam bem quando o vocabulário é restrito e o domínio é conhecido. Eu fiz um classifier simples assim para analisar transcrições de entrevistas médicas e ele atingia cerca de 92% de precisão sem nenhum treinamento supervisionado. O problema é que words fora do vocabulário simplesmente não recebem tag, e dependendo do corpus isso pode representar até 8% dos tokens. Você precisa decidir se vai manter esses tokens sem classificação ou usar um fallback.
Modelos estatísticos, como os baseados em Hidden Markov Models ou Maximum Entropy, são mais flexíveis mas exigem um corpus anotado de qualidade. O famoso POS-tagger do Brill, disponível em bibliotecas como o NLTK e o SpaCy, ainda é uma referência sólida. O que pouca gente explica é que o aprendizado de regras de reclassificação do Brill depende criticalmente da ordem em que as regras são aprendidas. Regras aprendidas primeiro dominam sobre as aprendidas depois, então a sequência de treino influencia diretamente o resultado final. Modelos neurais, especialmente os baseados em transformers, alcançam acurácias na casa dos 97-98% em português para tarefas gerais. O Universal Dependencies e o corpora do CLIN têm anotações consistentes que ajudam bastante. Mas atenção: esse ganho de precisão tem um custo. O tempo de inferência pode ser dez vezes maior que o de um modelo estatístico, e o consumo de memória é significativamente mais alto. Se você precisa processar milhões de linhas com restrições de hardware, simplesmente não faz sentido usar uma rede transformer inteira.
Um caso específico que enfrentei recentemente envolveu a palavra "que" em orações relativas e interrogativas indiretas. O tagger automático classificava tudo como pronome relativo, mas quando "que" aparecia seguido de verbo no subjuntivo em contexto interrogativo, a função era completamente diferente. Minha solução foi criar uma regra pós-processamento que verifica a combinação [que + verbo subordinado] e reclassifica para conjunção integrante quando o contexto oracional indica interrogativa indireta. Isso resolveu cerca de 60% dos erros sistemáticos que eu observava no meu corpus.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Pegadinhas que ninguém menciona
A primeira armadilha é a polissemia lexical. Palavras como "banco" podem ser substantivo (estabelecimento financeiro ou assento) dependendo exclusivamente do contexto sintático. Classificadores puramente baseados em forma lexical falham miseravelmente aqui. Você precisa obrigatoriamente de informações contextuais, ideavelmente uma janela de várias palavras ao redor do token. A segunda pegadinha é o problema dos neologismos e nomes próprios. Modelos treinados em dados até 2023 vão classificar nomes de produtos, marcas e termos cunhados recentemente como unknown ou aplicar a tag mais provável erroneamente. Se o seu domínio tem muita terminologia recente, considere fazer fine-tuning com dados do seu domínio específico. Mesmo 500 exemplos anotados manualmente podem melhorar drasticamente a performance em áreas técnicas.
A terceira questão é a normalização morfossintática. Textos colhidos de redes sociais, fóruns e chats contêm abreviações, erros ortográficos e variações informais que quebram a Majority dos analisadores. Um token como "tb" deve ser expandido para "também" antes do processo de tagging, senão o classificador não vai encontrar nenhuma correspondência no vocabulário e vai gerar tags incorretas ou ausentes. Eu costumo aplicar uma etapa de normalização prévia com um mapeador simples antes de passar o texto para o tagger principal. Outro ponto importante: a granularidade das tags. O esquema Universal Parts-of-Speech usa categorias amplas como NOUN, VERB, ADJ, ADV. Mas algumas aplicações precisam de subcategorias mais finas. O português, por exemplo, distingue entre nomes próprios (PROPN) e nomes comuns (NOUN), e entre substantivos coletivos e não-coletivos em esquemas mais detalhados. Verifique se o esquema de tagging que você escolhe atende às necessidades reais da sua aplicação. Tags excessivamente detalhadas só aumentam a complexidade sem trazer benefício proporcional.
Quando essa abordagem não funciona
A classificação de classes de palavras não resolve problemas que são fundamentalmente semânticos ou pragmáticos. Se o seu objetivo é entender a intenção do falante, detectar ironia ou classificar temas, POS tagging é apenas uma etapa intermediária e insuficiente. Muitos projetos erram ao tratar a classificação morfológica como solução final para um problema que exige compreensão semântica mais profunda. Textos poéticos, publicitários e literários representam outro cenário onde o tagging morfológico padrão falha consistentemente. O uso figurado de palavras desvia-se sistematicamente dos padrões gramaticais esperados. Um adjetivo pode funcionar como substantivo em metáforas, um verbo pode perder sua carga temporal em versos, e estruturas sintáticas intencionalmente ambíguas tornam qualquer classificação automática duvidosa. Nesse casos, a única solução confiável é análise manual ou modelos treinados especificamente com dados desse gênero textual.
Se você está começando do zero, recomendo usar o SpaCy com o modelo pt_core_news_md como ponto de partida. Ele oferece um bom equilíbrio entre velocidade e precisão para a maioria dos casos. Para projetos mais exigentes, invista tempo anotando pelo menos algumas centenas de exemplos do seu domínio específico e faça fine-tuning. O retorno sobre o investimento em qualidade de anotação é muito maior do que apenas ajustar hiperparâmetros do modelo.