Niestandardowa umiejętność poznawcza wyszukiwania jednostek

Umiejętność wyszukiwania jednostek niestandardowych służy do wykrywania lub rozpoznawania zdefiniowanych jednostek. Podczas wykonywania zestawu umiejętności umiejętność szuka tekstu z niestandardowej, zdefiniowanej przez użytkownika listy wyrazów i fraz. Ta lista służy do oznaczania wszystkich pasujących jednostek znajdujących się w dokumentach źródłowych. Umiejętność obsługuje również stopień dopasowania rozmytego, który można zastosować w celu znalezienia dopasowań, które są podobne, ale nie dokładne.

Uwaga

Ta umiejętność nie jest powiązana z interfejsem API usług AI platformy Azure, ale wymaga klucza usług Azure AI, aby zezwolić na więcej niż 20 transakcji. Ta umiejętność jest mierzona przez usługę Azure AI Search.

@odata.type

Microsoft.Skills.Text.CustomEntityLookupSkill

Limity danych

  • Maksymalny obsługiwany rozmiar rekordu wejściowego to 256 MB. Jeśli musisz podzielić dane przed wysłaniem ich do umiejętności wyszukiwania jednostek niestandardowych, rozważ użycie umiejętności dzielenia tekstu. Jeśli używasz umiejętności dzielenia tekstu, ustaw długość strony na 5000, aby uzyskać najlepszą wydajność.
  • Maksymalny rozmiar definicji jednostki niestandardowej wynosi 10 MB, jeśli jest udostępniany jako plik zewnętrzny określony za pomocą parametru "entitiesDefinitionUri".
  • Jeśli jednostki są zdefiniowane w tekście przy użyciu parametru "inlineEntitiesDefinition", maksymalny rozmiar to 10 KB.

Parametry umiejętności

W parametrach jest rozróżniana wielkość liter.

Nazwa parametru opis
entitiesDefinitionUri Ścieżka do zewnętrznego pliku JSON lub CSV zawierającego cały tekst docelowy do dopasowania. Ta definicja jednostki jest odczytywana na początku przebiegu indeksatora; wszystkie aktualizacje tego pliku w połowie uruchomienia nie zostaną zrealizowane do czasu kolejnych uruchomień. Ten plik musi być dostępny za pośrednictwem protokołu HTTPS. Zobacz Niestandardowy format definicji jednostki poniżej, aby uzyskać oczekiwany schemat CSV lub JSON.
inlineEntitiesDefinition Wbudowane definicje jednostek JSON. Ten parametr zastępuje parametr entitiesDefinitionUri, jeśli istnieje. Nie więcej niż 10 KB konfiguracji może być podanych w tekście. Zobacz niestandardową definicję jednostki poniżej, aby zapoznać się z oczekiwanym schematem JSON.
defaultLanguageCode (Opcjonalnie) Kod języka tekstu wejściowego używany do tokenizowania i oznaczania tekstu wejściowego. Obsługiwane są następujące języki: da, de, en, es, fi, fr, it, pt. Wartość domyślna to angielski (en). W przypadku przekazania languagecode-countrycode formatu zostanie użyta tylko languagecode część formatu.
globalDefaultCaseSensitive (Opcjonalnie) Domyślna wartość wrażliwa na wielkość liter dla umiejętności. Jeśli defaultCaseSensitive wartość jednostki nie zostanie określona, ta wartość stanie się wartością defaultCaseSensitive dla tej jednostki.
globalDefaultAccentSensitive (Opcjonalnie) Domyślna wartość wrażliwa na akcent dla umiejętności. Jeśli defaultAccentSensitive wartość jednostki nie zostanie określona, ta wartość stanie się wartością defaultAccentSensitive dla tej jednostki.
globalDefaultFuzzyEditDistance (Opcjonalnie) Domyślna rozmyta wartość dystansu dla umiejętności. Jeśli defaultFuzzyEditDistance wartość jednostki nie zostanie określona, ta wartość stanie się wartością defaultFuzzyEditDistance dla tej jednostki.

