Index fejlesztése elemzőkkel és tokenizált kifejezésekkel

Befejeződött

Az Azure AI Search alapértelmezés szerint úgy van konfigurálva, hogy elemezze a szöveget, és azonosítsa az indexben hasznos jogkivonatokat. A megfelelő jogkivonatok biztosítják, hogy a felhasználók gyorsan megtalálják a szükséges dokumentumokat. A legtöbb esetben az alapértelmezett konfiguráció optimális indexet hoz létre. Ha azonban szokatlan vagy egyedi mezőkkel rendelkezik, érdemes lehet pontosan konfigurálni a szövegelemzés módját.

Itt megtudhatja, hogyan definiálhat egyéni elemzőt annak szabályozásához, hogy egy mező tartalma hogyan oszlik fel jogkivonatokra az indexbe való felvételhez.

Amikor az AI Search indexeli a tartalmat, lekéri a szöveget. Ha hasznos indexet szeretne létrehozni, olyan kifejezésekkel, amelyek segítenek a felhasználóknak megtalálni a dokumentumokat, a szöveg feldolgozása szükséges. Példa:

  • A szöveget szavakra kell bontani, gyakran térbeli és írásjeles karaktereket használva elválasztóként.
  • A stopszavak , például a "the" és a "it" kifejezéseket el kell távolítani, mert a felhasználók nem keresik őket.
  • A szavakat a gyökéralakjukra kell csökkenteni. A korábbi feszült szavakat, például a "futtatott" szavakat például a jelenlegi feszült szavakra, például a "futtatásra" kell cserélni.

Az AI Searchben ezt a feldolgozást elemzők hajtják végre. Ha nem ad meg elemzőt egy mezőhöz, a rendszer az alapértelmezett Lucene-elemzőt használja. Az alapértelmezett Lucene-elemző a legtöbb mezőhöz jó választás, mivel számos nyelvet képes feldolgozni, és hasznos jogkivonatokat ad vissza az indexhez.

Másik lehetőségként megadhatja az AI Searchbe beépített elemzők egyikét. A beépített elemzők két típusból állnak:

  • Nyelvelemzők. Ha speciális képességekre van szüksége bizonyos nyelvekhez, például lemmatizáláshoz, szóbontáshoz és entitásfelismeréshez, használjon beépített nyelvelemzőt. A Microsoft 50 elemzőt biztosít különböző nyelvekhez.
  • Speciális elemzők. Ezek az elemzők nyelvi agnosztikusak, és speciális mezőkhöz, például irányítószámokhoz vagy termékazonosítókhoz használatosak. Használhatja például a PatternAnalyzert , és megadhat egy reguláris kifejezést, amely megfelel a jogkivonat-elválasztóknak.

Mi az az egyéni elemző?

A beépített elemzők számos lehetőséget kínálnak, de néha szükség van egy olyan elemzőre, amely szokatlan viselkedést biztosít egy mezőhöz. Ezekben az esetekben létrehozhat egy egyéni elemzőt.

Az egyéni elemzők a következőkből állnak:

  • Karakterszűrők. Ezek a szűrők feldolgoznak egy sztringet, mielőtt elérné a tokenizert.
  • Tokenizers. Ezek az összetevők az indexhez hozzáadandó jogkivonatokra osztja a szöveget.
  • Jogkivonatszűrők. Ezek a szűrők eltávolítják vagy módosítják a jogkivonat-kibocsátó által kibocsátott jogkivonatokat.

Vizsgáljuk meg részletesebben ezeket az összetevőket.

Karakterszűrők

Előfordulhat, hogy néhány műveletet el kell végezni a szövegen, mielőtt jogkivonatokra osztanák. A karakterszűrők engedélyezik ezeket a műveleteket. Három karakterszűrőt használhat:

  • html_strip. Ez a szűrő eltávolítja a HTML-szerkezeteket, például címkéket és attribútumokat.
  • Hozzárendelés. Ez a szűrő lehetővé teszi olyan leképezések megadását, amelyek az egyik sztringet egy másikra cserélik. Megadhat például egy olyan leképezést, amely a TX-et Texasra cseréli.
  • pattern_replace. Ez a szűrő lehetővé teszi egy reguláris kifejezés megadását, amely azonosítja a bemeneti szöveg mintáit, és hogy hogyan kell lecserélni az egyező szöveget.

