Adicionar analisadores de idioma a campos de cadeia de caracteres em um índice do Azure AI Search

Um analisador de linguagem é um tipo específico de analisador de texto que realiza análise lexical usando as regras linguísticas do idioma de destino. Cada campo de cadeia de caracteres pesquisável tem uma propriedade de analisador . Se o seu conteúdo consistir em cadeias de caracteres traduzidas, como campos separados para texto em inglês e chinês, você poderá especificar analisadores de idioma em cada campo para acessar os recursos linguísticos avançados desses analisadores.

Quando usar um analisador de linguagem

Você deve considerar um analisador de linguagem quando o conhecimento da estrutura de palavras ou frases agrega valor à análise de texto. Um exemplo comum é a associação de formas verbais irregulares ("trazer" e "trazer") ou substantivos plurais ("ratos" e "rato"). Sem consciência linguística, essas cordas são analisadas apenas em características físicas, o que não consegue captar a conexão. Como grandes pedaços de texto são mais propensos a ter esse conteúdo, os campos que consistem em descrições, revisões ou resumos são bons candidatos para um analisador de linguagem.

Você também deve considerar analisadores de linguagem quando o conteúdo consiste em cadeias de caracteres de linguagem não ocidentais. Enquanto o analisador padrão (Standard Lucene) é agnóstico em relação à linguagem, o conceito de usar espaços e caracteres especiais (hífenes e barras) para separar cadeias de caracteres é mais aplicável às línguas ocidentais do que às não ocidentais.

Por exemplo, em chinês, japonês, coreano (CJK) e outras línguas asiáticas, um espaço não é necessariamente um delimitador de palavras. Considere a seguinte cadeia de caracteres japonesa. Como não tem espaços, um analisador agnóstico de linguagem provavelmente analisaria toda a string como um token, quando na verdade a string é na verdade uma frase.

これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)

Para o exemplo acima, uma consulta bem-sucedida teria que incluir o token completo ou um token parcial usando um curinga de sufixo, resultando em uma experiência de pesquisa não natural e limitante.

Uma experiência melhor é procurar palavras individuais: 明るい (Bright), 私たちの (Our), 銀河系 (Galaxy). Usar um dos analisadores japoneses disponíveis no Azure AI Search tem mais probabilidade de desbloquear esse comportamento porque esses analisadores estão mais bem equipados para dividir o pedaço de texto em palavras significativas no idioma de destino.

Comparando Lucene e Microsoft Analyzers

O Azure AI Search suporta 35 analisadores de linguagem apoiados pelo Lucene e 50 analisadores de idiomas apoiados pela tecnologia proprietária de processamento de linguagem natural da Microsoft utilizada no Office e no Bing.

Alguns desenvolvedores podem preferir a solução mais familiar, simples e de código aberto do Lucene. Os analisadores de idioma Lucene são mais rápidos, mas os analisadores da Microsoft têm recursos avançados, como lemmatização, decomposição de palavras (em idiomas como alemão, dinamarquês, holandês, sueco, norueguês, estoniano, finlandês, húngaro, eslovaco) e reconhecimento de entidades (URLs, e-mails, datas, números). Se possível, você deve executar comparações dos analisadores Microsoft e Lucene para decidir qual é o melhor ajuste. Você pode usar a API de análise para ver os tokens gerados a partir de um determinado texto usando um analisador específico.

A indexação com analisadores da Microsoft é, em média, duas a três vezes mais lenta do que seus equivalentes Lucene, dependendo do idioma. O desempenho da pesquisa não deve ser significativamente afetado para consultas de tamanho médio.

Analisadores em inglês

