API de detecção de idioma: como funcionam os trigramas
A detecção de idioma por frequência de trigramas identifica o idioma de um texto contando as sequências de três caracteres que ele contém e comparando essa distribuição com perfis pré-calculados de cada idioma. É uma técnica estatística compacta e rápida que não precisa de modelo neural, e é a abordagem por trás do detector de idioma do ipto, que cobre 76 idiomas.
Como funciona a detecção por trigramas
Cada idioma tem combinações de letras características. Em inglês, sequências como "the", "ing" e "ion" estão por toda parte; em espanhol, "ión", "que" e "los" ocupam o lugar delas; em alemão, "sch", "ein" e "der" são frequentes. Um trigrama é simplesmente uma sequência de três caracteres tirada do texto, geralmente após converter para minúsculas e remover dígitos e pontuação, mantendo os espaços para que os limites das palavras façam parte do padrão. A string " th", por exemplo, indica uma palavra que começa com "th".
O detector constrói de antemão um perfil para cada idioma contando trigramas em um grande corpus de referência e ordenando-os por frequência. No momento da consulta, ele faz o mesmo com o seu texto e mede o quão próxima essa distribuição está de cada perfil armazenado. Vence o idioma com a menor distância, e a diferença entre o melhor candidato e o segundo melhor fornece um valor de confiança. Como os perfis são tabelas de consulta, o trabalho por requisição é uma única passagem pelo texto mais algumas comparações. Nenhum serviço remoto é necessário, então nada sobre o texto precisa sair do servidor.
Scripts versus trigramas
As estatísticas de trigramas são mais úteis quando muitos idiomas compartilham um sistema de escrita. Os scripts latino, cirílico, árabe e devanágari abrigam cada um muitos idiomas, e o detector precisa recorrer a padrões de frequência para distinguir português de espanhol ou russo de ucraniano. Para idiomas que têm um script próprio, como grego, tailandês, coreano, tâmil ou bengali, o script sozinho geralmente basta para nomear o idioma, então nenhuma comparação de frequência é necessária. Chinês e japonês exigem um pouco mais de cuidado, já que o texto japonês mistura kana com caracteres Han, o que é uma forte pista para o japonês. No ipto, 61 dos 76 idiomas são separados por frequência de trigramas e os outros 15 são reconhecidos pelo script.
Onde funciona bem e onde não funciona
Para textos curtos da web, como títulos, comentários, consultas de busca e chamados de suporte, os métodos de trigramas são uma boa escolha. Precisam de muito pouca entrada para produzir um palpite útil, são baratos de executar e totalmente determinísticos, o que torna o comportamento fácil de testar e depurar. Classificadores neurais grandes podem ser mais precisos em casos difíceis, sobretudo com texto extremamente curto ou ruidoso, mas custam mais para executar e são mais difíceis de inspecionar. O que é melhor depende das suas necessidades de precisão e das suas restrições; para roteamento e etiquetagem, um detector leve costuma bastar.
Conheça seus modos de falha antes de depender dele:
- Entrada muito curta. Poucos caracteres oferecem trigramas insuficientes. A API do ipto retorna um idioma nulo para entradas com menos de 10 caracteres e, para entradas com menos de cerca de 30 caracteres, pode dar um melhor palpite, mas marca
reliablecomo false. - Idiomas muito próximos. Norueguês e dinamarquês, ou croata e sérvio, compartilham a maioria de seus trigramas. Verifique os candidatos seguintes quando a confiança for baixa.
- Texto em vários idiomas. A comparação de perfis pressupõe um idioma dominante. Um parágrafo que muda de idioma no meio retornará o idioma que possuir a maior parte dos caracteres.
- Ruído. URLs, código, hashtags e códigos de produto acrescentam trigramas que não pertencem a nenhum idioma. Remova-os antes da detecção.
- Idiomas raros. Um idioma fora do conjunto suportado retorna a correspondência estatística mais próxima, e não uma exata.
Usando na prática
Você pode colar texto no detector de idioma para ver o idioma vencedor, um valor de confiança e os candidatos seguintes. Pelo código, chame GET /v1/language?text=Bonjour; a requisição é analisada localmente, o texto não é enviado a um fornecedor terceirizado nem a um modelo de IA e nada é registrado. O plano gratuito permite 1.000 requisições por dia sem cadastro, e a documentação da API descreve os campos da resposta.
Usos comuns incluem escolher o idioma de origem de uma tradução, definir o atributo lang de uma página e encaminhar chamados de suporte à equipe certa. Outro padrão útil é associar o idioma do texto ao contexto de rede. O idioma é um sinal sobre quem escreve, não sobre a conexão, então muitas vezes discordará da origem da conexão; um usuário falante de espanhol na França ou em uma VPN é perfeitamente normal. Se quiser comparar os dois sinais, uma verificação de VPN e proxy no endereço IP ajuda a ver se uma divergência de localização tem uma explicação de rede, e o parser de User-Agent expõe o contexto de navegador e dispositivo. Trate qualquer divergência como uma pista, nunca como prova de que algo está errado.