Tokenizers

A tokenizer az az összetevő, amely a szöveget az indexben tárolt jogkivonatokra osztja. A jogkivonat-szabályzók a szavakat a gyökéralakjukra is lebontják. A jogkivonatok gyakran egyetlen szóból állhatnak, de érdemes lehet szokatlan jogkivonatokat létrehozni, például:

  • Teljes postai cím.
  • Teljes URL-cím vagy e-mail-cím.
  • Szavak egy adott nyelv nyelvhelyességi alapján.

13 különböző tokenizer közül választhat. Ezek a jogkivonat-szabályzók a következők:

  • Klasszikus. Ez a tokenizer az európai nyelvek nyelvtana alapján dolgozza fel a szöveget.
  • Kulcsszó. Ez a tokenizer a teljes bemenetet egyetlen jogkivonatként bocsátja ki. Használja ezt a tokenizert olyan mezőkhöz, amelyeket mindig egyetlen értékként kell indexelni.
  • Kisbetűs. Ez a jogkivonat-jelölő nem betűkre osztja a szöveget, majd az eredményül kapott jogkivonatokat az összes kisbetűre módosítja.
  • microsoft_language_tokenizer. Ez a jogkivonat-megosztó a megadott nyelv nyelvtana alapján osztja el a szöveget.
  • Minta. Ez a jogkivonat-megosztó olyan szövegeket oszt meg, amelyek megegyeznek egy ön által megadott reguláris kifejezéssel.
  • Szóköz. Ez a jogkivonat-megosztó mindenhol elosztja a szöveget, ahol szabad terület van.

Feljegyzés

A jogkivonat-elemzők teljes listáját az alábbi További információ szakaszban találja: Egyéni elemzők hozzáadása sztringmezőkhöz egy Azure AI Search-indexben.

Jogkivonatszűrők

Ha a jogkivonat-jelölő jogkivonatokra osztotta a bejövő szöveget, érdemes lehet további feldolgozást végezni, például a stopwords eltávolítását vagy az írásjelek vágását. Ezt a feldolgozást egy jogkivonatszűrő megadásával hajthatja végre. Negyvenegy különböző jogkivonatszűrő érhető el, köztük a következők:

  • Nyelvspecifikus szűrők, például arabic_normalization. Ezek a szűrők nyelvspecifikus nyelvhelyességi szabályokat alkalmaznak, hogy a szavak formáit eltávolítsák és gyökerekre cserélik.
  • aposztróf. Ez a szűrő eltávolít minden aposztrófot egy jogkivonatból és az aposztróf utáni karakterekből.
  • Klasszikus. Ez a szűrő eltávolítja az angol birtokosokat és gócokat a betűszókból.
  • Tartsa. Ez a szűrő eltávolít minden olyan jogkivonatot, amely nem tartalmaz egy vagy több szót a megadott listából.
  • Hossza. Ez a szűrő eltávolít minden olyan jogkivonatot, amely hosszabb a megadott minimálisnál vagy rövidebbnél.
  • Berendezés. Ez a szűrő eltávolítja a kezdő és a záró üres területet a jogkivonatokból.

Feljegyzés

A jogkivonatszűrők teljes listáját az alábbi További információ szakaszban találja: Egyéni elemzők hozzáadása sztringmezőkhöz egy Azure AI Search-indexben.

Egyéni elemző létrehozása

