# Entiteiten

Soms is een [intentie](trainen-van-de-nlp) alleen niet voldoende om een antwoord te kunnen geven. Bekijk het volgende voorbeeld:

<< Gebruiker wil de prijs weten van een product >> => intentie: `#productkost`

* “Hoeveel kost een iPhone Xs?”
* “Hoeveel kost een Nokia 3310?”

Het spreekt voor zich dat de eerste en de tweede voorbeeldzin een ander antwoord verwachten, hoewel de intentie toch hetzelfde is. De onderscheidende factor zit in het feit of het over `iPhone Xs` of `Nokia 3310` gaat. Om een antwoord te kunnen geven, moet de chatbot dus niet alleen de intentie `#productkost` detecteren, maar ook het product waarover het gaat: een entiteit met het type `@product`. Het antwoord zal dus niet alleen afhangen van de gedetecteerde intentie, maar ook van de entiteiten die gevonden worden in de zin.

_Soms is het niet altijd duidelijk hoe je intenties en entiteiten moet splitsen. In bovenstaand voorbeeld zou je ook een intentie_ `#iphonexskost` _en een intentie_ `#nokia3310kost` _kunnen maken en geen entiteiten definiëren. Dit zou ons echter veel dubbel werk opleveren, aangezien deze intenties bijna exact hetzelfde zijn. In dit geval is het dus duidelijk dat je er beter één intentie van maakt en met entiteiten werkt. Soms is deze grens echter minder duidelijk. Door ervaring op te doen en dingen uit te proberen, leer je wat werkt en wat niet._

Een entiteit heeft 3 niveaus:

* Naam
* Waardes
* Synoniemen

Enkele voorbeelden van entiteiten:

| Naam         | Waarde                              | Synoniemen                                                    |
| ------------ | ----------------------------------- | ------------------------------------------------------------- |
| @product     | iPhone Xs                           | de duurste iPhone, iPhone 10s                                 |
|              | PlayStation 4                       | PS4                                                           |
|              | Amazon Echo Dot                     | Echo Dot                                                      |
|              | Samsung Galaxy S9                   | Galaxy S9                                                     |
| @film        | Harry Potter en De Steen Der Wijzen | Harry Potter and The Sorcerer’s Stone, de eerste Harry Potter |
|              | Sjakie en De Chocoladefabriek       | Charlie and the Chocolate Factory                             |
| @smalltalk   | bedankt                             | merci, thanks, dankuwel                                       |
|              | hallo                               | hey, jow, hi, goeiedag                                        |
| @credentials | gebruikersnaam                      | username, nickname, userID, loginID                           |
|              | wachtwoord                          | paswoord, password                                            |

In Oswald kunnen entiteiten aangemaakt worden door in de chatbot in het linkermenu op `Entiteiten` te klikken. Klik dan net naast het linkermenu bovenaan op `Nieuwe entiteit`. Kies een **beschrijvende naam** voor deze entiteit. Dit is best een overkoepelende naam voor **alle waarden** die deze entiteit kan bevatten.

