Förstå anpassad namngiven entitetsigenkänning

Slutförd

Custom NER är en Azure API-tjänst som tittar på dokument, identifierar och extraherar användardefinierade entiteter. Dessa entiteter kan vara allt från namn och adresser från bankkontoutdrag till kunskapsutvinning för att förbättra sökresultaten.

Custom NER är en del av Azure AI Language i Azure AI-tjänster.

Anpassad jämfört med inbyggd NER

Azure AI Language ger viss inbyggd entitetsigenkänning för att identifiera saker som en person, plats, organisation eller URL. Med inbyggd NER kan du konfigurera tjänsten med minimal konfiguration och extrahera entiteter. Om du vill anropa en inbyggd NER skapar du din tjänst och anropar slutpunkten för ner-tjänsten så här:

<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Platshållare Värde Exempel
<YOUR-ENDPOINT> Slutpunkten för din API-begäran https://<your-resource>.cognitiveservices.azure.com
<API-VERSION> Den version av API:et som du anropar 2023-05-01

Anropets brödtext innehåller de dokument som entiteterna extraheras från och rubrikerna innehåller din tjänstnyckel.

Svaret från anropet ovan innehåller en matris med identifierade entiteter, till exempel:

<...>
"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
    }
]
<...>

Exempel på när du ska använda den inbyggda NER:n är att hitta platser, namn eller URL:er i långa textdokument.

Dricks

En fullständig lista över identifierade entitetskategorier finns i NER-dokumenten.

Anpassad NER, som är i fokus för resten av den här modulen, är tillgänglig när de entiteter som du vill extrahera inte är en del av den inbyggda tjänsten eller om du bara vill extrahera specifika entiteter. Du kan göra din anpassade NER-modell så enkel eller komplex som krävs för din app.

Exempel på när du vill ha anpassad NER är specifika juridiska data eller bankdata, kunskapsutvinning som förbättrar katalogsökningen eller letar efter specifik text för granskningsprinciper. Vart och ett av dessa projekt kräver en specifik uppsättning entiteter och data som måste extraheras.

Projektlivscykel för Azure AI Language

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

Att skapa en entitetsextraheringsmodell följer vanligtvis en liknande väg som de flesta Azure AI Language-tjänstfunktioner:

  1. Definiera entiteter: Förstå de data och entiteter som du vill identifiera och försök att göra dem så tydliga som möjligt. Du kan till exempel definiera exakt vilka delar av ett bankutdrag som du vill extrahera.
  2. Taggdata: Etikettera eller tagga befintliga data och ange vilken text i datauppsättningen som motsvarar vilken entitet. Det här steget är viktigt att göra korrekt och fullständigt, eftersom eventuella felaktiga eller missade etiketter minskar effektiviteten hos den tränade modellen. En bra variant av möjliga indatadokument är användbar. Du kan till exempel märka banknamn, kundnamn, kundadress, specifika låne- eller kontovillkor, lån eller kontobelopp och kontonummer.
  3. Träna modell: Träna din modell när dina entiteter är märkta. Träning lär din modell hur du känner igen de entiteter som du etiketterar.
  4. Visa modell: När din modell har tränats visar du resultatet av modellen. Den här sidan innehåller en poäng på 0 till 1 som baseras på precisionen och återkallandet av de data som testats. Du kan se vilka entiteter som fungerade bra (till exempel kundnamn) och vilka entiteter som behöver förbättras (till exempel kontonummer).
  5. Förbättra modellen: Förbättra din modell genom att se vilka entiteter som inte kunde identifieras och vilka entiteter som extraherades felaktigt. Ta reda på vilka data som behöver läggas till i modellens träning för att förbättra prestandan. Den här sidan visar hur entiteter misslyckades och vilka entiteter (till exempel kontonummer) som måste skiljas från andra liknande entiteter (till exempel lånebelopp).
  6. Distribuera modell: När din modell fungerar som du vill distribuerar du din modell för att göra den tillgänglig via API:et. I vårt exempel kan du skicka till begäranden till modellen när den distribueras för att extrahera bankutdragsentiteter.
  7. Extrahera entiteter: Använd din modell för att extrahera entiteter. Labbet beskriver hur du använder API:et och du kan visa API-referensen för mer information.

Överväganden för dataval och förfining av entiteter

För bästa prestanda måste du använda både högkvalitativa data för att träna modellen och tydligt definierade entitetstyper.

Med data av hög kvalitet kan du ägna mindre tid åt att förfina och ge bättre resultat från din modell.

  • Mångfald – använd så olika datamängder som möjligt utan att förlora den verkliga distribution som förväntas i verkliga data. Du vill använda exempeldata från så många källor som möjligt, var och en med sina egna format och antal entiteter. Det är bäst att din datauppsättning representerar så många olika källor som möjligt.
  • Distribution – använd lämplig distribution av dokumenttyper. En mer varierad datauppsättning för att träna din modell hjälper din modell att undvika att lära sig felaktiga relationer i data.
  • Noggrannhet – använd data som ligger så nära verkliga data som möjligt. Falska data fungerar för att starta träningsprocessen, men det kommer sannolikt att skilja sig från verkliga data på sätt som kan göra att din modell inte extraheras korrekt.

Entiteter måste också övervägas noggrant och definieras så tydligt som möjligt. Undvik tvetydiga entiteter (till exempel två namn bredvid varandra på ett bankutdrag), eftersom det kommer att göra modellen svårt att skilja mellan. Om det krävs vissa tvetydiga entiteter måste du ha fler exempel för din modell att lära dig av så att den kan förstå skillnaden.

Att hålla dina entiteter distinkta kommer också att hjälpa modellens prestanda. Om du till exempel försöker extrahera något som "Kontaktinformation" som kan vara ett telefonnummer, ett handtag för sociala medier eller en e-postadress skulle det krävas flera exempel för att lära din modell korrekt. Försök i stället att dela upp dem i mer specifika entiteter som "Telefon", "E-post" och "Sociala medier" och låt modellen märka vilken typ av kontaktinformation den hittar.

Extrahera entiteter

För att skicka en extraheringsaktivitet kräver API:et att JSON-brödtexten anger vilken uppgift som ska köras. För anpassad NER är CustomEntityRecognitionuppgiften för JSON-nyttolasten .

Nyttolasten ser ut ungefär som följande JSON:

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

Projektgränser

Azure AI Language-tjänsten tillämpar följande begränsningar:

  • Utbildning – minst 10 filer och högst 100 000
  • Distributioner – 10 distributionsnamn per projekt
  • API:er
    • Redigering – det här API:et skapar ett projekt, tränar och distribuerar din modell. Begränsat till 10 POST och 100 GET per minut
    • Analysera – det här API:et utför arbetet med att faktiskt extrahera entiteterna. Det begär en uppgift och hämtar resultatet. Begränsat till 20 GET eller POST
  • Projekt – endast 1 lagringskonto per projekt, 500 projekt per resurs och 50 tränade modeller per projekt
  • Entiteter – varje entitet kan vara upp till 500 tecken. Du kan ha upp till 200 entitetstyper.

Mer information finns på sidan Tjänstbegränsningar för Azure AI Language .