Meer informatie over aangepaste herkenning van benoemde entiteiten

Voltooid

Aangepaste NER is een Azure API-service die documenten bekijkt, identificeert en extraheert door de gebruiker gedefinieerde entiteiten. Deze entiteiten kunnen alles zijn, van namen en adressen van bankafschriften tot kennisanalyse om zoekresultaten te verbeteren.

Aangepaste NER maakt deel uit van Azure AI Language in Azure AI-services.

Aangepaste versus ingebouwde NER

Azure AI Language biedt bepaalde ingebouwde entiteitsherkenning om dingen te herkennen, zoals een persoon, locatie, organisatie of URL. Met ingebouwde NER kunt u de service instellen met minimale configuratie en entiteiten extraheren. Als u een ingebouwde NER wilt aanroepen, maakt u uw service en roept u het eindpunt voor die NER-service als volgt aan:

<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Tijdelijke aanduiding Weergegeven als Opmerking
<YOUR-ENDPOINT> Het eindpunt voor uw API-aanvraag https://<your-resource>.cognitiveservices.azure.com
<AIP-VERSION> De versie van de API die u aanroept 2023-05-01

De hoofdtekst van deze aanroep bevat de documenten waaruit de entiteiten worden geëxtraheerd en de headers bevatten uw servicesleutel.

Het antwoord van de bovenstaande aanroep bevat een matrix met entiteiten die worden herkend, zoals:

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

Voorbeelden van wanneer u de ingebouwde NER gebruikt, zijn locaties, namen of URL's in lange tekstdocumenten zoeken.

Tip

Er is een volledige lijst met herkende entiteitscategorieën beschikbaar in de NER-documenten.

Aangepaste NER, de focus van de rest van deze module, is beschikbaar wanneer de entiteiten die u wilt extraheren geen deel uitmaken van de ingebouwde service of u alleen specifieke entiteiten wilt extraheren. U kunt uw aangepaste NER-model zo eenvoudig of complex maken als vereist is voor uw app.

Voorbeelden van wanneer u wilt dat aangepaste NER specifieke juridische of bankgegevens bevat, kennisanalyse om cataloguszoekopdrachten te verbeteren of op zoek bent naar specifieke tekst voor controlebeleid. Elk van deze projecten vereist een specifieke set entiteiten en gegevens die moeten worden geëxtraheerd.

Levenscyclus van Azure AI Language-project

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

Het maken van een entiteitextractiemodel volgt doorgaans een vergelijkbaar pad naar de meeste Azure AI Language-servicefuncties:

  1. Entiteiten definiëren: informatie over de gegevens en entiteiten die u wilt identificeren en probeer ze zo duidelijk mogelijk te maken. U kunt bijvoorbeeld precies definiëren welke delen van een bankoverzicht u wilt extraheren.
  2. Taggegevens: Label of tag, uw bestaande gegevens, waarmee wordt opgegeven welke tekst in uw gegevensset overeenkomt met welke entiteit. Deze stap is belangrijk om nauwkeurig en volledig te doen, omdat eventuele verkeerde of gemiste labels de effectiviteit van het getrainde model verminderen. Een goede variatie op mogelijke invoerdocumenten is handig. Bijvoorbeeld: label banknaam, klantnaam, klantadres, specifieke voorwaarden voor lening of rekening, lening of rekeningbedrag en rekeningnummer.
  3. Train model: Train uw model zodra uw entiteiten zijn gelabeld. Training leert uw model hoe u de entiteiten herkent die u labelt.
  4. Model weergeven: Nadat uw model is getraind, bekijkt u de resultaten van het model. Deze pagina bevat een score van 0 tot 1 die is gebaseerd op de precisie en relevante overeenkomsten van de geteste gegevens. U kunt zien welke entiteiten goed werkten (zoals klantnaam) en welke entiteiten moeten worden verbeterd (zoals rekeningnummer).
  5. Model verbeteren: Verbeter uw model door te zien welke entiteiten niet kunnen worden geïdentificeerd en welke entiteiten onjuist zijn geëxtraheerd. Ontdek welke gegevens moeten worden toegevoegd aan de training van uw model om de prestaties te verbeteren. Op deze pagina ziet u hoe entiteiten zijn mislukt en welke entiteiten (zoals rekeningnummer) moeten worden onderscheiden van andere vergelijkbare entiteiten (zoals een leningsbedrag).
  6. Model implementeren: zodra uw model naar wens wordt uitgevoerd, implementeert u uw model om het beschikbaar te maken via de API. In ons voorbeeld kunt u verzenden naar aanvragen naar het model wanneer het wordt geïmplementeerd om entiteiten voor bankoverzichten te extraheren.
  7. Entiteiten extraheren: gebruik uw model voor het extraheren van entiteiten. In het lab wordt beschreven hoe u de API gebruikt en kunt u de API-verwijzing bekijken voor meer informatie.

