30 de maio de 202610 min de leitura

Como escolher o analyzer de idioma certo para o Azure AI Search

Abhishree Shetty, Alec Berntson, Lihang Li

Azure

Banner - Como escolher o analyzer de idioma certo para o Azure AI Search

TL;DR: Este artigo analisa o estudo da Microsoft que comparou analyzers de idioma Lucene, Microsoft e a opção padrão (None) no Azure AI Search. Conclusão principal: sempre use um language analyzer — o ganho médio de qualidade de busca (NDCG@10) é de +15%, podendo chegar a +120% para idiomas como finlandês e coreano. A diferença entre Lucene e Microsoft é pequena (menos de 2% de variação), e não há penalidade de latência. Para conteúdo limpo (documentos estruturados), Lucene leva leve vantagem; para conteúdo ruidoso (tickets de suporte), Microsoft é superior. Recomenda-se testar com a Analyze API.

O que um language analyzer faz?

Por padrão, o Azure AI Search usa um tokenizer padrão que divide o texto em espaços e pontuação e converte para minúsculas — sem qualquer inteligência linguística. Um language analyzer adiciona processamento linguístico:

  • Segmentação — Identifica limites de palavras em idiomas sem espaços (ex.: coreano → tokens separados)
  • Lemmatization — Reduz formas flexionadas à base (ex.: fuimos, vamos, yendo → ir)
  • Compound decomposition — Quebra palavras compostas (ex.: Krankenhausverwaltungssystem → Kranken + haus + verwaltung + system)

O Azure AI Search oferece quatro opções de analyzer:

Opção O que faz Idiomas
None (padrão) Tokenizer Lucene Standard. Apenas divisão por espaços/pontuação e minúsculas. Sem linguística. N/A
Lucene Analyzers open-source Apache Lucene. Usam stemming e remoção de stopwords. ~35
Microsoft Tecnologia NLP proprietária da Microsoft (usada no Office e Bing). Inclui lemmatization, decompounding e entity recognition. 50+
Custom Combinação definida pelo usuário de tokenizer, filtros e character filters. Qualquer

Tabela 1: Opções de language analyzer no Azure AI Search

Abaixo, como cada opção processa o mesmo texto em diferentes idiomas:

| Idioma | Entrada | None | Lucene | Microsoft |
|---|---|---|---|
| Inglês | "items in conflict and did not sync" | items, in, conflict, and, did, not, sync | item, conflict, did, sync | item, items, conflict, do, did, synch, sync |
| Coreano | "서울에서 맛있는 음식점 추천해주세요" | 서울에서, 맛있는, 음식점, 추천해주세요 | 서울, 울에, 에서, 맛있, 있는, 음식, 식점, 추천, ... | 서울에서, 서울, 맛있는, 음식점, 음식, 추천해주세요, 추천, 주세요 |
| Espanhol | "Los usuarios no pueden iniciar sesión" | los, usuarios, no, pueden, iniciar, sesión | usuari, pueden, iniciar, sesion | usuario, usuarios, no, poder, pueden, iniciar, sesion, sesión |
| Sueco | "Snabbstart fungerar inte från datorn" | snabbstart, fungerar, inte, från, datorn | snabbstart, funger, datorn | snabbstart, snabb, start, fungera, fungerar, inte, från, dator, datorn |

Tabela 2: Tokenização de cada analyzer para o mesmo texto de entrada

Os tokens foram gerados usando a Analyze API do Azure AI Search. Você pode testar com seu próprio texto.

A escolha do analyzer realmente importa?

Das 31 combinações idioma–dataset testadas, o tokenizer padrão (None) nunca venceu. Em todos os casos, um language analyzer entregou resultados superiores.

Estratégia Avg NDCG@10 vs None
Microsoft 0.4252 +15.4%
Lucene 0.4177 +13.4%
None 0.3684 baseline

Tabela 3: NDCG@10 médio em todas as 31 combinações

O ganho varia por idioma. Idiomas morfologicamente complexos (finlandês, coreano, polonês) têm os maiores lifts — acima de +70%. Idiomas CJK também se beneficiam muito por não terem espaços delimitadores.

Idioma Dataset Melhor Analyzer NDCG@10 (Melhor) NDCG@10 (None) Lift
Finlandês Support Microsoft 0.2752 0.1253 +119.6%
Coreano Support Lucene 0.3252 0.1520 +113.9%
Polonês Support Microsoft 0.2759 0.1611 +71.3%
Espanhol Support Lucene 0.2469 0.1596 +54.7%
Coreano MIRACL Microsoft 0.6895 0.4624 +49.1%
Japonês MIML Lucene 0.5348 0.3806 +40.5%
Chinês MIML Microsoft 0.5668 0.4292 +32.1%