Dane wejściowe umiejętności

Nazwa danych wejściowych opis
text Tekst do przeanalizowania.
languageCode Opcjonalny. Wartość domyślna to "en".

Dane wyjściowe umiejętności

Nazwa danych wyjściowych opis
entities Tablica typów złożonych, które zawierają następujące pola:
  • "name": jednostka najwyższego poziomu; reprezentuje formularz "znormalizowany".
  • "id": unikatowy identyfikator jednostki zgodnie z definicją w definicji jednostki niestandardowej.
  • "description": Opis jednostki zdefiniowany przez użytkownika w formacie "Niestandardowy format definicji jednostki".
  • "type": typ jednostki zdefiniowany przez użytkownika w formacie "Niestandardowy format definicji jednostki".
  • "subtype": podtyp jednostki zdefiniowany przez użytkownika w formacie "Niestandardowy format definicji jednostki".
  • "matches": tablica typów złożonych, które zawierają:
    • "text" z dokumentu źródłowego
    • "offset" lokalizacja, w której znaleziono dopasowanie,
    • "length" tekstu mierzonego w znakach
    • "matchDistance" lub liczba znaków, które różnią się między dopasowaniem a jednostką "name".

Niestandardowy format definicji jednostki

Istnieją trzy podejścia do udostępniania listy jednostek niestandardowych do umiejętności wyszukiwania jednostek niestandardowych:

  • . Plik CSV (zakodowany w formacie UTF-8)
  • . Plik JSON (zakodowany w formacie UTF-8)
  • Wbudowane w definicji umiejętności

Jeśli plik definicji znajduje się w pliku . CSV lub . Plik JSON podaj pełną ścieżkę w parametrze "entitiesDefinitionUri". Plik jest pobierany na początku każdego uruchomienia indeksatora. Musi pozostać dostępny do momentu zatrzymania indeksatora.

Jeśli używasz definicji wbudowanej, określ ją w parametrze umiejętności "inlineEntitiesDefinition".

Uwaga

Indeksatory obsługują wyspecjalizowane tryby analizowania plików JSON i CSV. W przypadku korzystania z umiejętności wyszukiwania jednostek niestandardowych zachowaj wartość "parsingMode" ustawioną na wartość "default". Umiejętność oczekuje formatu JSON i woluminu CSV w stanie nieparzysowanym.

Format CSV

Możesz podać definicję jednostek niestandardowych do wyszukania w pliku wartości rozdzielanej przecinkami (CSV), podając ścieżkę do pliku i ustawiając ją w parametrze umiejętności "entitiesDefinitionUri". Ścieżka powinna znajdować się w lokalizacji https. Rozmiar pliku definicji może wynosić do 10 MB.

Format CSV jest prosty. Każdy wiersz reprezentuje unikatową jednostkę, jak pokazano poniżej:

Bill Gates, BillG, William H. Gates
Microsoft, MSFT
Satya Nadella 

W tym przypadku istnieją trzy jednostki, które można zwrócić (Bill Gates, Satya Nadella, Microsoft). Aliasy następują po jednostce głównej. Dopasowanie aliasu jest powiązane w ramach jednostki podstawowej. Jeśli na przykład ciąg "William H. Gates" zostanie znaleziony w dokumencie, zostanie zwrócone dopasowanie jednostki "Bill Gates".

Format JSON

Możesz również podać definicję jednostek niestandardowych do wyszukania w pliku JSON. Format JSON zapewnia nieco większą elastyczność, ponieważ umożliwia definiowanie pasujących reguł na termin. Można na przykład określić odległość dopasowywania rozmytego (odległość Damerau-Levenshtein) dla każdego terminu lub określić, czy dopasowanie powinno mieć wielkość liter, czy nie.

