HCL Commerce Version 9.1.8.0 or later

Perfiles de procesador de lenguaje natural (NLP)

Se utiliza un perfil de Procesador de lenguaje natural (NLP) para controlar el flujo de preprocesamiento de los términos de búsqueda antes de ejecutar una consulta de Elasticsearch. El perfil es un archivo .json y se almacena en su contenedor de tiempo de ejecución de consultas.

Puede encontrar el archivo HCL_NLPProfile.json predeterminado en el directorio resources\profiles\nlp del tiempo de ejecución de la consulta. También se puede crear un perfil de PNL a través del punto final /profiles REST y se almacena dentro del nodo “nlpprofiles” de Zookeeper. El punto final /profiles permite un nuevo parámetro de consulta opcional, profileTypecon valores de Search o NLP para diferenciar el perfil. Search es la opción predeterminada si no se proporciona este parámetro.

El perfil NLP contiene tres secciones principales:
  1. Una lista de clases de proveedor. Estas clases ayudan a preprocesar el término de búsqueda. Para obtener más información sobre las clases de proveedores, consulte Referencia de clase de proveedor .
  2. Una lista de clasificaciones de NLP que anularán las clasificaciones predeterminadas en el tiempo de ejecución de la consulta.
  3. Una sección de prioridad de eliminación de término de búsqueda, que se utiliza para definir la secuencia en la que se eliminan los términos de búsqueda.
El siguiente es un archivo HCL_NLPProfile.json de muestra que muestra cómo se organizan los datos. En esta muestra, la clasificación se proporciona solo con fines informativos. En el perfil predeterminado de HCL, esta sección está vacía.
{
        "profileName": "HCL_NLPProfile",
        "provider": {
            "PartNumber": "com.hcl.commerce.search.internal.expression.provider.SearchNLPPartNumberProviderHelper",
            "BlankSpace": "com.hcl.commerce.search.internal.expression.provider.SearchNLPWhiteSpaceProviderHelper",
            "CurrenySymbol": "com.hcl.commerce.search.internal.expression.provider.SearchNLPCurrencySymbolProviderHelper",
            "ExcludeSearchTerm": "com.hcl.commerce.search.internal.expression.provider.SearchNLPExcludedTermProviderHelper",
            "STA": "com.hcl.commerce.search.internal.expression.provider.SearchNLPSTAExpansionProviderHelper",
            "MultiWordSearchTerm": "com.hcl.commerce.search.internal.expression.provider.SearchNLPMultiwordTermProviderHelper",
            "LowerCase": "com.hcl.commerce.search.internal.expression.provider.SearchNLPLowerCaseProviderHelper",
            "PriceRangeSeparator": "com.hcl.commerce.search.internal.expression.provider.SearchNLPPriceRangeSeparatorProviderHelper",
            "DMM": "com.hcl.commerce.search.internal.expression.provider.SearchNLPDMMProviderHelper",
            "SpecialCharacter": "com.hcl.commerce.search.internal.expression.provider.SearchNLPSpecialCharacterProviderHelper",
            "MultiWordPriceFilter": "com.hcl.commerce.search.internal.expression.provider.SearchMultiwordFilterProviderHelper",
            "Stopword": "com.hcl.commerce.search.internal.expression.provider.SearchNLPStopwordProviderHelper",
            "WordToNumber": "com.hcl.commerce.search.internal.expression.provider.SearchNLPWordToNumberProviderHelper",
            "PriceFilter": "com.hcl.commerce.search.internal.expression.provider.SearchNLPPriceFilterProviderHelper",
            "POS_NER": "com.hcl.commerce.search.internal.expression.provider.SearchNLPPOSAndNERProviderHelper",
            "Color": "com.hcl.commerce.search.internal.expression.provider.SearchNLPColorMMProviderHelper"
        },
        "classification": {},
        "termDroppingPriority": {
            "1": "FILTER",
            "2": "MEASUREMENT",
            "3": "BRAND",
            "4": "COLOR",
            "5": "ADJECTIVE",
            "6": "CATEGORY",
            "7": "NOUN"
        }
    }

