Nyelvi elemzők hozzáadása sztringmezőkhöz egy Azure Cognitive Search indexben

A nyelvi elemző egy adott típusú szövegelemző, amely lexikális elemzéseket végez a célnyelv nyelvi szabályaival. Minden kereshető sztringmező rendelkezik egy elemző tulajdonságokkal. 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, minden mezőhöz megadhat nyelvi elemzőket, hogy hozzáférjen az elemzők gazdag nyelvi képességeihez.

Mikor kell nyelvi elemzőt használni?

Akkor érdemes nyelvi elemzőt használni, ha a szavak vagy mondatok szerkezetének ismerete értéket ad a szövegelemzéshez. Gyakori példa a szabálytalan igealakok ("bring" és "bring" (hozott) vagy többes számú főnevek ("mice" és "mouse") társítása. Nyelvi tájékoztatás nélkül a rendszer ezeket a sztringeket csak a fizikai jellemzők alapján elemezi, ami nem tudja megállapítani a kapcsolatot. Mivel a nagy méretű szövegtömbök nagyobb valószínűséggel tartalmaznak ilyen tartalmat, a leírásokból, felülvizsgálatokból vagy összegzésből álló mezők megfelelő jelöltek a nyelvi elemzők számára.

Akkor is érdemes nyelvi elemzőket használni, ha a tartalom nem nyugati nyelvi sztringekból áll. Bár az alapértelmezett elemző (Standard Lucene) nyelvtől független, a szóközök és speciális karakterek (kötőjelek és perjelek) használata jobban alkalmazható a nyugati nyelvekre, mint a nem nyugatiakra.

Például kínai, japán, koreai (CJK) és más ázsiai nyelvekben a szóköz nem feltétlenül szóhatároló. Vegyük például a következő japán sztringet. Mivel nem rendelkezik szóközöket, a nyelvtől független elemző valószínűleg egyetlen tokenként elemezné a teljes sztringet, pedig 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 egy sikeres lekérdezésnek tartalmaznia kell a teljes jogkivonatot, vagy egy részleges jogkivonatot helyettesítő utótag használatával, ami nem természetes és korlátozó keresési élményt eredményez.

Jobb élmény, ha egyéni szavakat keres:るい (Bright), 私たち( Mi), 銀河系 (Galaxy). A Cognitive Search-ban 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övegtömbök beszédes szavakra a célnyelven.

A Lucene és a Microsoft Analyzer összehasonlítása

Azure Cognitive Search a Lucene által támogatott 35 nyelvi elemzőt és 50 nyelvelemzőt támogat, amelyek a Microsoft saját fejlesztésű természetes nyelvi feldolgozási technológiája által támogatottak, Office és Bing.

Egyes fejlesztők a Lucene ismerősebb, egyszerű, nyílt forráskódú megoldását részesítik előnyben. A Lucene nyelvi elemzők gyorsabbak, de a Microsoft elemzői olyan fejlett képességekkel rendelkeznek, mint a lemmatizálás, a szavak dekódolása (olyan nyelveken, mint a német, dán, holland, svéd, norvég, norvég, svéd, befejezés, magyar, dán) és entitásfelismerés (URL-címek, e-mailek, dátumok, számok). Ha lehetséges, a Microsoft és a Lucene elemzők összehasonlítását is érdemes futtatni, hogy eldöntse, melyik a megfelelőbb. Az Analyze API használatával egy adott szövegből létrehozott jogkivonatokat egy adott elemző használatával láthatja.

A Microsoft elemzőivel történő indexelés a nyelvtől függően átlagosan 2–3-szor lassabb, mint a Lucene-megfelelőik. Az átlagos méretű lekérdezések keresési teljesítményét nem szabad jelentősen befolyásolni.

Angol nyelvű elemzők

Az alapértelmezett elemző a Standard Lucene, amely jól működik angol nyelven, de talán nem olyan jól, mint a Lucene angol elemzője vagy a Microsoft angol elemzője.

  • A Lucene angol nyelvű elemzője kibővíti a Standard elemzőt. Eltávolítja a birtokos (záró) szavakat a szavakból, a szavakat a Következő algoritmus szerint alkalmazza, és eltávolítja az angol leállítási szavakat.

  • A Microsoft angol nyelvű elemzője a eredet helyett a lemmatizálást végzi. Ez azt jelenti, hogy sokkal jobban képes kezelni a inflexected és a szabálytalan szó űrlapokat, ami relevánsabb keresési eredményeket ad vissza

Nyelvi elemző megadása

Az adatbetöltés előtt állítsa be az elemzőt az index létrehozása során.

  1. A meződefinícióban győződjön meg arról, hogy a mező "kereshetőként" van megfelelve, és Edm.String típusú.

  2. Állítsa az "elemző" tulajdonságot a támogatott elemzők listájában található egyik nyelvelemzőre.

    Az "elemző" tulajdonság az egyetlen tulajdonság, amely elfogadja a nyelvi elemző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 nyelvi elemzőt.

A nyelvi elemzők nem szabhatók testre. Ha egy elemző nem megfelelő az Igényeinek, megpróbálhat egyéni elemzőt létrehozni az microsoft_language_tokenizer vagy microsoft_language_stemming_tokenizer használatával, és szűrőket adhat hozzá a token előtti és utáni feldolgozáshoz.

Az alábbi példa egy nyelvi elemző specifikációját mutatja be egy indexben:

{
  "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 indexek létrehozásával és a mezőtulajdonságok beállításával kapcsolatos további információkért lásd: Index létrehozása (REST). További információ a szövegelemzésről: Elemzők a Azure Cognitive Search.

Támogatott nyelvi elemzők

Az alábbi lista a támogatott nyelveket sorolja fel Lucene- és Microsoft-elemzőnevekkel.

Nyelv A 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 luc.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 betűs) 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-cyrillic.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

Minden Lucene-jelöléssel rendelkező elemzőt az Apache Lucene nyelvelemzői működtetnek.

Lásd még