Podobnie jak w przypadku plików CSV, musisz podać ścieżkę do pliku JSON i ustawić ją w parametrze umiejętności "entitiesDefinitionUri". Ścieżka powinna znajdować się w lokalizacji https. Rozmiar pliku definicji może wynosić do 10 MB.

Najbardziej podstawową definicją listy jednostek niestandardowych JSON może być lista jednostek do dopasowania:

[ 
    { 
        "name" : "Bill Gates"
    }, 
    { 
        "name" : "Microsoft"
    }, 
    { 
        "name" : "Satya Nadella"
    }
]

Bardziej złożone definicje mogą zawierać identyfikator zdefiniowany przez użytkownika, opis, typ, podtyp i aliasy. Jeśli termin aliasu zostanie dopasowany, jednostka zostanie również zwrócona:

[ 
    { 
        "name" : "Bill Gates",
        "description" : "Microsoft founder." ,
        "aliases" : [ 
            { "text" : "William H. Gates", "caseSensitive" : false },
            { "text" : "BillG", "caseSensitive" : true }
        ]
    }, 
    { 
        "name" : "Xbox One", 
        "type": "Hardware",
        "subtype" : "Gaming Device",
        "id" : "4e36bf9d-5550-4396-8647-8e43d7564a76",
        "description" : "The Xbox One product"
    }, 
    { 
        "name" : "LinkedIn" , 
        "description" : "The LinkedIn company", 
        "id" : "differentIdentifyingScheme123", 
        "fuzzyEditDistance" : 0 
    }, 
    { 
        "name" : "Microsoft" , 
        "description" : "Microsoft Corporation", 
        "id" : "differentIdentifyingScheme987", 
        "defaultCaseSensitive" : false, 
        "defaultFuzzyEditDistance" : 1, 
        "aliases" : [ 
            { "text" : "MSFT", "caseSensitive" : true }
        ]
    } 
] 

W poniższych tabelach opisano parametry konfiguracji, które można ustawić podczas definiowania jednostek niestandardowych:

Nazwa pola opis
name Deskryptor jednostek najwyższego poziomu. Dopasowania w danych wyjściowych umiejętności będą pogrupowane według tej nazwy i powinny reprezentować "znormalizowaną" formę znalezionego tekstu.
description (Opcjonalnie) To pole może służyć jako przekazywanie niestandardowych metadanych dotyczących dopasowanych tekstu. Wartość tego pola będzie wyświetlana z każdym dopasowaniem jednostki w danych wyjściowych umiejętności.
type (Opcjonalnie) To pole może służyć jako przekazywanie niestandardowych metadanych dotyczących dopasowanych tekstu. Wartość tego pola będzie wyświetlana z każdym dopasowaniem jednostki w danych wyjściowych umiejętności.
subtype (Opcjonalnie) To pole może służyć jako przekazywanie niestandardowych metadanych dotyczących dopasowanych tekstu. Wartość tego pola będzie wyświetlana z każdym dopasowaniem jednostki w danych wyjściowych umiejętności.
id (Opcjonalnie) To pole może służyć jako przekazywanie niestandardowych metadanych dotyczących dopasowanych tekstu. Wartość tego pola będzie wyświetlana z każdym dopasowaniem jednostki w danych wyjściowych umiejętności.
caseSensitive (Opcjonalnie) Wartość domyślna to false. Wartość logiczna określająca, czy porównania z nazwą jednostki powinny być wrażliwe na wielkość liter znaków. Przykładowe dopasowania bez uwzględniania wielkości liter "Microsoft" mogą być następujące: microsoft, microSoft, MICROSOFT
accentSensitive (Opcjonalnie) Wartość domyślna to false. Wartość logiczna oznacza, czy podkreślone i nieprzychylne litery, takie jak "é" i "e" powinny być identyczne.
fuzzyEditDistance (Opcjonalnie) Wartość domyślna to 0. Maksymalna wartość 5. Określa akceptowalną liczbę znaków rozbieżnych, które nadal stanowią dopasowanie z nazwą jednostki. Zwracana jest najmniejsza możliwa rozmycie dla danego meczu. Na przykład jeśli odległość edycji jest ustawiona na 3, "Windows 10" nadal będzie pasować do "Windows", "Windows10" i "windows 7".
Gdy ważność wielkości liter jest ustawiona na wartość false, różnice wielkości liter nie są uwzględniane w tolerancji rozmyte, ale w przeciwnym razie.
defaultCaseSensitive (Opcjonalnie) Zmienia domyślną wartość poufności wielkości liter dla tej jednostki. Może służyć do zmiany wartości domyślnej wszystkich aliasów caseSensitive wartości.
defaultAccentSensitive (Opcjonalnie) Zmienia domyślną wartość poufności akcentu dla tej jednostki. Może służyć do zmiany wartości domyślnej wszystkich aliasów accentSensitive wartości.
defaultFuzzyEditDistance (Opcjonalnie) Zmienia domyślną wartość odległości edycji rozmytej dla tej jednostki. Może służyć do zmiany wartości domyślnej wszystkich aliasów rozmyteEditDistance wartości.
aliases (Opcjonalnie) Tablica złożonych obiektów, których można użyć do określenia alternatywnych pisowni lub synonimów nazwy jednostki głównej.
Właściwości aliasu opis
text Alternatywna pisownia lub reprezentacja nazwy jednostki docelowej.
caseSensitive (Opcjonalnie) Działa tak samo jak powyżej parametr "caseSensitive" jednostki głównej, ale dotyczy tylko tego jednego aliasu.
accentSensitive (Opcjonalnie) Działa tak samo jak powyżej parametr "accentSensitive" jednostki głównej, ale dotyczy tylko tego jednego aliasu.
fuzzyEditDistance (Opcjonalnie) Działa tak samo jak powyżej parametru "rozmyteEditDistance", ale dotyczy tylko tego jednego aliasu.

