Dodawanie analizatorów języków do pól ciągów w indeksie usługi Azure AI Search
Analizator języka to konkretny typ analizatora tekstu, który wykonuje analizę leksykatyczną przy użyciu reguł językowych języka docelowego. Każde pole ciągu z możliwością wyszukiwania ma właściwość analizatora. Jeśli zawartość składa się z przetłumaczonych ciągów, takich jak oddzielne pola dla tekstu w języku angielskim i chińskim, możesz określić analizatory języków w każdym polu, aby uzyskać dostęp do zaawansowanych możliwości językowych tych analizatorów.
Kiedy należy używać analizatora języka
Należy rozważyć analizator języka, gdy świadomość struktury wyrazów lub zdań dodaje wartość do analizowania tekstu. Typowym przykładem jest skojarzenie nieregularnych form czasowników ("bring" i "bring) lub rzeczowników w liczbie mnogiej ("myszy" i "myszy"). Bez świadomości językowej te ciągi są analizowane w samych cechach fizycznych, co nie może przechwycić połączenia. Ponieważ duże fragmenty tekstu są bardziej narażone na tę zawartość, pola składające się z opisów, przeglądów lub podsumowań są dobrymi kandydatami do analizatora języka.
Należy również rozważyć analizatory języków, gdy zawartość składa się z ciągów języka innego niż zachodni. Podczas gdy analizator domyślny (Standard Lucene) jest niezależny od języka, pojęcie używania spacji i znaków specjalnych (łączniki i ukośniki) do oddzielnych ciągów ma większe zastosowanie do języków zachodnich niż te inne niż zachodnie.
Na przykład w języku chińskim, japońskim, koreańskim (CJK) i innych azjatyckich językach spacja nie musi być ogranicznikiem słowa. Rozważ następujący ciąg japoński. Ponieważ nie ma spacji, niezależny analizator języka prawdopodobnie przeanalizuje cały ciąg jako jeden token, gdy w rzeczywistości ciąg jest frazą.
これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)
W powyższym przykładzie pomyślne zapytanie musi zawierać pełny token lub częściowy token przy użyciu symbolu wieloznakowego sufiksu, co spowoduje nienaturalne i ograniczenie środowiska wyszukiwania.
Lepszym doświadczeniem jest wyszukiwanie pojedynczych słów: 明るい (Bright), 私たちの (Nasz), 銀河系 (Galaxy). Użycie jednego z japońskich analizatorów dostępnych w usłudze Azure AI Search jest bardziej prawdopodobne, aby odblokować to zachowanie, ponieważ analizatory są lepiej wyposażone w podzielenie fragmentu tekstu na zrozumiałe słowa w języku docelowym.
Porównywanie rozwiązań Lucene i Microsoft Analyzer
Usługa Azure AI Search obsługuje 35 analizatorów języków wspieranych przez analizatory języka Lucene i 50 obsługiwanych przez zastrzeżoną technologię przetwarzania języka naturalnego firmy Microsoft używaną w pakietach Office i Bing.
Niektórzy deweloperzy mogą preferować bardziej znane, proste, open source rozwiązanie Lucene. Analizatory języka Lucene są szybsze, ale analizatory firmy Microsoft mają zaawansowane możliwości, takie jak lemmatyzacja, dekompilowanie wyrazów (w językach takich jak niemiecki, duński, holenderski, szwedzki, norweski, estoński, fiński, węgierski, słowacki) i rozpoznawanie jednostek (adresy URL, wiadomości e-mail, daty, liczby). Jeśli to możliwe, należy uruchomić porównania zarówno analizatorów Firmy Microsoft, jak i Lucene, aby zdecydować, który z nich jest lepszy. Interfejs API analizowania umożliwia wyświetlanie tokenów wygenerowanych na podstawie danego tekstu przy użyciu określonego analizatora.
Indeksowanie za pomocą analizatorów firmy Microsoft jest średnio dwa do trzech razy wolniejsze niż ich odpowiedniki Lucene, w zależności od języka. Wydajność wyszukiwania nie powinna mieć znacznego wpływu na zapytania o średni rozmiar.
Analizatory języka angielskiego
Analizatorem domyślnym jest Standard Lucene, który działa dobrze w języku angielskim, ale być może nie jest tak dobrze, jak angielski analizator Lucene lub angielski analizator firmy Microsoft.
Analizator lucene w języku angielskim rozszerza analizator standardowy. Usuwa opętujące (końcowe ' s) ze słów, stosuje wynik zgodnie z algorytmem Stemming Porter i usuwa angielskie słowa zatrzymane.
Angielski analizator firmy Microsoft wykonuje lemmatyzację zamiast wynikać. Oznacza to, że może obsługiwać inflected i nieregularne formy wyrazów znacznie lepiej, co skutkuje bardziej odpowiednimi wynikami wyszukiwania.
Jak określić analizator języka
Ustaw analizator podczas tworzenia indeksu przed załadowaniem danych.
W definicji pola upewnij się, że pole jest przypisywane jako "możliwe do wyszukiwania" i jest typu Edm.String.
Ustaw właściwość "analyzer" na jedną z analizatorów języka z listy obsługiwanych analizatorów.
Właściwość "analyzer" jest jedyną właściwością, która będzie akceptować analizator języka i jest używana zarówno do indeksowania, jak i zapytań. Inne właściwości związane z analizatorem ("searchAnalyzer" i "indexAnalyzer") nie akceptują analizatora języka.
Nie można dostosować analizatorów języka. Jeśli analizator nie spełnia Twoich wymagań, utwórz analizator niestandardowy przy użyciu microsoft_language_tokenizer lub microsoft_language_stemming_tokenizer, a następnie dodaj filtry do przetwarzania wstępnego i po tokenizacji.
Poniższy przykład ilustruje specyfikację analizatora języka w indeksie:
{
"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
},
Aby uzyskać więcej informacji na temat tworzenia właściwości indeksu i pola ustawienia, zobacz Create Index (REST) (Tworzenie indeksu (REST). Aby uzyskać więcej informacji na temat analizy tekstu, zobacz Analizatory w usłudze Azure AI Search.
Obsługiwane analizatory języków
Poniżej znajduje się lista obsługiwanych języków z nazwami Lucene i Microsoft Analyzer.
Język | Nazwa programu Microsoft Analyzer | Nazwa analizatora Lucene |
---|---|---|
Arabski | ar.microsoft | ar.lucene |
Ormiański | hy.lucene | |
Bangla | bn.microsoft | |
Baskijski | eu.lucene | |
Bułgarski | bg.microsoft | bg.lucene |
Kataloński | ca.microsoft | ca.lucene |
Chiński uproszczony | zh-Hans.microsoft | zh-Hans.lucene |
Chiński tradycyjny | zh-Oj.microsoft | zh-Hant.lucene |
Chorwacki | hr.microsoft | |
Czeski | cs.microsoft | cs.lucene |
Duński | da.microsoft | da.lucene |
Niderlandzki | nl.microsoft | nl.lucene |
angielski | en.microsoft | en.lucene |
Estoński | et.microsoft | |
Fiński | fi.microsoft | fi.lucene |
Francuski | fr.microsoft | fr.lucene |
Galicyjski | gl.lucene | |
Niemiecki | de.microsoft | de.lucene |
Grecki | el.microsoft | el.lucene |
Gudżarati | gu.microsoft | |
Hebrajski | he.microsoft | |
Hindi | hi.microsoft | hi.lucene |
Węgierski | hu.microsoft | hu.lucene |
Islandzki | is.microsoft | |
Indonezyjski (Bahasa) | id.microsoft | id.lucene |
Irlandzki | ga.lucene | |
Włoski | it.microsoft | it.lucene |
japoński | ja.microsoft | ja.lucene |
Kannada | kn.microsoft | |
Koreański | ko.microsoft | ko.lucene |
Łotewski | lv.microsoft | lv.lucene |
Litewski | lt.microsoft | |
Malayalam | ml.microsoft | |
Malajski (łaciński) | ms.microsoft | |
Marathi | mr.microsoft | |
Norweski | nb.microsoft | no.lucene |
Perski | fa.lucene | |
Polski | pl.microsoft | pl.lucene |
Portugalski (Brazylia) | pt-Br.microsoft | pt-Br.lucene |
Portugalski (Portugalia) | pt-Pt.microsoft | pt-Pt.lucene |
Pendżabski | pa.microsoft | |
Rumuński | ro.microsoft | ro.lucene |
Rosyjski | ru.microsoft | ru.lucene |
Serbski (cyrylica) | sr-cyrylica.microsoft | |
Serbski (łaciński) | sr-latin.microsoft | |
Słowacki | sk.microsoft | |
Słoweński | sl.microsoft | |
Hiszpański | es.microsoft | es.lucene |
Szwedzki | sv.microsoft | sv.lucene |
Tamilski | ta.microsoft | |
Telugu | te.microsoft | |
Tajlandzki | th.microsoft | th.lucene |
Turecki | tr.microsoft | tr.lucene |
Ukraiński | uk.microsoft | |
Urdu | your.microsoft | |
Wietnamski | vi.microsoft |
Wszystkie analizatory z nazwami z adnotacjami lucene są obsługiwane przez analizatory języków apache Lucene.