![](https://1621246471-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_IHdvfaXCVi1CBgkrB%2F-L_ISzkhbidBldUn3IHX%2F-L_ITq_nriTAE-r-cD_t%2Fentiteiten_1.png?alt=media\&token=fa739020-4113-4ff4-92b6-a1934b4f714b)

![](https://1621246471-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_IHdvfaXCVi1CBgkrB%2F-L_ISzkhbidBldUn3IHX%2F-L_ITsoWwzCxgd9e5Fl6%2Fentiteiten_2.png?alt=media\&token=a6965771-d5a4-4646-9f02-db6fcd997974)

Om een nieuwe waarde aan de entiteit toe te voegen, klik je rechtsboven op `Nieuwe waarde`. Vul de naam van de waarde in, bijvoorbeeld `iPhone X` zoals in de tabel hierboven. Verder kan je nog enkele synoniemen toevoegen voor deze waarde. Vergeet opnieuw niet op `Klaar` te klikken wanneer je klaar bent. Zo kan je verschillende waarden met allemaal nul, één of meerdere synoniemen toevoegen.

![](https://1621246471-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_IHdvfaXCVi1CBgkrB%2F-L_ISzkhbidBldUn3IHX%2F-L_ITwiqdEvjvM7TxR-o%2Fentiteiten_3.png?alt=media\&token=bdb29e5d-bcb1-4ec8-bbf5-d1fa132b9df7)

![](https://1621246471-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_IHdvfaXCVi1CBgkrB%2F-L_ISzkhbidBldUn3IHX%2F-L_ITzMft4MPlNRYrdCQ%2Fentiteiten_4.png?alt=media\&token=eafc3853-ed14-4ce4-9fcd-0a10ca7d3e09)

![](https://1621246471-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_IHdvfaXCVi1CBgkrB%2F-L_ISzkhbidBldUn3IHX%2F-L_IU0c5gGzUbnv8q5vT%2Fentiteiten_5.png?alt=media\&token=3dd92e22-5f84-4dd5-8bbc-afd9717a8caf)

![](https://1621246471-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_IHdvfaXCVi1CBgkrB%2F-L_ISzkhbidBldUn3IHX%2F-L_IU2h7_D9FFcWtXn2D%2Fentiteiten_6.png?alt=media\&token=ead287b9-038c-4e09-97a6-d54227c68cdd)

Tenslotte kan je nog het veldje `Corrigeer` op `ja` of `nee` zetten (standaard staat dit op `nee`). Wanneer je dit aanzet, zal het systeem de entiteiten herkennen ook als er een schrijffout gemaakt wordt. Zo zal bijvoorbeeld `PlayStaion 4` automatisch gecorrigeerd worden naar `PlayStation 4` en zo dus ook herkend worden door Oswald.

### **Bestandsentiteiten**

Bestandsentiteiten maken het mogelijk om via een Excel-bestand entiteiten in bulk op te laden naar Oswald. De A-kolom staat voor de verschillende waarden van de entiteiten. De B-, C-, D... -kolommen staan voor de synoniemen die bij de waarden horen. Bestandsentiteiten toevoegen werkt op een gelijkaardige manier als voor gewone entiteiten. Je klikt op `Nieuwe entiteit`, je kiest een naam voor je entiteit en kiest dan voor `Laad entiteit uit bestand`. Daar kan je het bijhorende Excel-bestand kiezen. De waardes en synoniemen worden nu automatisch ingevuld.

### **Verschil tussen gewone entiteiten en bestandsentiteiten**

Het grote verschil tussen gewone entietiten en bestandsentiteiten is het feit dat bestandsentiteiten op een andere manier behandeld worden door Oswald. Voor bestandentiteiten gebruikt Oswald immers geavanceerde optimalisatiealgoritmes zodat de chatbot honderden, duizenden of zelfs miljoenen en waardes voor entiteiten kan bevatten. Verder worden de verschillen hieronder opgelijst:

| Eigenschap                                                 | Gewone entiteiten | Bestandsentiteiten |
| ---------------------------------------------------------- | ----------------- | ------------------ |
| Waarden en synoniemen toe te voegen via UI                 | x                 |                    |
| Waarden en synoniemen aan te passen via UI                 | x                 |                    |
| Kan duizenden waarden bevatten                             |                   | x                  |
| Op te laden vanuit een bestand                             |                   | x                  |
| Corrigeer altijd aan                                       |                   | x                  |
| Waarden te gebruiken in inputconfiguratie van antwoordnode | x                 |                    |

### Import / Export

Entiteiten kunnen, net als intenties geïmporteerd en geëxporteerd worden. Je doet dit door te klikken op de menu optie bij de lijst van alle entiteiten:

![](https://1621246471-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_IHdvfaXCVi1CBgkrB%2F-LzaAQ64KQkAohkZd0OR%2F-LzaDIHABjO8Qxq7Qpei%2Fimage.png?alt=media\&token=3e99816c-3bc3-4081-a734-8a4515f1ee00)
