Omówienie niestandardowego rozpoznawania nazwanych jednostek

Ukończone

Niestandardowa usługa NER to usługa interfejsu API platformy Azure, która analizuje dokumenty, identyfikuje i wyodrębnia jednostki zdefiniowane przez użytkownika. Te jednostki mogą być dowolnymi nazwami i adresami od oświadczeń bankowych po wyszukiwanie wiedzy, aby poprawić wyniki wyszukiwania.

Niestandardowy moduł NER jest częścią języka sztucznej inteligencji platformy Azure w usługach azure AI.

Niestandardowe a wbudowane moduły NER

Język sztucznej inteligencji platformy Azure zapewnia pewne wbudowane rozpoznawanie jednostek, aby rozpoznawać takie elementy jak osoba, lokalizacja, organizacja lub adres URL. Wbudowana funkcja NER umożliwia skonfigurowanie usługi z minimalną konfiguracją i wyodrębnianie jednostek. Aby wywołać wbudowaną usługę NER, utwórz usługę i wywołaj punkt końcowy dla tej usługi NER w następujący sposób:

<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Symbol zastępczy Wartość Przykład
<YOUR-ENDPOINT> Punkt końcowy żądania interfejsu API https://<your-resource>.cognitiveservices.azure.com
<AIP-VERSION> Wersja wywoływanego interfejsu API 2023-05-01

Treść tego wywołania będzie zawierać dokumenty, z których są wyodrębniane jednostki, a nagłówki zawierają klucz usługi.

Odpowiedź z powyższego wywołania zawiera tablicę rozpoznanych jednostek, takich jak:

<...>
"entities":[
    {
        "text":"Seattle",
        "category":"Location",
        "subcategory":"GPE",
        "offset":45,
        "length":7,
        "confidenceScore":0.99
    },
    {
        "text":"next week",
        "category":"DateTime",
        "subcategory":"DateRange",
        "offset":104,
        "length":9,
        "confidenceScore":0.8
    }
]
<...>

Przykłady użycia wbudowanego modułu NER obejmują znajdowanie lokalizacji, nazw lub adresów URL w długich dokumentach tekstowych.

Napiwek

Pełna lista rozpoznanych kategorii jednostek jest dostępna w dokumentacji NER.

Niestandardowy moduł NER, który koncentruje się na pozostałej części tego modułu, jest dostępny, gdy jednostki, które chcesz wyodrębnić, nie są częścią wbudowanej usługi lub chcesz wyodrębnić tylko określone jednostki. Niestandardowy model NER może być prosty lub złożony zgodnie z wymaganiami aplikacji.

Przykłady, gdy chcesz, aby niestandardowe NER obejmowały określone dane prawne lub bankowe, wyszukiwanie wiedzy w celu ulepszenia wyszukiwania w katalogu lub szukanie określonego tekstu dla zasad inspekcji. Każdy z tych projektów wymaga określonego zestawu jednostek i danych, które muszą wyodrębnić.

Cykl życia projektu języka sztucznej inteligencji platformy Azure

Conceptual diagram showing a project steps to define entities, tag data, train model, view model, improve model, deploy model, and extract entities.

Tworzenie modelu wyodrębniania jednostek zwykle jest podobne do większości funkcji usługi językowej azure AI:

  1. Definiowanie jednostek: zrozumienie danych i jednostek, które chcesz zidentyfikować, i spróbuj wyjaśnić, jak to możliwe. Na przykład zdefiniowanie dokładnie tych części wyciągu bankowego, które chcesz wyodrębnić.
  2. Dane tagu: Etykieta lub tag istniejące dane, określając, jaki tekst w zestawie danych odpowiada tej jednostce. Ten krok jest ważny, aby wykonać dokładnie i całkowicie, ponieważ wszelkie błędne lub pominięte etykiety zmniejszy skuteczność wytrenowanego modelu. Przydatna jest dobra odmiana możliwych dokumentów wejściowych. Na przykład etykieta nazwa banku, nazwa klienta, adres klienta, określone warunki pożyczki lub konta, kwota pożyczki lub konta oraz numer konta.
  3. Trenowanie modelu: trenowanie modelu po oznaczeniu jednostek. Szkolenie uczy modelu, jak rozpoznawać etykiety jednostek.
  4. Wyświetlanie modelu: po wytrenowanym modelu wyświetl wyniki modelu. Ta strona zawiera wynik od 0 do 1, który jest oparty na precyzji i kompletności testowanych danych. Możesz sprawdzić, które jednostki działały dobrze (takie jak nazwa klienta) i które jednostki wymagają poprawy (na przykład numer konta).
  5. Ulepszanie modelu: popraw model, sprawdzając, które jednostki nie zostały zidentyfikowane i które jednostki zostały niepoprawnie wyodrębnione. Dowiedz się, jakie dane należy dodać do trenowania modelu, aby zwiększyć wydajność. Na tej stronie pokazano, jak jednostki zakończyły się niepowodzeniem i które jednostki (takie jak numer konta) muszą być rozróżniane od innych podobnych jednostek (takich jak kwota pożyczki).
  6. Wdrażanie modelu: po wykonaniu odpowiedniego działania modelu wdróż go, aby udostępnić go za pośrednictwem interfejsu API. W naszym przykładzie można wysyłać do żądań do modelu po wdrożeniu w celu wyodrębnienia jednostek z wyciągów bankowych.
  7. Wyodrębnij jednostki: użyj modelu do wyodrębniania jednostek. W laboratorium opisano sposób używania interfejsu API i możesz wyświetlić dokumentację interfejsu API, aby uzyskać więcej szczegółów.