Creación o actualización de un perfil NLP

Para crear o actualizar un perfil NLP, utilice el método POST. El ejemplo siguiente muestra cómo utilizar el método POST para crear o actualizar un perfil NLP.
POST https://server:port/search/resources/api/v2/documents/profiles/HCL_NLPProfile?profileType=NLP

Cómo el servicio de consultas encuentra el perfil de NLP

El tiempo de ejecución de consultas puede cargar los detalles de configuración del perfil de NLP desde el índice de la tienda en tiempo de ejecución, o en respuesta a una llamada a través de la API de REST de consultas. Si no se proporcionan los detalles de configuración, se volverá al perfil NLP de HCL predeterminado. El servicio de consulta realiza los pasos siguientes para buscar el nombre del perfil NLP.

  1. El servicio de consultas comprobará el perfil de NLP de la configuración regional de la tienda. Si se encuentra, este perfil se cargará desde Zookeeper.
  2. Si no se configura ningún perfil NLP para la configuración regional de la tienda, el servicio de consultas buscará la configuración regional base a partir del código de idioma de la configuración regional de la tienda y buscará un nombre de perfil para esa configuración regional base. Si se encuentra uno, este perfil se cargará desde Zookeeper. La configuración regional básica puede ser cualquiera de "en_US", "es_ES", "fr_FR", "de_DE" o "zh_CN".
  3. Si no se ha configurado ningún perfil NLP para la base local, el servicio de consulta buscará el nombre de perfil NLP predeterminado para la tienda que está configurada en la tabla STORECONF. Si se encuentra, este perfil se cargará desde Zookeeper.
  4. Si no se configura ningún perfil NLP predeterminado en la tabla STORECONF, el servicio de consultas recurrirá al perfil NLP predeterminado.

Manejo automático de errores de búsqueda

Antes de la versión HCL Commerce 9.1.8.0, si no hay resultados, los términos de búsqueda se eliminarán de la lista de búsqueda, de izquierda a derecha y de uno en uno. Ahora puede especificar qué token se elimina del término de búsqueda cuando no hay resultados. En el perfil NLP, la sección "termDroppingPriority" detalla la prioridad según la cual los tokens se eliminan del término de búsqueda. Después de eliminar una señal, el proceso realiza otra llamada con el término de búsqueda actualizado. Si se encuentra un resultado, el servicio de consultas devuelve el resultado; de lo contrario, según la configuración, se elimina otro token del término de búsqueda. Si está utilizando el perfil NLP predeterminado, la lógica de descarte se aplicará en el orden siguiente.

  1. "filtro": Eliminará el filtro de precios del término de búsqueda.
  2. Measurement Eliminará los detalles de medida del término de búsqueda.
  3. Brand Eliminará el nombre de marca del término de búsqueda.
  4. COLOR: Eliminará el nombre de color del término de búsqueda.
  5. ADJETIVO: Eliminará el adjetivo del término de búsqueda.
  6. Categoría Eliminará el nombre de categoría del término de búsqueda.
  7. NOUN Eliminará nombres del término de búsqueda.
Si no hay respuesta después de aplicar esta lógica, el servicio de consultas realiza una llamada de respaldo final basada en los detalles corregidos del hechizo. Este paso no puede personalizarse.
Note: Antes de aplicar el término lógica de descarte, el proceso también elimina los tokens que no son identificados por el procesador NLP.

Clasificación de perfil NLP

Durante la ejecución de la consulta, la clasificación de perfil NLP altera temporalmente la clasificación que el servicio de consultas ha analizado a partir de datos de índice o del modelo de datos NLP predeterminado.

Por ejemplo, considere un caso en el que la palabra “manzana” se clasifica como BRAND_NAME por la base del servicio de consultas en los datos del índice. Si ahora desea clasificar “manzana” como categoría, este cambio se puede configurar en la sección de clasificación de perfil NLP.

Referencia de clase de proveedor

