Sdílet prostřednictvím


Přidání analyzátorů jazyka do řetězcových polí v indexu Azure AI Search

Analyzátor jazyka je specifický typ analyzátoru textu, který provádí lexikální analýzu pomocí lingvistických pravidel cílového jazyka. Každé prohledávatelné pole řetězce má vlastnost analyzátoru. Pokud se váš obsah skládá z přeložených řetězců, jako jsou samostatná pole pro text v angličtině a čínštině, můžete pro přístup k bohatým jazykovým schopnostem těchto analyzátorů zadat analyzátory jazyka.

Kdy použít analyzátor jazyka

Při povědomí o struktuře slov nebo vět byste měli zvážit analyzátor jazyka a přidat hodnotu k analýze textu. Běžným příkladem je asociace nepravidelných tvarů sloves ("bring" a "bring") nebo množných jmen ("myší" a "myš"). Bez lingvistického povědomí se tyto řetězce analyzují pouze na fyzických vlastnostech, což se nepodaří zachytávat připojení. Vzhledem k tomu, že velké bloky textu budou pravděpodobně mít tento obsah, jsou pole skládající se z popisů, recenzí nebo souhrnů vhodnými kandidáty pro analyzátor jazyka.

Analyzátory jazyka byste měli zvážit také v případě, že se obsah skládá z řetězců jiných jazyků než západního jazyka. I když je výchozí analyzátor (Standard Lucene) nezávislý na jazyce, koncept použití mezer a speciálních znaků (spojovníků a lomítek) pro samostatné řetězce je vhodnější pro západní jazyky než západní jazyky.

Například v čínštině, japonštině, korejštině (CJK) a jiných asijských jazycích není mezera nutně oddělovačem slov. Představte si následující japonský řetězec. Vzhledem k tomu, že neobsahuje mezery, analyzátor nezávislý na jazyce by pravděpodobně analyzoval celý řetězec jako jeden token, pokud je ve skutečnosti řetězec ve skutečnosti frází.

これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)

V příkladu výše by úspěšný dotaz musel obsahovat úplný token nebo částečný token s použitím zástupného znaku přípony, což vede k nepřirozeným a omezujícím vyhledávacím prostředím.

Lepší je hledat jednotlivá slova: 明るい (Bright), 私たちの (Naše), 銀河系 (Galaxy). Použití některého z japonských analyzátorů dostupných ve službě Azure AI Search je pravděpodobnější, že toto chování odemknete, protože tyto analyzátory jsou lépe vybavené rozdělením bloku textu na smysluplná slova v cílovém jazyce.

Porovnání Lucene a Microsoft Analyzerů

Azure AI Search podporuje 35 analyzátorů jazyka podporovaných Lucene a 50 analyzátorů jazyka podporovaných proprietární technologií microsoftu pro zpracování přirozeného jazyka používané v Office a Bingu.

Někteří vývojáři můžou preferovat známé, jednoduché opensourcové řešení Lucene. Analyzátory jazyka Lucene jsou rychlejší, ale analyzátory Microsoftu mají pokročilé funkce, jako je lemmatizace, dekompounding slov (v jazycích, jako je němčina, dánština, holandština, švédština, norština, estonsko, finština, maďarština, slovenština) a rozpoznávání entit (adresy URL, e-maily, kalendářní data, čísla). Pokud je to možné, měli byste spustit porovnání analyzátorů Microsoftu i Lucene, abyste se rozhodli, která z nich je vhodnější. Pomocí rozhraní ANALYZE API můžete zobrazit tokeny generované z daného textu pomocí konkrétního analyzátoru.

Indexování pomocí analyzátorů Microsoftu je v závislosti na jazyce průměrně dvakrát až třikrát pomalejší než jejich ekvivalenty Lucene. U dotazů na průměrnou velikost by nemělo být výrazně ovlivněno výkon vyhledávání.

Anglické analyzátory

Výchozí analyzátor je Standard Lucene, který funguje dobře pro angličtinu, ale možná ne stejně jako anglický analyzátor Lucene nebo anglický analyzátor Microsoftu.

  • Analyzátor Lucene v angličtině rozšiřuje standardní analyzátor. Odebere z slov přivlastňovací výrazy (koncové "s"), použije se na základě algoritmu porter stemmingu a odebere slova stop v angličtině.

  • Anglický analyzátor Microsoftu provádí lemmatizaci místo vytváření. To znamená, že dokáže zpracovat inlektované a nepravidelné tvary slov mnohem lépe, což vede k relevantnějším výsledkům hledání.

