Opdracht 2: Train een HR Expert

Doel van de opdracht:

Bij deze opdracht leer je hoe je kennis van experts in een AI systeem kan stoppen. Zo maak je dus uiteindelijk een soort van virtuele expert die je vakgebied en domein kan "begrijpen". Het begrijpt dus de terminologie, concepten en entiteiten en de verbanden hiertussen.

Het resultaat is een systeem/model dat gebruikt kan worden bij ondersteuning van experts, bij het automatisch geven van antwoorden of oplossingen op vragen, of bij het zoeken en verkennen van patronen in grote verzamelingen data.

Experts trainen het systeem op basis van voorbeelden die zij het systeem geven (in dit geval het annoteren/markeren van voorbeeld documenten).

Op basis van voorbeelden van experts train je het model vervolgens op de overige/volledige dataset. 

Hierna kan het systeem nieuwe informatie analyseren, classificeren en duiden.

Voorbeelden van toepassingen met deze technologie zijn: een systeem dat arbeidsvoorwaarden of cao's kan analyseren (op bijvoorbeeld onwettige passages of voorwaarden), een automatische analyse van profielen/cv's kan uitvoeren of beoordelingsgesprekken kan analyseren of repeterend werk kan afhandelen.

Je gaat aan de slag met cognitieve technologie van IBM, namelijk Watson Knowledge Studio (onderdeel van IBM Watson)

  


Wat ga je doen

Je gaat een model trainen dat HR specifieke termen, concepten en relaties kan herkennen in data. Dat doe je door het systeem data te voeden, aan te geven wat je het wilt laten herkennen en vervolgens het systeem voorbeelden te geven (annoteren/labelen).

Op basis van deze voorbeelden (die verschillende experts als taak kunnen aanleveren) genereer je een model dat het HR domain steeds beter gaat begrijpen. Dit model kun je vervolgens in allerlei slimme toepassingen gaan inzetten.


Uitleg en Instructies