Format wbudowany

W niektórych przypadkach bardziej wygodne może być osadzanie niestandardowej definicji jednostki, tak aby była wbudowana w definicję umiejętności. Możesz użyć tego samego formatu JSON co opisany powyżej, z tą różnicą, że znajduje się on w definicji umiejętności. W tekście można zdefiniować tylko konfiguracje o rozmiarze mniejszym niż 10 KB (rozmiar serializowany).

Przykładowa definicja umiejętności

Poniżej przedstawiono przykładową definicję umiejętności przy użyciu wbudowanego formatu:

  {
    "@odata.type": "#Microsoft.Skills.Text.CustomEntityLookupSkill",
    "context": "/document",
    "inlineEntitiesDefinition": 
    [
      { 
        "name" : "Bill Gates",
        "description" : "Microsoft founder." ,
        "aliases" : [ 
            { "text" : "William H. Gates", "caseSensitive" : false },
            { "text" : "BillG", "caseSensitive" : true }
        ]
      }, 
      { 
        "name" : "Xbox One", 
        "type": "Hardware",
        "subtype" : "Gaming Device",
        "id" : "4e36bf9d-5550-4396-8647-8e43d7564a76",
        "description" : "The Xbox One product"
      }
    ],    
    "inputs": [
      {
        "name": "text",
        "source": "/document/content"
      }
    ],
    "outputs": [
      {
        "name": "entities",
        "targetName": "matchedEntities"
      }
    ]
  }

Alternatywnie można wskazać plik definicji jednostek zewnętrznych. Poniżej przedstawiono przykładową definicję umiejętności przy użyciu entitiesDefinitionUri formatu:

  {
    "@odata.type": "#Microsoft.Skills.Text.CustomEntityLookupSkill",
    "context": "/document",
    "entitiesDefinitionUri": "https://myblobhost.net/keyWordsConfig.csv",    
    "inputs": [
      {
        "name": "text",
        "source": "/document/content"
      }
    ],
    "outputs": [
      {
        "name": "entities",
        "targetName": "matchedEntities"
      }
    ]
  }