Určení analyzátoru jazyka

Před načtením dat nastavte analyzátor během vytváření indexu.

  1. V definici pole se ujistěte, že je pole přiřazeno jako "prohledávatelné" a je typu Edm.String.

  2. Nastavte vlastnost analyzátoru na jeden z analyzátorů jazyka ze seznamu podporovaných analyzátorů.

    Vlastnost "analyzer" je jediná vlastnost, která přijme analyzátor jazyka a používá se pro indexování i dotazy. Jiné vlastnosti související s analyzátorem ("searchAnalyzer" a "indexAnalyzer") nepřijímají analyzátor jazyka.

Analyzátory jazyka nelze přizpůsobit. Pokud analyzátor nesplňuje vaše požadavky, vytvořte vlastní analyzátor s microsoft_language_tokenizer nebo microsoft_language_stemming_tokenizer a přidejte filtry pro zpracování před a po tokenizaci.

Následující příklad znázorňuje specifikaci analyzátoru jazyka v indexu:

{
  "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
    },

Další informace o vytvoření vlastností pole indexu a nastavení naleznete v tématu Vytvoření indexu (REST).</a0> Další informace o analýze textu najdete v tématu Analyzátory ve službě Azure AI Search.

Podporované analyzátory jazyka

Níže je seznam podporovaných jazyků s názvy Analyzátorů Lucene a Microsoftu.

Jazyk Název nástroje Microsoft Analyzer Název analyzátoru Lucene
Arabština ar.microsoft ar.lucene
Arménština hy.lucene
Bangla bn.microsoft
Baskičtina eu.lucene
Bulharština bg.microsoft bg.lucene
Katalánština ca.microsoft ca.lucene
Čínština (zjednodušená) zh-Hans.microsoft zh-Hans.lucene
Čínština (tradiční) zh-Hant.microsoft zh-Hant.lucene
Chorvatština hr.microsoft
Čeština cs.microsoft cs.lucene
Dánština da.microsoft da.lucene
Nizozemština nl.microsoft nl.lucene
Angličtina en.microsoft en.lucene
Estonština et.microsoft
Finština fi.microsoft fi.lucene
Francouzština fr.microsoft fr.lucene
Galicijština gl.lucene
Němčina de.microsoft de.lucene
Řečtina el.microsoft el.lucene
Gudžarátština gu.microsoft
Hebrejština he.microsoft
Hindština hi.microsoft hi.lucene
Maďarština hu.microsoft hu.lucene
Islandština is.microsoft
Indonéština (Bahasa) id.microsoft id.lucene
Irština ga.lucene
Italština it.microsoft it.lucene
Japonština ja.microsoft ja.lucene
Kannadština kn.microsoft
Korejština ko.microsoft ko.lucene
Lotyština lv.microsoft lv.lucene
Litevština lt.microsoft
Malajalámština ml.microsoft
Malajá (latinka) ms.microsoft
Maráthština mr.microsoft
Norština nb.microsoft no.lucene
Perština fa.lucene
Polština pl.microsoft pl.lucene
Portugalština (Brazílie) pt-Br.microsoft pt-Br.lucene
portugalština (Portugalsko) pt-Pt.microsoft pt-Pt.lucene
Paňdžábština pa.microsoft
Rumunština ro.microsoft ro.lucene
Ruština ru.microsoft ru.lucene
Srbština (cyrilice) sr-cyrillic.microsoft
Srbština (latinka) sr-latin.microsoft
Slovenština sk.microsoft
Slovinština sl.microsoft
Španělština es.microsoft es.lucene
Švédština sv.microsoft sv.lucene
Tamilština ta.microsoft
Telugština te.microsoft
Thajština th.microsoft th.lucene
Turečtina tr.microsoft tr.lucene
Ukrajinština uk.microsoft
Urdština your.microsoft
Vietnamština vi.microsoft

Všechny analyzátory s názvy anotovanými pomocí Lucene využívají analyzátory jazyka Apache Lucene.

Viz také