Index fejlesztése elemzőkkel és tokenizált kifejezésekkel
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.
Elemzők az AI-keresésben
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"
},