HCL Commerce Version 9.1.8.0 or later

Profil du processeur de langage naturel

Un profil NLP (Natural Language Processor) est utilisé pour contrôler le flux de prétraitment des termes de recherche avant d'exécuter une requête Elasticsearch. Le profil est un fichier .json stocké dans votre conteneur d'exécution de requête.

Le fichier HCL_NLPProfile.json par défaut se trouve dans le répertoire resources\profiles\nlp de l'exécution de requête. Un profil NLP peut également être créé via le nœud final REST /profiles et stocké à l'intérieur du nœud Zookeeper "nlpprofiles". Le nœud final /profiles permet à un nouveau paramètre de requête facultatif, profileType avec des valeurs de Search ou de NLP différencier le profil. Search est le choix par défaut si ce paramètre n'est pas fourni.

Le profil NLP contient trois sections principales :
  1. Une liste de classes de fournisseur. Ces classes permettent de prétraiter le terme de recherche. Pour plus d'informations sur les classes de fournisseur, voir Référence de classe de fournisseur.
  2. Liste des classifications NLP qui remplaceront les classifications par défaut au moment de l'expiration de la requête.
  3. Une section de priorité de suppression de terme de recherche, qui est utilisée pour définir la séquence dans laquelle le terme de recherche est supprimé.
Voici un exemple de fichier HCL_NLPProfile.json montrant comment les données sont organisées. Dans cet exemple, la classification est fournie à des fins d'information uniquement. Dans le profil par défaut HCL, cette section est vide.
{
        "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"
        }
    }

Création ou mise à jour d'un profil NLP

Pour créer ou mettre à jour un profil NLP, utilisez la méthode POST. L'exemple suivant montre comment utiliser la méthode POST pour créer ou mettre à jour un profil NLP.
POST https://server:port/search/resources/api/v2/documents/profiles/HCL_NLPProfile?profileType=NLP

Comment le service Query trouve le profil NLP

L'environnement d'exécution Query peut charger les détails de configuration du profil NLP à partir de l'index du magasin au moment de l'exécution ou en réponse à un appel via l'API REST Query. Si les détails de configuration ne sont pas fournis, il revient au profil NLP HCL par défaut. Le service Query effectue les étapes suivantes pour rechercher le nom du profil NLP.

  1. Le service Query recherche le profil NLP du paramètre régional du magasin. S'il est trouvé, ce profil sera chargé à partir de Zookeeper.
  2. Si aucun profil NLP n'est configuré pour le paramètre régional du magasin, le service Query recherche le paramètre régional de base à partir du code de langue du paramètre régional du magasin et recherche un nom de profil pour ce paramètre régional de base. S'il en trouve un, ce profil sera chargé à partir de Zookeeper. Le paramètre régional de base peut être "en_US", "es_ES", "fr_FR", "de_DE" ou "zh_CN".
  3. Si aucun profil NLP n'a été configuré pour la base locale, le service Query trouvera le nom de profil NLP par défaut pour le magasin qui est configuré dans le tableau STORECONF. S'il est trouvé, ce profil sera alors chargé à partir de Zookeeper.
  4. Si aucun profil NLP par défaut n'est configuré dans le tableau STORECONF, le service Query revient au profil NLP par défaut.

Gestion automatique des erreurs de recherche

Avant HCL Commerce version 9.1.8.0, s'il n'y avait aucun résultat, les termes de recherche seront supprimés de la liste de recherche, de gauche à droite et un jeton à la fois. Vous pouvez maintenant spécifier le jeton qui est supprimé du terme de recherche lorsqu'il n'y a pas de résultats. Dans le profil NLP, la section "termDroppingPriority" détaille la priorité selon laquelle les jetons sont supprimés du terme de recherche. Après avoir supprimé un jeton, le processus effectue un autre appel avec le terme de recherche mis à jour. Si un résultat est trouvé, le service Query renvoie le résultat ; sinon, en fonction de la configuration, un autre jeton est supprimé du terme de recherche. Si vous utilisez le profil NLP par défaut, la logique de suppression sera appliquée dans l'ordre ci-dessous.

  1. FILTER : Supprimera le filtre de prix du terme de recherche.
  2. MESURE : supprimera les détails de mesure du terme de recherche.
  3. MARQUE : supprimera le nom de marque du terme de recherche.
  4. COLOR : supprimera le nom de couleur du terme de recherche.
  5. ADJECTIF : supprimera l'adjectif du terme de recherche.
  6. CATEGORIE : supprimera le nom de catégorie du terme de recherche.
  7. NOM : Supprimera les noms du terme de recherche.
