Nyelvelemzők hozzáadása sztringmezőkhöz egy Azure AI Search-indexben
A nyelvelemző egy adott típusú szövegelemző , amely lexikális elemzést végez a célnyelv nyelvi szabályaival. Minden kereshető sztringmező rendelkezik elemző tulajdonsággel. Ha a tartalom lefordított sztringekből áll, például az angol és a kínai szöveg külön mezőiből, az egyes mezők nyelvelemzőit is megadhatja az elemzők gazdag nyelvi képességeinek eléréséhez.
Mikor érdemes nyelvelemzőt használni?
Érdemes megfontolni egy nyelvelemzőt, ha a szavak vagy mondatok szerkezetének megismerése értéket ad a szövegelemzéshez. Gyakori példa a szabálytalan igealakok ("bring" és "brought") vagy többes számú főnév ("egerek" és "egér") társítása. A nyelvi tudatosság nélkül ezek a sztringek csak a fizikai jellemzőkre vannak elemezve, ami nem veszi észre a kapcsolatot. Mivel a nagy mennyiségű szöveg nagyobb valószínűséggel rendelkezik ezzel a tartalommal, a leírásokból, véleményekből vagy összefoglalókból álló mezők jó jelöltek egy nyelvelemző számára.
A nyelvelemzőket akkor is érdemes megfontolni, ha a tartalom nem nyugati nyelvű sztringekből áll. Míg az alapértelmezett elemző (Standard Lucene) nyelv-agnosztikus, a szóközök és speciális karakterek (kötőjelek és perjelek) elválasztására való használata a nyugati nyelvekre jobban alkalmazható, mint a nem nyugati nyelvekre.
Például a kínai, japán, koreai (CJK) és más ázsiai nyelvekben a szóköz nem feltétlenül szóelválasztó. Vegye figyelembe a következő japán sztringet. Mivel nincs szóköze, a nyelvi agnosztikus elemző valószínűleg a teljes sztringet egy jogkivonatként elemezné, amikor valójában a sztring valójában egy kifejezés.
これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)
A fenti példában a sikeres lekérdezésnek tartalmaznia kell a teljes jogkivonatot, vagy egy helyettesítő karaktert használó részleges jogkivonatot, ami természetellenes és korlátozott keresési élményt eredményez.
Egy jobb élmény, ha az egyes szavakat keresi: 明るい (Fényes), 私たちの (Mi), 銀河系 (Galaxis). Az Azure AI Searchben elérhető egyik japán elemző használata nagyobb valószínűséggel oldja fel ezt a viselkedést, mivel ezek az elemzők jobban fel vannak szerelve a szövegrészek jelentéssel bíró szavakra való felosztására a célnyelven.
Lucene és Microsoft Analyzers összehasonlítása
Az Azure AI Search 35, Lucene által támogatott nyelvelemzőt és 50 nyelvelemzőt támogat, amelyeket az Office-ban és a Bingben használt, saját fejlesztésű Microsoft természetes nyelvi feldolgozási technológia támogat.
Egyes fejlesztők előnyben részesíthetik a Lucene ismerősebb, egyszerűbb, nyílt forráskódú megoldását. A Lucene nyelvelemzők gyorsabbak, de a Microsoft-elemzők fejlett képességekkel rendelkeznek, például lemmatizálással, szóbontással (például német, dán, holland, svéd, norvég, észt, finn, magyar, szlovák) és entitásfelismerés (URL-címek, e-mailek, dátumok, számok). Ha lehetséges, futtassa a Microsoft és a Lucene elemzők összehasonlítását, hogy eldöntse, melyik a jobb választás. Az Analyze API használatával megtekintheti az adott szövegből létrehozott jogkivonatokat egy adott elemző használatával.
A Microsoft-elemzőkkel végzett indexelés átlagosan 2-3-szor lassabb, mint a Lucene-megfelelőik, a nyelvtől függően. Az átlagos méretű lekérdezések esetében a keresési teljesítményt nem szabad jelentősen befolyásolni.
Angol elemzők
Az alapértelmezett elemző a Standard Lucene, amely angolul is jól működik, de talán nem olyan jól, mint Lucene angol elemzője vagy a Microsoft angol elemzője.
Lucene angol elemzője kibővíti a Standard elemzőt. Eltávolítja a birtokosokat (záró 's-okat) a szavakból, a Porter Stemming algoritmus szerint alkalmazza a forrást, és eltávolítja az angol stop szavakat.
A Microsoft angol elemzője lemmatizálást végez a lemmatizálás helyett. Ez azt jelenti, hogy sokkal jobban képes kezelni a felfújt és szabálytalan szavakat, ami relevánsabb keresési eredményeket eredményez.
Nyelvelemző megadása
Állítsa be az elemzőt az index létrehozásakor, mielőtt betöltené az adatokat.
A meződefinícióban győződjön meg arról, hogy a mező "kereshető" és Edm.String típusú.
Állítsa az "analyzer" tulajdonságot a támogatott elemzők listájában szereplő nyelvelemzők egyikére.
Az "analyzer" tulajdonság az egyetlen tulajdonság, amely elfogadja a nyelvelemzőt, és az indexeléshez és a lekérdezésekhez is használható. Az elemzővel kapcsolatos egyéb tulajdonságok ("searchAnalyzer" és "indexAnalyzer") nem fogadnak el nyelvelemzőt.
A nyelvelemzők nem szabhatók testre. Ha egy elemző nem felel meg a követelményeknek, hozzon létre egy egyéni elemzőt a microsoft_language_tokenizer vagy microsoft_language_stemming_tokenizer, majd adjon hozzá szűrőket a jogkivonat-feldolgozás előtti és utáni feldolgozáshoz.
Az alábbi példa egy index nyelvelemző specifikációját szemlélteti:
{
"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
},
Az index létrehozásáról és a mezőtulajdonságok beállításáról további információt az Index létrehozása (REST) című témakörben talál. A szövegelemzéssel kapcsolatos további információkért lásd : Elemzők az Azure AI Searchben.
Támogatott nyelvelemzők
Az alábbiakban látható a támogatott nyelvek listája Lucene és Microsoft-elemzők nevével.
Nyelv | Microsoft Analyzer neve | Lucene Analyzer neve |
---|---|---|
Arab | ar.microsoft | ar.lucene |
Örmény | hy.lucene | |
Bangla | bn.microsoft | |
Baszk | eu.lucene | |
Bolgár | bg.microsoft | bg.lucene |
Katalán | ca.microsoft | ca.lucene |
kínai (egyszerűsített) | zh-Hans.microsoft | zh-Hans.lucene |
Kínai (hagyományos) | zh-Hant.microsoft | zh-Hant.lucene |
Horvát | hr.microsoft | |
Cseh | cs.microsoft | cs.lucene |
Dán | da.microsoft | da.lucene |
Holland | nl.microsoft | nl.lucene |
Angol | en.microsoft | en.lucene |
Észt | et.microsoft | |
finn | fi.microsoft | fi.lucene |
Francia | fr.microsoft | fr.lucene |
Gallego | gl.lucene | |
Német | de.microsoft | de.lucene |
Görög | el.microsoft | el.lucene |
Gudzsaráti | gu.microsoft | |
héber | he.microsoft | |
Hindi | hi.microsoft | hi.lucene |
Magyar | hu.microsoft | hu.lucene |
Izlandi | is.microsoft | |
Indonéz (Bahasa) | id.microsoft | id.lucene |
Ír | ga.lucene | |
Olasz | it.microsoft | it.lucene |
Japán | ja.microsoft | ja.lucene |
Kannada | kn.microsoft | |
Koreai | ko.microsoft | ko.lucene |
Lett | lv.microsoft | lv.lucene |
Litván | lt.microsoft | |
Malajálam | ml.microsoft | |
Maláj (latin) | ms.microsoft | |
Marathi | mr.microsoft | |
Norvég | nb.microsoft | no.lucene |
Perzsa | fa.lucene | |
Lengyel | pl.microsoft | pl.lucene |
Portugál (Brazília) | pt-Br.microsoft | pt-Br.lucene |
Portugál (Portugália) | pt-Pt.microsoft | pt-Pt.lucene |
Pandzsábi | pa.microsoft | |
Román | ro.microsoft | ro.lucene |
Orosz | ru.microsoft | ru.lucene |
Szerb (cirill betűs) | sr-cirillic.microsoft | |
Szerb (latin betűs) | sr-latin.microsoft | |
Szlovák | sk.microsoft | |
Szlovén | sl.microsoft | |
Spanyol | es.microsoft | es.lucene |
svéd | sv.microsoft | sv.lucene |
Tamil | ta.microsoft | |
Telugu | te.microsoft | |
Thai | th.microsoft | th.lucene |
Török | tr.microsoft | tr.lucene |
Ukrán | uk.microsoft | |
urdu | your.microsoft | |
Vietnámi | vi.microsoft |
A Lucene-nel jegyzett összes elemzőt Apache Lucene nyelvelemzői működtetik.