Overwegingen voor gegevensselectie en het verfijnen van entiteiten

Voor de beste prestaties moet u gegevens van hoge kwaliteit gebruiken om het model en duidelijk gedefinieerde entiteitstypen te trainen.

Met gegevens van hoge kwaliteit kunt u minder tijd besteden aan het verfijnen en betere resultaten opleveren van uw model.

  • Diversiteit : gebruik zo divers mogelijk van een gegevensset zonder dat de werkelijke verdeling in de werkelijke gegevens verloren gaat. U wilt voorbeeldgegevens uit zoveel mogelijk bronnen gebruiken, elk met hun eigen indelingen en het aantal entiteiten. Het is raadzaam om ervoor te zorgen dat uw gegevensset zoveel mogelijk verschillende bronnen vertegenwoordigt.
  • Distributie : gebruik de juiste distributie van documenttypen. Een meer uiteenlopende gegevensset om uw model te trainen, helpt uw model om onjuiste relaties in de gegevens te voorkomen.
  • Nauwkeurigheid: gebruik gegevens die zich zo dicht mogelijk bij echte gegevens bevinden. Valse gegevens werken om het trainingsproces te starten, maar het zal waarschijnlijk verschillen van echte gegevens op manieren die ervoor kunnen zorgen dat uw model niet correct wordt geëxtraheerd.

Entiteiten moeten ook zorgvuldig worden overwogen en zo duidelijk mogelijk worden gedefinieerd. Vermijd dubbelzinnige entiteiten (zoals twee namen naast elkaar op een bankoverzicht), omdat het model worstelt om onderscheid te maken. Als u een aantal niet-eenduidige entiteiten nodig hebt, moet u meer voorbeelden voor uw model hebben om van te leren, zodat het het verschil kan begrijpen.

Het behouden van uw entiteiten zal ook een lange weg gaan om de prestaties van uw model te helpen. Als u bijvoorbeeld iets probeert te extraheren als 'Contactgegevens' dat een telefoonnummer, een greep voor sociale media of een e-mailadres kan zijn, zijn er verschillende voorbeelden nodig om uw model correct te leren. Probeer ze in plaats daarvan op te splitsen in specifiekere entiteiten, zoals 'Telefoon', 'E-mail' en 'Sociale media', en laat het model het model labelen naar welk type contactgegevens het zoekt.

Entiteiten extraheren

Als u een extractietaak wilt verzenden, vereist de API de JSON-hoofdtekst om op te geven welke taak moet worden uitgevoerd. Voor aangepaste NER is CustomEntityRecognitionde taak voor de JSON-nettolading .

Uw nettolading ziet er ongeveer als volgt uit:

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

Projectlimieten

De Azure AI Language-service dwingt de volgende beperkingen af:

  • Training - ten minste 10 bestanden en niet meer dan 100.000
  • Implementaties - 10 implementatienamen per project
  • API's
    • Ontwerpen: met deze API maakt u een project, traint en implementeert u uw model. Beperkt tot 10 POST en 100 GET per minuut
    • Analyseren : deze API voert het werk uit om de entiteiten daadwerkelijk te extraheren; er wordt een taak aangevraagd en worden de resultaten opgehaald. Beperkt tot 20 GET of POST
  • Projecten : slechts 1 opslagaccount per project, 500 projecten per resource en 50 getrainde modellen per project
  • Entiteiten : elke entiteit kan maximaal 500 tekens bevatten. U kunt maximaal 200 entiteitstypen hebben.

Zie de pagina Servicelimieten voor Azure AI Language voor gedetailleerde informatie.