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.
Na definição do campo, verifique se o campo foi atribuído como "pesquisável" e se é do tipo Edm.String.
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.