S'il n'y a pas de réponse après l'application de cette logique, le service Query effectue un appel de repli final en fonction des détails corrigés orthographiquement. Cette étape ne peut pas être personnalisée.
Note: Avant d'appliquer la logique de suppression de termes, le processus supprime également les jetons qui ne sont pas identifiés par le processeur NLP.

Classification de profil NLP

Lors de l'exécution, la classification de profil NLP remplace la classification qui a été analysée par le service Query à partir des données d'index ou du modèle de données NLP par défaut.

Par exemple, prenons le cas où le mot "apple" est classé comme BRAND_NAME par la base du service Query sur les données d'index. Si vous souhaitez à présent classer "apple" en tant que catégorie, cette modification peut être configurée dans la section de classification de profil NLP.

Référence de classe de fournisseur

Les classes de fournisseur utilisées dans le profil ont les fonctions suivantes.

Table 1. Classes d'aide pour les fournisseurs NLP
Fournisseur Nom de classe Utilisation
PartNumber com.hcl.commerce.search.internal.expression.provider.SearchNLPPartNumberProviderHelper Fait correspondre le terme de recherche d'entrée et les modèles de numéro de référence, puis effectue une recherche de numéro de référence en cas de correspondance. Les autres classes d'aide ne seront pas exécutées.
BlankSpace com.hcl.commerce.search.internal.expression.provider.SearchNLPWhiteSpaceProviderHelper Remplacez plus de deux espaces par un seul espace.
CurrencySymbol com.hcl.commerce.search.internal.expression.provider.SearchNLPCurrencySymbolProviderHelper Si le terme de recherche contient un filtre de prix avec un symbole de devise, ce dernier sera supprimé du terme de recherche.
ExcludeSearchTerm com.hcl.commerce.search.internal.expression.provider.SearchNLPExcludedTermProviderHelper Supprimez le terme exclu du terme de recherche.
STA com.hcl.commerce.search.internal.expression.provider.SearchNLPSTAExpansionProviderHelper Effectue l'extension et le remplacement d'association de termes de recherche (STA) au moment de la requête dans le service Query.
MultiWordSearchTerm com.hcl.commerce.search.internal.expression.provider.SearchNLPMultiwordTermProviderHelper Effectuez une vérification de la catégorie composée de plusieurs mots, du nom de marque, de la valeur d'attribut, du nom de couleur, le cas échéant, puis ajoutez-la à la liste respective.
Minuscules com.hcl.commerce.search.internal.expression.provider.SearchNLPLowerCaseProviderHelper Convertissez le terme serveur en minuscules.
PriceRangeSeparator com.hcl.commerce.search.internal.expression.provider.SearchNLPPriceRangeSeparatorProviderHelper Recherchez les termes de recherche contenant un filtre de fourchette de prix avec "–". Si tel est le cas, remplacez "-" par le séparateur spécifique du paramètre régional approprié. Par ex. : en – to, es – a, zh - 至 etc.
DMM com.hcl.commerce.search.internal.expression.provider.SearchNLPDMMProviderHelper Vérifiez si le terme de recherche contient des détails de dimension, puis analysez le terme de recherche pour le matchmaker de dimension.
SpecialCharacter com.hcl.commerce.search.internal.expression.provider.SearchNLPSpecialCharacterProviderHelper Si le terme de recherche contient un caractère spécial, ajoutez ce jeton dans la liste de noms.
MultiWordPriceFilter com.hcl.commerce.search.internal.expression.provider.SearchMultiwordFilterProviderHelper Recherchez un filtre composé de plusieurs mots dans le terme de recherche. Remplacez ensuite l'espace par NNNN pour que le processeur suivant identifie le terme comme étant un seul mot.
Stopword com.hcl.commerce.search.internal.expression.provider.SearchNLPStopwordProviderHelper Supprimez les mots marqués avec IGNORE_TERM par le filtre de configuration du terme de recherche.
WordToNumber com.hcl.commerce.search.internal.expression.provider.SearchNLPWordToNumberProviderHelper Convertissez le mot dans son format numérique équivalent.
Filtre de prix com.hcl.commerce.search.internal.expression.provider.SearchNLPPriceFilterProviderHelper Recherchez les termes de recherche avec un filtre de prix composé de plusieurs mots et NNNN.
POS_NER com.hcl.commerce.search.internal.expression.provider.SearchNLPPOSAndNERProviderHelper Effectuez l'étiquetage POS et l'extraction NER. Recherchez NOUN, CATEGORY, BRAND_NAME, ADJECTIVE, ATTRIBUTE_VALUE, etc. Ajoutez ensuite à la liste respective.
Couleur com.hcl.commerce.search.internal.expression.provider.SearchNLPColorMMProviderHelper Récupérez les détails de la famille de couleurs pour le matchmaker de couleurs basé sur le nom de couleur saisi dans le terme de recherche.