Adicionar analisadores de linguagem a campos de cadeia de caracteres em um índice da IA do Azure Search

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

Quando usar um analisador de linguagem

Você deve considerar um analisador de linguagem quando o reconhecimento da estrutura de palavras ou sentenças agrega valor à análise de texto. Um exemplo comum é a associação de formas de verbo irregulares ("bring" e "brough) ou substantivos do plural ("ratos" e "rato"). Sem consciência linguística, essas cadeias de caracteres são analisadas apenas em características físicas, o que não captura a conexão. Como grandes partes de texto têm maior probabilidade de ter esse conteúdo, os campos que consistem em descrições, revisões ou resumos são bons candidatos a um analisador de linguagem.

Você também deve considerar analisadores de linguagem quando o conteúdo consiste em cadeias de caracteres que não são do idioma ocidental. Embora o analisador padrão (Standard Lucene) seja independente de linguagem, o conceito de usar espaços e caracteres especiais (hifens e barras) para separar cadeias de caracteres é mais aplicável a às línguas ocidentais do que aqueles não ocidentais.

Por exemplo, em chinês, japonês, coreano (CJK) e em outras línguas asiáticas, um espaço não é necessariamente um delimitador de palavras. Considere a seguinte cadeia de caracteres japonesas. Como ele não tem espaços, um analisador independente de linguagem provavelmente analisaria toda a cadeia de caracteres como um token, quando, na verdade, a cadeia de caracteres é realmente 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 em limitação.

Uma melhor experiência é pesquisar por palavras individuais: 明るい (brilhante), 私たちの (nossa), 銀河系 (Galaxy). O uso de um dos analisadores japoneses disponíveis na IA do Azure Search é mais provável de desbloquear esse comportamento porque esses analisadores estão melhor equipados para dividir parte do texto em palavras significativas na linguagem de destino.

Comparando o Lucene e os analisadores da Microsoft

A IA do Azure Search dá suporte a 35 analisadores linguísticos apoiados pela Lucene e 50 analisadores linguísticos apoiados pela tecnologia de processamento de linguagem natural da Microsoft usada no Office e Bing.

Alguns desenvolvedores talvez prefiram a solução mais familiar, simples e aberta da Lucene. Os analisadores de idioma da Lucene são mais rápidos, mas os analisadores da Microsoft têm recursos avançados, como derivaçã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 entidade (URLs, emails, datas, números). Se possível, você deve executar comparações entre os analisadores da Microsoft e da Lucene para decidir qual é a melhor opção. Você pode usar a API de Análise para ver os tokens gerados de um determinado texto usando um analisador específico.

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

Analisadores em inglês

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

  • O analisador de inglês da Lucene estende o analisador padrão. Ele remove possessivos (apóstrofos à direita) de palavras, aplica a lematização conforme o algoritmo de lematização de Porter e remove as palavras irrelevantes do inglês.

  • O analisador de inglês da Microsoft executa a derivação em vez da lematização. Isso significa que ele pode tratar muito melhor as formas irregulares e inflexivas de palavras, o que gera resultados da pesquisa mais relevantes.

Como especificar um analisador de linguagem

Defina o analisador durante a criação do índice, antes que seja carregado com os dados.

  1. Na definição do campo, verifique se o campo foi atribuído como "pesquisável" e se é do tipo Edm.String.

  2. Defina a propriedade "analyzer" como um dos analisadores de linguagem na lista de analisadores com suporte.

    A propriedade "analyzer" é a única que aceitará um analisador de linguagem e é usada para indexação e consultas. As 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 atender aos requisitos, crie um analisador personalizado com o microsoft_language_tokenizer ou microsoft_language_stemming_tokenizer e, em seguida, adicione filtros para processamento antes e depois da geração de tokens.

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 a análise de texto, consulte no Analisadores na IA do Azure Search.

Analisadores de idioma com suporte

Veja abaixo uma lista de idiomas com suporte, com nomes de analisador da Lucene e da Microsoft.

Idioma Nome do analisador da Microsoft Nome do analisador da Lucene
Árabe ar.microsoft ar.lucene
Armênia 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
Tcheco cs.microsoft cs.lucene
Dinamarquês da.Microsoft da.lucene
Holandês nl.microsoft nl.lucene
Inglês en.Microsoft en.lucene
Estoniano et.microsoft
Finlandês fi.microsoft fi.lucene
Francês fr.microsoft fr.lucene
Galego GL.Lucene
Alemão de.microsoft de.lucene
Grego el.microsoft el.lucene
Guzerate gu.microsoft
Hebraico he.microsoft
Híndi hi.microsoft hi.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
canarim kn.microsoft
Coreano ko.Microsoft ko.lucene
Letão lv.microsoft lv.lucene
Lituano lt.microsoft
Malaiala ml.microsoft
Malaio (latino) ms.microsoft
Marati mr.microsoft
Norueguês nb.microsoft no.lucene
Persa FA.Lucene
Polonês pl.Microsoft pl.lucene
Português (Brasil) pt-Br.microsoft pt-Br.lucene
Português (Portugal) pt-Pt.microsoft pt-Pt.lucene
Panjabi pa.microsoft
Romeno ro.microsoft ro.lucene
Russo ru.microsoft ru.lucene
Sérvio (cirílico) sr-cyrillic.microsoft
Sérvio (latino) sr-latin.microsoft
Eslovaco sk.microsoft
Esloveno sl.microsoft
Espanhol es.microsoft es.lucene
Sueco sv.microsoft sv.lucene
Tâmil ta.microsoft
Télugo te.microsoft
Tailandês th.microsoft th.lucene
Turco tr.microsoft tr.lucene
Ucraniano uk.microsoft
Urdu ur.microsoft
Vietnamita vi.microsoft

Todos os analisadores com nomes anotados com Lucene são da plataforma de analisadores de idioma do Apache Lucene.

Confira também