Zrozumienie niestandardowego rozpoznawania nazwanych jednostek
Niestandardowa usługa NER to usługa interfejsu API platformy Azure, która analizuje dokumenty, identyfikuje i wyodrębnia jednostki zdefiniowane przez użytkownika. Jednostki te mogą obejmować wszystko od nazwisk i adresów na wyciągach bankowych po eksplorację wiedzy, mającą na celu poprawę wyników wyszukiwania.
Niestandardowy moduł NER jest częścią języka platformy Azure w narzędziach Foundry.
Niestandardowe a wbudowane systemy NER
Język platformy Azure zapewnia pewne wbudowane rozpoznawanie jednostek do rozpoznawania elementów, takich 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>
| Zastępczy element | Wartość | Przykład |
|---|---|---|
<YOUR-ENDPOINT> |
Punkt końcowy żądania interfejsu API | https://<your-resource>.cognitiveservices.azure.com |
<API-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.
Wskazówka
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 sytuacji, w których chcesz użyć niestandardowego NER, obejmują określone dane prawne lub bankowe, eksplorację wiedzy w celu ulepszenia wyszukiwania w katalogu, albo wyszukiwanie określonego tekstu dla polityk audytowych. Każdy z tych projektów wymaga określonego zestawu jednostek i danych, które muszą wyodrębnić.
Cykl życia projektu języka platformy Azure
Tworzenie modelu wyodrębniania jednostek zwykle przebiega według podobnego schematu jak większość funkcji usługi językowej platformy Azure:
- 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ć.
- Dane tagu: Etykietuj lub oznacz istniejące dane, określając, jaki tekst w zestawie danych odpowiada której jednostce. Ten krok jest ważny, aby wykonać dokładnie i całkowicie, ponieważ wszelkie błędne lub pominięte etykiety zmniejszą skuteczność wytrenowanego modelu. Różnorodność możliwych dokumentów wejściowych jest przydatna. 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.
- Szkolenie modelu: Przeprowadź szkolenie modelu, gdy jednostki zostaną oznaczone. Szkolenie uczy model, jak rozpoznawać byty, które etykietujesz.
- 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).
- 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).
- 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ć żądania do modelu, gdy jest wdrożony, w celu wyodrębnienia danych z wyciągów bankowych.
- 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 doprecyzowanie oraz 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 mogą uruchomić proces trenowania, ale prawdopodobnie będą się różnić od rzeczywistych w sposób, który może sprawić, że model nie będzie poprawnie interpretować danych.
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ż może to utrudnić modelowi rozróżnienie. Jeśli wymagana jest pewna liczba niejednoznacznych jednostek, upewnij się, że masz więcej przykładów, które umożliwią modelowi nauczenie się rozróżniania.
Utrzymywanie rozróżnialnych encji również znacznie przyczyni się do poprawy efektywności modelu. Na przykład próba wyodrębnienia czegoś takiego jak "Informacje kontaktowe", które mogą być numerem telefonu, profilem w mediach społecznościowych lub adresem e-mail, wymagałoby kilku przykładów do właściwego nauczenia modelu. Zamiast tego spróbuj podzielić je na bardziej szczegółowe jednostki, takie jak "Telefon", "Adres e-mail" i "Media społecznościowe", i pozwól modelowi oznaczyć dowolny typ informacji kontaktowych, które znajdzie.
Jak wyodrębnić jednostki
Aby przesłać zadanie wyodrębniania, interfejs API wymaga treści JSON do określenia, jakie zadanie należy wykonać. 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ęzyka platformy Azure 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
-
API
- Tworzenie — ten interfejs API służy do tworzenia projektu, trenowania i wdrażania modelu. Ograniczone do 10 POST i 100 GET na minutę
- Analizuj — interfejs API wykonuje pracę polegającą na wyodrębnianiu jednostek; żąda zadania i pobiera wyniki. Ograniczone do 20 żądań GET lub POST
- Projekty — tylko 1 konto przechowywania 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ługi dla języka platformy Azure .