Egyéni elemzőt úgy hozhat létre, hogy megadja azt az index definiálásakor. Ezt JSON-kóddal kell elvégeznie – az Azure Portalon nem lehet egyéni indexet megadni. A tervezéskor használja az analyzers index szakaszát. Csak egy jogkivonat-szűrőt tartalmazhat, de egy vagy több karakterszűrőt és egy vagy több jogkivonatszűrőt. Használjon egyedi nevet az elemzőnek, és állítsa a tulajdonságot a @odata.type következőre Microsoft.Azure.Search.CustomAnalyzer: .

Ebben a példában egy karakterszűrő eltávolítja a HTML-formázást, a tokenizer az izlandi nyelvhelyességnek megfelelően felosztja a szöveget, a jogkivonatszűrő pedig eltávolítja az aposztrófokat:

"analyzers":(optional)[
   {
      "name":"ContosoAnalyzer",
      "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
      "charFilters":[
         "WebContentRemover"
      ],
      "tokenizer":"IcelandicTokenizer",
      "tokenFilters":[
         "ApostropheFilter"
      ]
   }
],
"charFilters":(optional)[
   {
      "name":"WebContentRemover",
      "@odata.type":"#html_strip"
   }
],
"tokenizers":(optional)[
   {
      "name":"IcelandicTokenizer",
      "@odata.type":"#microsoft_language_tokenizer",
      "language":"icelandic",
      "isSearchTokenizer":false,
   }
],
"tokenFilters":(optional)[
   {
      "name":"ApostropheFilter",
      "@odata.type":"#apostrophe"
   }
]

Egyéni elemző tesztelése

Miután definiálta az egyéni elemzőt az index részeként, a REST API Szövegelemző függvényével elküldheti a tesztszöveget, és meggyőződhet arról, hogy az elemző helyesen adja vissza a jogkivonatokat. Bármilyen REST-tesztelési eszközzel fogalmazza meg ezeket a kéréseket, például a népszerű Postman-alkalmazást .

A teszt REST-kérelmeknek a következőképpen kell kinéznie:

POST https://<search service name>.search.windows.net/indexes/<index name>/analyze?api-version=<api-version>
   Content-Type: application/json
   api-key: <api key>

Ebben a kérésben:

  • Cserélje le <search service name> az AI Search-erőforrás nevére.
  • Cserélje le <index name> az egyéni elemzőt tartalmazó index nevére.
  • Cserélje le <api-version> a REST API verziószámára.
  • Cserélje le <api-key> az AI Search-erőforrás hozzáférési kulcsára. Ezt a kulcsot az Azure Portalon szerezheti be.

A kérésnek tartalmaznia kell egy ilyen JSON-törzset is:

{
  "text": "Test text to analyze.",
  "analyzer": "<analyzer name>"
}

Cserélje le <analyzer name> az egyéni elemző definiálásakor megadott névre. Győződjön meg arról, hogy sok különböző text értékkel tesztel, amíg biztos nem lesz abban, hogy az egyéni elemző a várt módon viselkedik.

Egyéni elemző használata mezőhöz

Miután definiált és tesztelt egy egyéni elemzőt, konfigurálhatja az indexet a használatára. Az index minden mezőjéhez megadhat elemzőt.

A mezőt akkor használhatja analyzer , ha ugyanazt az elemzőt szeretné használni az indexeléshez és a kereséshez:

"fields": [
 {
   "name": "IcelandicDescription",
   "type": "Edm.String",
   "retrievable": true,
   "searchable": true,
   "analyzer": "ContosoAnalyzer",
   "indexAnalyzer": null,
   "searchAnalyzer": null
 },

Másik elemzőt is használhat a mező indexelése és a mező keresésekor. Ezt a konfigurációt akkor használja, ha más feldolgozási lépésekre van szüksége, amikor egy mezőt indexel egy lekérdezés elemzésekor:

"fields": [
 {
   "name": "IcelandicDescription",
   "type": "Edm.String",
   "retrievable": true,
   "searchable": true,
   "analyzer": null,
   "indexAnalyzer": "ContosoIndexAnalyzer",
   "searchAnalyzer": "ContosoSearchAnalyzer"
 },