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.

  1. W definicji pola upewnij się, że pole jest przypisywane jako "możliwe do wyszukiwania" i jest typu Edm.String.

  2. 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
Armeń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
tajski 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.

Zobacz też