O analisador padrão é o Standard Lucene, que funciona bem para o inglês, mas talvez não tão bem quanto o analisador em inglês do Lucene ou o analisador em inglês da Microsoft.

  • O analisador inglês de Lucene estende o analisador padrão. Ele remove possessivos (trailing 's) das palavras, aplica derivação de acordo com o algoritmo de Porter Stemming e remove palavras paradas em inglês.

  • O analisador em inglês da Microsoft realiza lemmatização em vez de derivação. Isso significa que ele pode lidar com formas de palavras flexionadas e irregulares muito melhor, o que resulta em resultados de pesquisa mais relevantes.

Como especificar um analisador de idiomas

Defina o analisador durante a criação do índice antes de ser carregado com dados.

  1. Na definição de campo, certifique-se de que o campo é atribuído como "pesquisável" e é do tipo Edm.String.

  2. Defina a propriedade "analyzer" como um dos analisadores de linguagem da lista de analisadores suportados.

    A propriedade "analyzer" é a única propriedade que aceitará um analisador de linguagem e é usada para indexação e consultas. Outras propriedades relacionadas ao analisador ("searchAnalyzer" e "indexAnalyzer") não aceitarão um analisador de linguagem.

Os analisadores de linguagem não podem ser personalizados. Se um analisador não estiver atendendo aos seus requisitos, crie um analisador personalizado com o microsoft_language_tokenizer ou microsoft_language_stemming_tokenizer e adicione filtros para processamento pré e pós-tokenização.

O exemplo a seguir ilustra uma especificação do analisador de linguagem em um índice:

{
  "name": "hotels-sample-index",
  "fields": [
    {
      "name": "Description",
      "type": "Edm.String",
      "retrievable": true,
      "searchable": true,
      "analyzer": "en.microsoft",
      "indexAnalyzer": null,
      "searchAnalyzer": null
    },
    {
      "name": "Description_fr",
      "type": "Edm.String",
      "retrievable": true,
      "searchable": true,
      "analyzer": "fr.microsoft",
      "indexAnalyzer": null,
      "searchAnalyzer": null
    },

Para obter mais informações sobre como criar um índice e definir propriedades de campo, consulte Criar índice (REST). Para obter mais informações sobre análise de texto, consulte Analisadores no Azure AI Search.

Analisadores de idiomas suportados

Abaixo está a lista de idiomas suportados, com nomes de analisadores Lucene e Microsoft.

Linguagem Nome do Microsoft Analyzer Nome do Lucene Analyzer
Árabe ar.microsoft ar.lucene
Arménio hy.lucene
Bangla bn.microsoft
Basco eu.lucene
Búlgaro bg.microsoft bg.lucene
Catalão ca.microsoft Ca.Lucene
Chinês Simplificado zh-Hans.microsoft zh-Hans.lucene
Chinês tradicional zh-Hant.microsoft zh-Hant.lucene
Croata hr.microsoft
Checo cs.microsoft CS.LUCENE
Dinamarquês da.microsoft Da.Lucene
Neerlandês nl.microsoft nl.lucene
Português pt.microsoft pt.lucene
Estónio et.microsoft
Finlandês fi.microsoft fi.lucene
Francês fr.microsoft P. Lucene
Galego Gl.Lucene
Alemão de.microsoft de.lucene
Grego el.microsoft El.Lucene
Guzerate gu.microsoft
Hebraico he.microsoft
Hindi oi.microsoft oi.lucene
Húngaro hu.microsoft Hu.Lucene
Islandês is.microsoft
Indonésio (Bahasa) id.microsoft Id.Lucene
Irlandês GA.LUCENE
Italiano it.microsoft it.lucene
Japonês ja.microsoft Ja.Lucene
Canarês kn.microsoft
Coreano ko.microsoft Ko.Lucene
Letão lv.microsoft LV.LUCENE
Lituano lt.microsoft
Malaiala ml.microsoft
Malaio (Latim) ms.microsoft
Marata mr.microsoft
Norueguês nb.microsoft no.lucene
Persa FA.LUCENE
Polaco pl.microsoft pl.lucene
Português (Brasil) pt-Br.microsoft pt-Br.lucene
Português (Portugal) pt-Pt.microsoft pt-Pt.lucene
Punjabi pa.microsoft
Romeno ro.microsoft Ro.Lucene
Russo ru.microsoft ru.lucene
Sérvio (Cirílico) sr-cyrillic.microsoft
Sérvio (Latim) sr-latin.microsoft
Eslovaco sk.microsoft
Esloveno sl.microsoft
Espanhol es.microsoft es.lucene
Sueco sv.microsoft sv.lucene
Tâmil ta.microsoft
Telugu te.microsoft
Tailandês th.microsoft th.lucene
Turco tr.microsoft Tr.Lucene
Ucraniano pt.microsoft
Urdu seu.microsoft
Vietnamita vi.microsoft

Todos os analisadores com nomes anotados com Lucene são alimentados pelos analisadores de linguagem Apache Lucene.

Consulte também