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.
V definici pole se ujistěte, že je pole přiřazeno jako "prohledávatelné" a je typu Edm.String.
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).<
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.