Tabela 4: Idiomas com maior ganho de qualidade de busca usando language analyzer

Conclusão principal: Sempre use um language analyzer.

Como os clientes usam analyzers hoje?

A Microsoft analisou o uso de analyzers nos índices do Azure AI Search:

Métrica Valor
Índices usando algum language analyzer 27.8%
Participação Microsoft (entre quem usa) 64.8%
Participação Lucene (entre quem usa) 31.2%
Misto (ambos) 4.0%

Tabela 5: Métricas de adoção de language analyzer

Entre os que usam, o comportamento alinha-se com os achados do estudo: francês prefere Lucene, coreano prefere Microsoft, inglês inclina-se para Microsoft (68.4%).

Conclusão: A maioria dos clientes ainda não usa um language analyzer.

Lucene vs Microsoft — o quadro completo

Analyzer Vitórias (de 31) % do NDCG@10 ótimo
Microsoft 17 96.7%
Lucene 14 95.0%
None 0 86.8%

Tabela 6: Vitórias por analyzer em NDCG@10

As diferenças são pequenas: inglês (Microsoft 0.9413 vs Lucene 0.9383 — diferença de 0.0030), chinês (Microsoft 0.5668 vs Lucene 0.5646 — diferença de 0.0022). Não há diferença significativa de qualidade entre os dois.

Cobertura de idiomas

Microsoft suporta 50 idiomas; Lucene, ~35. Para mais de 20 idiomas, Microsoft é a única opção: croata, estoniano, gujarati, hebraico, hindi, islandês, kannada, letão, lituano, malaiala, malaio, marata, punjabi, sérvio, eslovaco, esloveno, tâmil, telugu, ucraniano, urdu, vietnamita.

Efeito do tipo de corpus

Definimos duas categorias:

  • Texto limpo: conteúdo bem formatado e editado (artigos acadêmicos, Wikipedia, bases de conhecimento curadas).
  • Texto ruidoso: conteúdo gerado por usuário ou operacional (tickets de suporte, consultas curtas, fóruns).

A escolha entre Lucene e Microsoft depende do tipo de conteúdo:

Dataset Tipo de Conteúdo Vitórias Lucene Vitórias Microsoft Vitórias None Média NDCG Lucene Média NDCG Microsoft
MIML Limpo, documentos multisetoriais 4/6 2/6 0/6 0.6845 0.6359
MIRACL Limpo, passagens Wikipedia 5/7 2/7 0/7 0.6444 0.6425
Support Ruidoso, tickets de suporte 5/18 13/18 0/18 0.2406 0.2705

Tabela 7: Desempenho do analyzer por tipo de conteúdo

Em dados limpos, Lucene tem vantagem (+7.6% no MIML). Em dados ruidosos, Microsoft vence decisivamente: 13 de 18 idiomas, com NDCG médio +12.4% superior ao Lucene.

Por dentro — por que os resultados diferem?

Lucene

Analyzers Lucene reduzem palavras a radicais curtos usando algoritmos baseados em regras (Porter, Snowball). Isso aumenta recall — uma busca por attach encontrará attachments, attached ou attaching. É eficaz em textos limpos, mas em textos ruidosos o stemming pode ser agressivo demais, prejudicando a precision.

Entrada Token Lucene Efeito
settings set Matching mais amplo, mas colide com set, setup, setter
brightness bright Perde a forma nominal específica
attachments attach Recall bom, mas puxa conteúdo vagamente relacionado
Windows (polonês) winc Nome próprio truncado por regras de stemming

Tabela 8: Exemplos de comportamento do stemming Lucene

Microsoft

Analyzers Microsoft preservam o termo original e adicionam variantes normalizadas — por exemplo, settings gera tanto settings quanto setting. Isso dá benefícios de recall similares ao stemming, mas mantém a forma original para matching preciso.

Além disso:

  • Preservam nomes próprios: Windows permanece Windows.
  • Decompõem compostos: sueco snabbstartsnabb + start.
  • Retêm mais stopwords: onde Lucene remove in, not, and, Microsoft mantém mais.

Comparação em texto ruidoso