Przykładowa definicja indeksu

Ta sekcja zawiera przykładową definicję indeksu. Oba "jednostki" i "dopasowania" to tablice typów złożonych. Można mieć wiele jednostek na dokument i wiele dopasowań dla każdej jednostki.

{
  "name": "entities",
  "type": "Collection(Edm.ComplexType)",
  "fields": [
    {
      "name": "name",
      "type": "Edm.String",
      "facetable": false,
      "filterable": false,
      "retrievable": true,
      "searchable": true,
      "sortable": false,
    },
    {
      "name": "id",
      "type": "Edm.String",
      "facetable": false,
      "filterable": false,
      "retrievable": true,
      "searchable": false,
      "sortable": false,
    },
    {
      "name": "description",
      "type": "Edm.String",
      "facetable": false,
      "filterable": false,
      "retrievable": true,
      "searchable": true,
      "sortable": false,
    },
    {
      "name": "type",
      "type": "Edm.String",
      "facetable": true,
      "filterable": true,
      "retrievable": true,
      "searchable": false,
      "sortable": false,
    },
    {
      "name": "subtype",
      "type": "Edm.String",
      "facetable": true,
      "filterable": true,
      "retrievable": true,
      "searchable": false,
      "sortable": false,
    },
    {
      "name": "matches",
      "type": "Collection(Edm.ComplexType)",
      "fields": [
        {
          "name": "text",
          "type": "Edm.String",
          "facetable": false,
          "filterable": false,
          "retrievable": true,
          "searchable": true,
          "sortable": false,
        },
        {
          "name": "offset",
          "type": "Edm.Int32",
          "facetable": true,
          "filterable": true,
          "retrievable": true,
          "sortable": false,
        },
        {
          "name": "length",
          "type": "Edm.Int32",
          "facetable": true,
          "filterable": true,
          "retrievable": true,
          "sortable": false,
        },
        {
          "name": "matchDistance",
          "type": "Edm.Double",
          "facetable": true,
          "filterable": true,
          "retrievable": true,
          "sortable": false,
        }
      ]
    }
  ]
}

Przykładowe dane wejściowe

{
    "values": [
      {
        "recordId": "1",
        "data":
           {
             "text": "The company, Microsoft, was founded by Bill Gates. Microsoft's gaming console is called Xbox",
             "languageCode": "en"
           }
      }
    ]
}

Przykładowe dane wyjściowe

  { 
    "values" : 
    [ 
      { 
        "recordId": "1", 
        "data" : { 
          "entities": [
            { 
              "name" : "Microsoft", 
              "description" : "This document refers to Microsoft the company", 
              "id" : "differentIdentifyingScheme987", 
              "matches" : [ 
                { 
                  "text" : "microsoft", 
                  "offset" : 13, 
                  "length" : 9, 
                  "matchDistance" : 0 
                }, 
                { 
                  "text" : "Microsoft",
                  "offset" : 49, 
                  "length" : 9, 
                  "matchDistance" : 0
                }
              ] 
            },
            { 
              "name" : "Bill Gates",
              "description" : "William Henry Gates III, founder of Microsoft.", 
              "matches" : [
                { 
                  "text" : "Bill Gates",
                  "offset" : 37, 
                  "length" : 10,
                  "matchDistance" : 0 
                }
              ]
            }
          ] 
        } 
      } 
    ] 
  } 

Ostrzeżenia

"Reached maximum capacity for matches, skipping all further duplicate matches."

To ostrzeżenie będzie emitowane, jeśli liczba wykrytych dopasowań jest większa niż dozwolona maksymalna. Nie zostaną zwrócone żadne zduplikowane dopasowania. Jeśli potrzebujesz wyższego progu, możesz zgłosić bilet pomocy technicznej, aby uzyskać pomoc dotyczącą indywidualnego przypadku użycia.

Zobacz też