Zagadnienia dotyczące wybierania danych i uściśliania jednostek

Aby uzyskać najlepszą wydajność, należy użyć zarówno danych wysokiej jakości, aby wytrenować model, jak i jasno zdefiniowane typy jednostek.

Wysokiej jakości dane pozwolą ci poświęcić mniej czasu na uściślianie i uzyskanie lepszych wyników z modelu.

  • Różnorodność — używaj tak zróżnicowanego zestawu danych, jak to możliwe bez utraty rzeczywistego rozkładu oczekiwanego w rzeczywistych danych. Chcesz użyć przykładowych danych z jak największej liczby źródeł, z których każda ma własne formaty i liczbę jednostek. Najlepiej mieć zestaw danych reprezentujący jak najwięcej różnych źródeł.
  • Dystrybucja — użyj odpowiedniej dystrybucji typów dokumentów. Bardziej zróżnicowany zestaw danych do trenowania modelu pomoże modelowi uniknąć uczenia się nieprawidłowych relacji w danych.
  • Dokładność — używaj danych, które są jak najbardziej zbliżone do rzeczywistych danych. Fałszywe dane działają w celu rozpoczęcia procesu trenowania, ale prawdopodobnie będą się różnić od rzeczywistych danych w sposób, który może spowodować, że model nie zostanie poprawnie wyodrębniony.

Jednostki muszą być również starannie przemyślane i zdefiniowane tak wyraźnie, jak to możliwe. Unikaj niejednoznacznych jednostek (takich jak dwie nazwy obok siebie na wyciągu bankowym), ponieważ sprawi, że model będzie starał się odróżnić. Jeśli wymagana jest pewna niejednoznaczna jednostka, upewnij się, że masz więcej przykładów, aby model nauczył się tego, aby mógł zrozumieć różnicę.

Utrzymywanie unikatowych jednostek będzie również długą drogą pomagającą w wydajności modelu. Na przykład próba wyodrębnienia czegoś takiego jak "Informacje kontaktowe", które mogą być numerem telefonu, obsługą mediów społecznościowych lub adresem e-mail, wymagałoby kilku przykładów poprawnego uczenia modelu. Zamiast tego spróbuj podzielić je na bardziej szczegółowe jednostki, takie jak "Telefon", "Poczta e-mail" i "Media społecznościowe", i niech etykieta modelu, niezależnie od typu informacji kontaktowych, które znajdzie.

Jak wyodrębnić jednostki

Aby przesłać zadanie wyodrębniania, interfejs API wymaga treści JSON w celu określenia zadania do wykonania. W przypadku niestandardowego modułu NER zadanie ładunku JSON to CustomEntityRecognition.

Ładunek będzie wyglądać podobnie do następującego kodu JSON:

{
    "displayName": "string",
    "analysisInput": {
        "documents": [
            {
                "id": "doc1", 
                "text": "string"
            },
            {
                "id": "doc2",
                "text": "string"
            }
        ]
    },
    "tasks": [
        {
            "kind": "CustomEntityRecognition",
            "taskName": "MyRecognitionTaskName",
            "parameters": {
            "projectName": "MyProject",
            "deploymentName": "MyDeployment"
            }
        }
    ]
}

Limity projektów

Usługa językowa Azure AI wymusza następujące ograniczenia:

  • Trenowanie — co najmniej 10 plików, a nie więcej niż 100 000
  • Wdrożenia — 10 nazw wdrożeń na projekt
  • Interfejsy API
    • Tworzenie — ten interfejs API tworzy projekt, trenuje i wdraża model. Ograniczone do 10 POST i 100 GET na minutę
    • Analizuj — ten interfejs API wykonuje pracę w rzeczywistości wyodrębniając jednostki; żąda zadania i pobiera wyniki. Ograniczone do 20 GET lub POST
  • Projekty — tylko 1 konto magazynu na projekt, 500 projektów na zasób i 50 wytrenowanych modeli na projekt
  • Jednostki — każda jednostka może mieć maksymalnie 500 znaków. Można mieć maksymalnie 200 typów jednostek.

Aby uzyskać szczegółowe informacje, zobacz stronę Limity usług dla języka sztucznej inteligencji platformy Azure.