Considere uma consulta típica de suporte: "how to fix Windows settings not responding after update"

  • None (9 tokens): how, to, fix, windows, settings, not, responding, after, update
  • Lucene (7 tokens): how, fix, window, set, respond, after, updat — perde to, not, windows; colapsa settingsset, updateupdat
  • Microsoft (10 tokens): how, fix, window, windows, setting, settings, respond, responding, after, update — mantém originais e adiciona formas normalizadas

Lucene perde not (contexto de negação) e settings vira o genérico set. Microsoft preserva o significado.

Há custo de latência durante a busca?

Analyzers rodam tanto na indexação quanto na consulta, mas o processamento mais pesado ocorre na indexação. Em tempo de consulta, as três opções produzem latências p50 e p95 idênticas. Verificamos isso em vários idiomas sob carga concorrente. Sua escolha de analyzer não afeta a performance da busca.

Recomendações práticas

Árvore de decisão

Figura 1: Árvore de decisão para escolha de language analyzer no Azure AI Search

Figura 1: Quadro de decisão para escolha de language analyzer

Overrides específicos por idioma

Para três idiomas, os dados são consistentes em todos os datasets:

Idioma Recomendado Evidência Margem NDCG
Alemão (de) Lucene Vence 2/2 datasets (MIML, Support) +0.042
Espanhol (es) Lucene Vence 3/3 datasets (MIML, MIRACL, Support) +0.040
Chinês (zh) Microsoft Vence 2/2 datasets (MIML, Support) +0.010

Tabela 9: Idiomas com preferência consistente

Para outros idiomas, a melhor escolha depende do tipo de conteúdo — Lucene para dados limpos, Microsoft para dados ruidosos. Nota: Estes resultados são baseados em três datasets de teste. Recomendamos validar seus próprios dados usando a Analyze API.

Principais conclusões

  1. Sempre configure um language analyzer. O maior ganho vem de usar qualquer analyzer vs None (+15% médio). A diferença Lucene-vs-Microsoft é secundária.
  2. Ambos Lucene e Microsoft são escolhas seguras. Sempre-Lucene captura 95.0% do NDCG ótimo; Sempre-Microsoft captura 96.7%.
  3. Não há penalidade de latência. A escolha do analyzer não afeta a performance da consulta.
  4. Use analyzers por campo em índices multilíngues. Cada campo deve usar seu próprio analyzer para melhores resultados.
  5. Microsoft é o padrão mais amplo. 50 idiomas, normalização que preserva significado e única opção para mais de 20 idiomas.

Artigo originalmente publicado por Abhishree Shetty, Alec Berntson, Lihang Li em Azure Updates - Latest from Azure Charts.

Perguntas Frequentes

  • Devo usar sempre um language analyzer no Azure AI Search?
    Sim. Em todos os 31 testes realizados, o uso de qualquer analyzer (Lucene ou Microsoft) superou a opção padrão (None). O ganho médio foi de +15% no NDCG@10, e para idiomas complexos como finlandês e coreano o ganho ultrapassou +100%. É a configuração mais impactante que você pode fazer.

  • Qual a diferença prática entre Lucene e Microsoft analyzers?
    Lucene usa stemming (redução a radicais curtos) e é melhor para textos limpos e bem formatados. Microsoft preserva termos originais e adiciona variantes normalizadas, sendo melhor para textos ruidosos como tickets de suporte. A diferença de qualidade média entre os dois é inferior a 2%, então ambos são seguros.

  • Há impacto na latência das consultas ao escolher um analyzer?
    Não. Os testes da Microsoft mostraram que os tempos de resposta (p50 e p95) são idênticos entre None, Lucene e Microsoft para todos os idiomas testados sob carga concorrente. O processamento mais pesado ocorre na indexação, não na consulta.

  • Quais idiomas têm preferência clara por Lucene ou Microsoft?
    Alemão e espanhol consistentemente favorecem Lucene (com margem de +0.042 e +0.040 NDCG, respectivamente). Chinês favorece Microsoft (margem +0.010). Para os demais idiomas, a escolha depende do tipo de conteúdo: Lucene para dados limpos, Microsoft para dados ruidosos. Microsoft é a única opção para mais de 20 idiomas.

  • Como validar qual analyzer é melhor para meu conteúdo?
    Use a Analyze API do Azure AI Search para testar como diferentes analyzers tokenizam seu texto real. O estudo recomenda validar com seus próprios dados, especialmente se seu conteúdo for de um domínio específico ou tiver características linguísticas particulares.

Gostou? Compartilhe:
Precisa de ajuda?Fale com nossos especialistas 👋
Avatar Walcew - Headset