Als eerste gaan we onze data (CV's, arbeidsvoorwaarden en cao teksten) inladen, en een aantal concepten en relaties invoeren die we het model willen laten herkennen.

 

  1.  Ga naar de volgende website: https://goo.gl/cZfwKe

  2. Login met opdrachten@ai-training.nl en wachtwoord: *******
    Het kan zijn dat je na het inloggen een leeg scherm krijgt, wacht even, of klik opnieuw op bovenstaande link

  3. Maak een nieuwe eigen Workspace aan via "Create Workspace" en geef het een voor jouw herkenbare naam en kies "Dutch" bij Language of documents (in deze workspace ga je straks verder werken met documenten)

Stap 1: Entiteiten en Relaties toevoegen

Als eerste gaan we de entiteiten (concepten/termen) en relaties toevoegen.

Entiteiten zijn de dingen die je het systeem wilt laten herkennen. Bijvoorbeeld functie, opleiding en relaties daartussen.

  1. Klik onder Assets & Tools > Entity Types op "Upload"

  2. Upload het volgende bestand uit het bestand met voorbeelddata: entity_types.json

  3. Als het goed is zie je nu bij Entity Types en Relation Types een aantal voorbeelden van zaken die het systeem moet gaan herkennen

Stap 2: Documenten toevoegen

Voeg nu de voorbeeld documenten toe. Die ga je gebruiken om het systeem te trainen.

  1. Klik onder Assets & Tools > Documents op "Upload Document Sets"
  2. Upload het volgende bestand uit het bestand met voorbeelddata: documents.zip
  3. Je ziet nu 2 sets met documenten. CV's en CAO documenten.
  4. Bekijk een aantal documenten door op de set te klikken en op de naam van een bestand te klikken.

Een taak aanmaken en het systeem trainen

Nu we voorbeelddata hebben geladen en het systeem hebben verteld wat het willen laten herkennen, kunnen we taken aanmaken om als expert het systeem gaan trainen. 

  1. We gaan eerst een (deel van de) dataset selecteren die we willen gaan annoteren.

  2. Klik onder Assets & Tools > Documents > Tabje 'Annotation Sets' op "Create Annotation Sets"

  3. Kies als Base set de cv documenten, als Annotator 'Test Tester' en vul als Set name bijvoorbeeld in: 'cv-annotation-set' en druk op 'Generate'

  4. Maak nu een taak aan onder het tabje 'Tasks' via 'Add Task'

  5. Geef de taak een naam, bijvoorbeeld 'CV Annotatie Taak 1' en kies een deadline in de toekomst. Kies de  annotatie set die we zojuist aangemaakt hebben. Dit is de dataset die experts kunnen gaan annoteren ter training van het systeem. Klik als laatste op 'Create Task' om de taak op te slaan.

Je hebt nu een dataset en een taak aangemaakt waarmee je het systeem van voorbeelden kan gaan voorzien.

Annoteren (het systeem voorbeelden geven)

Je kunt nu gaan annoteren door de taak aan te klikken, op 'Annotate' te klikken en vervolgens uit lijst met cv documenten een document aan te klikken.


Als expert kun je in de document editor nieuwe zaken annoteren (labellen) en relaties aangeven tussen entiteiten. 
Zie onderstaande voorbeeld screenshots en uitleg

 

  1. Markeer per document een aantal entiteiten die je ziet.
    Bijvoorbeeld namen van opleidingen of diploma of niveau (bijv. MBO) door het woord of woorden aan te klikken en uit de lijst aan de rechterkant het de juiste entiteit te kiezen.

  2. Markeer per document een aantal relaties (onder het menu item 'Relations'). Dit doe je door 2 entiteiten te selecteren die je eerder gemarkeerd hebt, en vervolgens het juiste 'Relation Type' te kiezen.
    Bijvoorbeeld: tussen een genoemde opleiding en een diploma/studie leg je de relatie diploma_van

  3. Doe dit voor ieder document. Voor de oefening is het niet nodig om het hele document te annoteren. Markeer een 10-tal items die je makkelijk kunt vinden (meer is wel beter voor het model, dus in een echte situatie zul je meer voorbeelden geven).

  4. Wanneer je klaar bent met een document zet je rechts bovenin de status van 'Ready' naar 'Completed' en druk je op 'Save'.
    Vervolgens druk je links boven op het icoontje 'Open document list' om een nieuw document te selecteren.
    Als je op een document klikt, dan kan het even duren voordat het document geladen is.

  5. Op het moment dat je de 10 cv's gemarkeerd hebt en op status 'Completed' hebt gezet, dan heb je voor nu voldoende voorbeelden aan het systeem gegeven en kun je verder met het onderdeel 'Genereren van het model'


PS: Vergeet niet per document de wijzigingen op te slaan en de status op 'Completed' te zetten.

Voorbeeldscherm Entiteiten aanwijzen

Voorbeeldscherm Relaties leggen

Genereren van het model

Wanneer je een redelijk aantal documenten hebt geannoteerd kun je het model gaan trainen.

Let op: Zorg er eerst voor dat de Taak de status 'Completed' krijgt

Dit doe je door via het menu item 'Assets & Tools > Documents' naar het tabje 'Tasks' te gaan, je taak aan te klikken, de annotatie set aan te vinken en op 'Accept' te klikken. Zie onderstaand screenshot.

Nu zijn de annotaties binnen de taak geaccepteerd en kan het model op basis van deze input worden getraind. 

 


Ga na het op 'Completed' zetten van de taak naar Model Management > Performance (zie onderstaand screenshot)

Dit is het overzicht van het model en hier kun je straks gaan zien wat de kwaliteit van het model is nadat het getraind is.

Klik op 'Train and Evaluate' en selecteer cv-annotation-set (de dataset waar je handmatig op geannoteerd hebt).

Geef bij Ratio een andere verdeling op dan die er standaard staat (wij hebben te weinig documenten en moeten een andere verdeling aanhouden om redelijke testresultaten te krijgen).

Vul de volgende verhouding in 50 Training Set, 35 Test Set, 15 Blind Set. (zie onderstaand screenshot)

 

Wat je hiermee aangeeft is dat het model de helft van de data als input set moet gebruiken (trainingset) en de overige als test sets (om te valideren hoe goed het model zaken kan herkennen).

Klik nu op 'Train & Evaluate' om het model genereren. En wacht.... dit kan een paar minuten duren, tot je uiteindelijk onderstaande melding ziet:

Evaluatie van het model

Als het goed is heb je nu een model gemaakt dat termen en relaties uit de HR wereld kan herkennen. Wel met een te beperkt aantal voorbeelden (in het echt zou je meer documenten voeden en trainen aan het systeem), maar in de basis is het al in staat om nieuwe informatie en documenten te analyseren en classificeren.

Om te zien welke zaken het model wel en niet goed kan detecteren (en dus te zien waar je nog beter op moet trainen) klik je op de pagina Performance en onder 'Current Version Insights' op 'Detailed Statistics'.

Hier zie je een vergelijkbaar overzicht als in onderstaand screenshot.

Het zegt iets over de mate waarin het entiteiten en relaties kan herkennen. 

F1, Precision en Recall zijn waardes die aangeven hoe goed het model een entiteit of relatie kan ontdekken. In onderstaand voorbeeld kan het dus functienamen en werkzaamheden enigszins herkennen, en de relatie functie_bij (selecteer eerst de optie 'Relation Types') detecteren.

Het laat ook zien waar het model nog meer op getraind moet worden. Dat is in dit simpele voorbeeld eigenlijk nog op bijna alle entiteiten omdat we maar weinig voorbeelden en een kleine dataset hebben.

 


Ok leuk... en wat nu?

Je hebt nu kennis gemaakt met een hele simpele introductie van hoe domeinkennis en expertise van mensen in een systeem/model te vatten is.

In een echte situatie zal je meer data moeten gebruiken en meer experts moeten laten trainen om het model goed te laten werken

 

Deze introductie geeft je wel de mogelijkheid om na te denken over toepassingen.
Wat andere bedrijven zoal doen geeft wellicht ook nog extra ideeën.

 

 Wat doen andere bedrijven met deze technologie?

  • Beoordelen van contracten, inkoopvoorwaarden, NDA's
    • Je kunt bijvoorbeeld hele passages markeren als 'verdacht' of als afwijkende/maatwerk clausule en op basis hiervan een score aan een document koppelen die berekent wat het risico is van een document. Zodat een expert verder kan kijken naar afwijkende data, en documenten met een lage risico score kunnen bijv. automatisch goedgekeurd worden in een proces.
  • Analyse en verrijking van polisvoorwaarden
    • Het normaliseren van termen en concepten en het annoteren van antwoorden/feiten kan verrijking van het document opleveren in de vorm van meta-data. Dit kan je bijvoorbeeld weer koppelen aan een chatbot of zoeksysteem om de juiste antwoorden of informatie terug te kunnen geven. Of je kunt dit in een voorspellend model gebruiken om iets te gaan voorspellen.
  • Analyse van reviews en beoordelingen
    • Hierbij analyseert het model reviews. Je ziet dit bijvoorbeeld bij booking.com terugkomen in de vorm van "Klanten waarderen vooral de centrale ligging", of "het ontbijt".
      In reviews schrijft men dan bijvoorbeeld "Het is maar 1 minuut lopen naar het centrum", of "Goede koffie en croissants". Het model kan dan verschillende soorten beschrijvingen in reviews over de ligging of het ontbijt naar bovenliggende concepten classificeren.
  • Fact-extraction & Summarisation
    • Het model kan helpen bij het herkennen en de extractie van feiten, en het samenvatten van teksten. Feitjes en samenvattingen (van bijv. paragrafen of passages) kun je bijvoorbeeld weer gebruiken als antwoorden op vragen in een chatbot. Dat maakt een chatbot minder 'gescript' en dynamischer.

Input voor de Huiswerkopdracht

Hoe zou je deze technologie, mogelijkheden en ideeën in kunnen zetten in jouw dagelijkse werkzaamheden of voor jouw klanten? Welke data is er beschikbaar en wat zou je uit die data willen halen?