Incorporar analizadores de idioma en campos de cadena en un índice de Azure AI Search

Un analizador de idiomas es un componente específico de un analizador de texto que realiza un análisis léxico mediante las reglas lingüísticas del idioma de destino. Cada campo de cadena de búsqueda tiene una propiedad analyzer. Si el contenido consiste en cadenas traducidas, como campos independientes para texto en inglés y en chino, puede especificar los analizadores de idiomas en cada campo para acceder a las funcionalidades lingüísticas enriquecidas de esos analizadores.

Cuándo usar un analizador de idioma

Debe considerar un analizador de idioma cuando el reconocimiento de la estructura de palabras o oraciones agrega valor al análisis de texto. Un ejemplo común es la asociación de formas de verbo irregulares ("traer" y "trajo") o nombres en masculino y femenino ("emperador" y "emperatriz"). Sin reconocimiento lingüístico, estas cadenas se analizan solo en características físicas, lo que no puede detectar la conexión. Dado que es más probable que los fragmentos de texto grandes tengan este contenido, los campos que se componen de descripciones, revisiones o resúmenes son buenos candidatos para un analizador de idioma.

También hay que tener en cuenta los analizadores de idioma cuando el contenido se compone de cadenas de idioma no occidentales. Aunque el analizador predeterminado (Lucene estándar) es independiente del idioma, el concepto de usar espacios y caracteres especiales (guiones y barras diagonales) para separar cadenas suele ser más aplicable a los idiomas occidentales que a los no occidentales.

Por ejemplo, en chino, japonés, coreano (CJK) y otros idiomas asiáticos, un espacio no es necesariamente un delimitador de palabras. Pensemos en la siguiente cadena japonesa. Dado que no tiene espacios, es probable que un analizador independiente del idioma analice toda la cadena como un token, cuando de hecho la cadena es en realidad una frase.

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

En el ejemplo anterior, una consulta correcta tendría que incluir el token completo o un token parcial con un carácter comodín de sufijo, lo que provocaría una experiencia de búsqueda no natural y de limitación.

Una mejor experiencia sería buscar palabras individuales: 明るい (brillante), 私たちの (nuestro), 銀河系 (galaxia). Usar uno de los analizadores japoneses disponibles en Azure AI Search tiene más posibilidades de desbloquear este comportamiento porque esos analizadores están mejor equipados para dividir el trozo de texto en palabras significativas en el idioma de destino.

Comparación de Lucene y analizadores de Microsoft

Azure AI Search admite 35 analizadores de idiomas respaldados por la tecnología Lucene y otros 50 por la tecnología de procesamiento de lenguaje natural de Microsoft que se usa en Office y Bing.

Es posible que algunos desarrolladores prefieran la solución más familiar, simple y de código abierto de Lucene. Los analizadores de idiomas de Lucene son más rápidos, pero los de Microsoft disponen de capacidades avanzadas, como la lematización, la descomposición de palabras (en idiomas como el alemán, danés, neerlandés, sueco, noruego, estonio, finés, húngaro, eslovaco) y el reconocimiento de entidades (direcciones URL, correos electrónicos, fechas y números). Si es posible, debe ejecutar las comparaciones de los analizadores de Microsoft y Lucene para decidir cuál es la que se ajusta mejor. Puede usar la API de análisis para ver los tokens generados a partir de un texto determinado mediante un analizador específico.

La indexación con analizadores de Microsoft es entre dos y tres veces más lenta de media que sus equivalentes de Lucene en función del idioma. El rendimiento de la búsqueda no debería verse afectado significativamente en las consultas de tamaño medio.

Analizadores de inglés

El analizador predeterminado es Standard Lucene, que funciona bien con el inglés, pero quizás no tan bien como el analizador de inglés de Lucene o el analizador de inglés de Microsoft.

  • El analizador de inglés de Lucene amplía el analizador estándar. Elimina los posesivos (los "'s" finales) de las palabras, aplica la lematización conforme al Algoritmo de lematización Porter y elimina las palabras no significativas del inglés.

  • El analizador de inglés de Microsoft utiliza lemas en lugar de lexemas. Esto significa que puede controlar mucho mejor formas de palabras derivadas e irregulares, lo que da lugar a unos resultados de búsqueda más pertinentes.

Cómo especificar un analizador de idioma

Establezca el analizador durante la creación del índice, antes de cargarlo con datos.

  1. En la definición de campo, asegúrese de que el campo tiene el atributo "searchable" y es de tipo Edm.String.

  2. Establezca la propiedad "analyzer" en uno de los analizadores de idioma de la lista de analizadores admitidos.

    La propiedad "analyzer" es la única propiedad que aceptará un analizador de idioma y se usa para la indexación y las consultas. Otras propiedades relacionadas con el analizador ("searchAnalyzer" e "indexAnalyzer") no aceptarán un analizador de idioma.

Los analizadores de idioma no se pueden personalizar. Si un analizador no cumple con sus requisitos, cree un analizador personalizado con microsoft_language_tokenizer o microsoft_language_stemming_tokenizer y, luego, agregue filtros para el procesamiento previo y posterior a la tokenización.

En el ejemplo siguiente se muestra una especificación del analizador de idioma en un í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 obtener más información sobre cómo crear un índice y establecer las propiedades de los campos, consulte Creación de índices (REST). Para obtener más información sobre el análisis de texto, consulta Analizadores de Azure AI Search.

Analizadores de idioma compatibles

A continuación se muestra la lista de idiomas admitidos y los nombres de analizadores de Lucene y de Microsoft.

Idioma Nombre del analizador de Microsoft Nombre del analizador de Lucene
Árabe ar.microsoft ar.lucene
Armenio hy.lucene
Bengalí bn.microsoft
Vasco eu.Lucene
Búlgaro bg.microsoft bg.lucene
Catalán ca.microsoft ca.lucene
Chino simplificado zh-Hans.microsoft zh-Hans.lucene
Chino tradicional zh-Hant.microsoft zh-Hant.lucene
Croata hr.microsoft
Checo cs.microsoft cs.lucene
Danés da.microsoft da.lucene
Neerlandés nl.microsoft nl.lucene
English en.microsoft en.lucene
Estonio et.microsoft
Finés fi.microsoft fi.lucene
Francés fr.microsoft fr.lucene
Gallego gl.lucene
Alemán de.microsoft de.lucene
Griego el.microsoft el.lucene
Gujarati gu.microsoft
Hebreo he.microsoft
Hindi hi.microsoft hi.lucene
Húngaro hu.microsoft hu.lucene
Islandés is.microsoft
Indonesio (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ón lv.microsoft lv.lucene
Lituano lt.microsoft
Malayalam ml.microsoft
Malayo (latino) ms.microsoft
Maratí mr.microsoft
Noruego 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
Rumano ro.microsoft ro.lucene
Ruso ru.microsoft ru.lucene
Serbio (cirílico) sr-cyrillic.microsoft
Serbio (latino) sr-latin.microsoft
Eslovaco sk.microsoft
Esloveno sl.microsoft
Español es.Microsoft es.lucene
Sueco sv.microsoft sv.lucene
Tamil ta.microsoft
Telugu te.microsoft
Tailandés th.microsoft th.lucene
Turco tr.microsoft tr.lucene
Ucraniano uk.microsoft
Urdu ur.microsoft
Vietnamita vi.microsoft

Todos los analizadores con nombres anotados con lucene disponen de la tecnología de analizadores de idioma de Apache Lucene.

Consulte también