Las clases de proveedor utilizadas en el perfil tienen las funciones siguientes.

Table 1. Clases ayudantes para proveedores de NLP
Proveedor Nombre de la clase Usage
PartNumber com.hcl.commerce.search.internal.expression.provider.SearchNLPPartNumberProviderHelper Hace coincidir el término de búsqueda de entrada con los patrones de número de pieza. Si coincide, realice una búsqueda de un número de pieza. El resto de las clases ayudantes no se ejecutarán.
blank_space com.hcl.commerce.search.internal.expression.provider.SearchNLPWhiteSpaceProviderHelper Si hay más de dos espacios en blanco seguidos, reemplácelos con un solo espacio en blanco.
CurrenySymbol com.hcl.commerce.search.internal.expression.provider.SearchNLPCurrencySymbolProviderHelper Si el término de búsqueda contiene un filtro de precio con símbolo de moneda, el símbolo de moneda se eliminará del término de búsqueda.
ExcludeSearchTerm com.hcl.commerce.search.internal.expression.provider.SearchNLPExcludedTermProviderHelper Elimine el término excluido del término de búsqueda.
STA com.hcl.commerce.search.internal.expression.provider.SearchNLPSTAExpansionProviderHelper Realiza la expansión y sustitución de la asociación de términos de búsqueda (STA) en el momento de la consulta en el servicio de consulta.
MultiWordSearchTerm com.hcl.commerce.search.internal.expression.provider.SearchNLPMultiwordTermProviderHelper Realice una verificación de la categoría de varias palabras, el nombre de la marca, el valor del atributo, el nombre del color si está presente, luego agréguelo a la lista respectiva.
- minúscula com.hcl.commerce.search.internal.expression.provider.SearchNLPLowerCaseProviderHelper Convertir término de servidor en minúsculas.
PriceRangeSeparator com.hcl.commerce.search.internal.expression.provider.SearchNLPPriceRangeSeparatorProviderHelper Compruebe si hay términos de búsqueda que contengan un filtro de rango de precios con “–”. Si es así, sustituya "-" por el separador específico de la configuración regional. P. ej.: en – to, es – a, zh - 至, etc.
DMM com.hcl.commerce.search.internal.expression.provider.SearchNLPDMMProviderHelper Compruebe si el término de búsqueda contiene detalles de la dimensión y, a continuación, analice el término de búsqueda para el emparejador de dimensiones.
SpecialCharacter com.hcl.commerce.search.internal.expression.provider.SearchNLPSpecialCharacterProviderHelper Si el término de búsqueda contiene un carácter especial, añada ese token a la lista de nombres.
MultiWordPriceFilter com.hcl.commerce.search.internal.expression.provider.SearchMultiwordFilterProviderHelper Compruebe el filtro de varias palabras en el término de búsqueda. A continuación, sustituya el espacio por NNNN para que el siguiente procesador identifique el término como una sola palabra.
​Palabra frecuente com.hcl.commerce.search.internal.expression.provider.SearchNLPStopwordProviderHelper Elimine del término de búsqueda las palabras IGNORE_TERM marcadaos con el filtro de configuración.
WordToNumber com.hcl.commerce.search.internal.expression.provider.SearchNLPWordToNumberProviderHelper Convierta la palabra a su formato numérico equivalente.
Filtro de precios com.hcl.commerce.search.internal.expression.provider.SearchNLPPriceFilterProviderHelper Compruebe los términos de búsqueda con filtro de precio con varias palabras junto con NNNN.
POS_NER com.hcl.commerce.search.internal.expression.provider.SearchNLPPOSAndNERProviderHelper Realice el etiquetado POS y la extracción NER. Comprobación de NOUN, CATEGORY, BRAND_NAME, ADJECTIVE, ATTRIBUTE_VALUE etc. A continuación, añádalo a la lista respectiva.
Color com.hcl.commerce.search.internal.expression.provider.SearchNLPColorMMProviderHelper Recupere los detalles de la familia de colores para la base del emparejador de colores en el nombre del color ingresado en el término de búsqueda.