C’est quoi une Utterance ?¶
Le dossier Utterances
se réfère à tous les fichiers nécessaires à l’entrainement du modèle NLU du field. Il est organisé en deux dossiers:
- Le dossier des
intents
contient les exemples de fichiers d’entrainement utilisé par le field. Il est organisé en langue (par défauten
pour la langue anglaise etfr
pour la langue française). - Le dossier des
entities
contient tous les fichiersYAML
représentant les entités utilisées dans lesintents
.
Intents¶
Lorsqu’un utilisateur envoie une requête textuelle à NTeABot, cette requête est formulée dans une langue donnée (français
, anglais
, espagnol
, duala
, bassa'a
, fulfulbe
, bulu
, etc). Pour que NTeABot puisse comprendre cette requête, il doit au préalable être entrainé à cette forme de requête utilisateur. C’est pourquoi, pour bien organiser la fonctionnalité plurilingue de NTeABot, le dossier intents
est organisé en langue selon la codification ISO (fr
, en
, es
, dl
, etc) où chaque langue est un dossier dans lequel se trouve des fichiers YAML
d’entrainement.
utterances
intents
fr
cooltravelbus.yaml
cooltraveltrain.yaml
en
cooltravelbus.yaml
cooltraveltrain.yaml
Exemple d’un fichier d’intent¶
Le fichier d’intent obéit à la structure décrite dans la documentation de Snips-nlu. Dans le fichier cooltravelbus.yaml
on va placer toutes les utterances traitant de la réservation des trains.
# cooltravelfield/utterances/fr/cooltravelbus.yaml
# BookBus
---
type: intent
name: BookBus
utterances:
- Réserve-moi un billet de bus [travelAgencyName:travelAgency](Finex) de [startedPlace:nlulib/city](Douala) à [targetPlace:nlulib/city](Yaoundé)
- Je voyage ce soir, regarde les bus qui vont à [targetPlace:nlulib/city](Douala) en partance de [startedPlace:nlulib/city](Yaoundé)
- cherche des billets de bus [travelAgencyName:travelAgency](Général) disponibles pour [targetPlace:nlulib/city](Ngaoundéré) au départ de [startedPlace:nlulib/city](Yaoundé)?
- Je veux voyager de [startedPlace:nlulib/city](Douala) à [targetPlace:nlulib/city](Yaoundé), est-ce qu'il y a des bus ce jours ?
- réserve-moi un billet de bus de [startedPlace:nlulib/city](Douala) à [targetPlace:nlulib/city](Yaoundé) [time:snips/datetime](ce soir)
Note
Dans ce fichier cooltravelbus.yaml
vous pouvez ajouter plusieurs intent
, il faudra juste les séparer par trois tirets de six ---
. A chaque fois que vous souhaitez ajouter un nouveau intent
dans un fichier, penser à ces trois tirets.
Et dans le fichier cooltraveltrain.yaml
, les utterances pour la réservation des trains:
# cooltravelfield/utterances/intents/fr/cooltraveltrain.yaml
# BookTrain
---
type: intent
name: BookTrain
slots:
- name: startedPlace
entity: nlulib/city
- name: targetPlace
entity: nlulib/city
- name: time
entity: snips/datetime
utterances:
- je veux réserver un billet de train de [startedPlace](Douala) à [targetPlace](Yaoundé)
- je voyage ce soir, regarde les trains qui vont à [targetPlace](Douala) en partance de [startedPlace](Yaoundé)
- cherche des billets de train disponibles pour [targetPlace](Ngaoundéré) au départ de [startedPlace](Yaoundé)?
- je veux voyager de [startedPlace](Douala) à [targetPlace](Yaoundé), est-ce qu'il y a des trains ce jours ?
- je souhaite réserver un billet de train de [startedPlace](Douala) à [targetPlace](Yaoundé) [time](ce soir)`
Voici une description des points centraux de cette structure:
type
: représente le type d’utterance traitée (intent
ouentity
).name
: donne le nom de l’intent ou de l’action (BookTrain
,BookBus
déclarés dans le fichier de configuration)slots
: sont des paramètres qui représentent les entités utilisées dans les utterances. Pour[travelAgencyName:travelAgency](Finex)
l’entité esttravelAgency
, le nom attribué à l’entitétravelAgencyName
et ce qui réfère à l’entitéFinex
. Ces entités doivent être déclarrées dans le dossier entities.utterances
: sont des potentiels requêtes utilisateurs. Ces requêtes doivent être assez explicites et hétérogènes pour couvrir la somme des requêtes possibles traitée dans l’action.
Note
- Le nombre d’utterances n’est pas limité: plus vous insérez d’utterances, plus votre field match au plus les requêtes utilisateur.
- Essayer au maximum de faire varier les tournures linguistiques des utterances de vos fields, de manière à couvrir toutes les requêtes éventuelles utilisateurs.
- Le paramètre
slots
peut être facultatif (cf.BookBus
) selon son mode de déclaration dans lesutterances
. Je vous invite à regarder la documentation officielle le concept de implicit value.
Entities¶
Les entities
(entités nommées en français) représentent des expressions linguistiques référentielles dont on associe souvent aux noms propres, les lieux, organisations, chose conceptuelle (drapeaux, poisson), etc.
Dans le dossier utterances
de votre field, les entités doivent être visibles de cette manière: nom de l’entité (ici travel
) suivie de la langue (en
, fr
, etc) ou de all
(toutes les langues).
utterances
intities
travel_all.yaml
Le fichier entity obéit aussi à la structure décrite dans la documentation de Snips-nlu.
# City Entity (déjà définie par défaut dans les entités de NTeABot, ne plus le
# déclarer dans les entités de votre field)
---
type: entity
name: nlulib/city
values:
- [Douala, capitale économique du Cameroun]
- [Kribi, cité balnéaire, ville aux cirènes]
- [Limbé,limbe, zone anglophone du Cameroun]
- [Yaoundé, ville aux sept colines]
- [ABIDJAN,abidjan]
- [ABOMEY,abomey]
- [ACCRA,accra]
# cooltravelfield/utterances/entities/travel_all.yaml
# travelAgency Entity
---
type: entity
name: travelAgency
automatically_extensible: false
use_synonyms: false
matching_strictness: 0.8
values:
- [Finex, finex voyage]
- [Général, général voyage]
- [Buca]
- [Central, central voyage]
Voici une description des points centraux de cette structure:
type
: représente le type d’utterance traitée (icientity
).name
: donne le nom de l’entité tel que utilisé dans l’intent (travelAgency
,nlulib/city
)values
: liste les valeurs possibles associées à une entité. Pour l’entité suivante[Douala, capitale économique du Cameroun]
, la première valeur est le nom de l’entité (Douala
) et les autres les synonymes de ce nom (capitale économique du Cameroun
).automatically_extensible
: extensibilité des valeurs. valeur par défaut esttrue
use_synonyms
: utilise les synonymes des valeurs. valeur par défaut esttrue
matching_strictness
: dégré de match. valeur par défaut est1.0
Entités par défaut de NTeABot¶
NTeABot possède par défaut un certain nombre d’entités que vous pouvez directement utiliser dans votre field. Nous les avons organisé en groupes:
Nourriture
nlulib/cmswfood
liste des plats de la région du Sud-Ouest Camerounnlulib/cmwfood
liste des plats de la région de l’Ouest Camerounnlulib/cmlfood
liste des plats de la région du Littoral Cameroun
Langues
nlulib/language
liste des principales langues parlées au Camerounnlulib/people
liste les groupes ethniques présents au Camerounnlulib/languageForm
variante du mot languenlulib/dialectForm
variante de dialectenlulib/cmLanguages
liste toutes les langues parlées au Cameroun
Noms propres
nlulib/cmNorthNames
liste les noms propres de la région du Nord Camerounnlulib/cmCenterNames
liste les noms propres de la région du Centre Camerounnlulib/cmLittoralNames
liste les noms propres de la région du Littoral Camerounnlulib/cmSouthWestNames
liste les noms propres de la région du Sud-Ouest Camerounnlulib/cmWestNames
liste les noms propres de la région de l’Ouest Camerounnlulib/cameroonNames
liste les noms propres utilisés au Camerounnlulib/arabicNames
liste les noms propres d’origine arabenlulib/chineseNames
liste les noms propres d’origine chinoisenlulib/dutchNames
liste les noms propres d’origine néerlandaisenlulib/englishNames
liste les noms propres d’origine anglaisenlulib/greekNames
liste les noms propres d’origine grecquenlulib/irishNames
liste les noms propres d’origine irlandaisenlulib/italianNames
liste les noms propres d’origine italiennenlulib/japaneseNames
liste les noms propres d’origine japonaisenlulib/koreanNames
liste les noms propres d’origine koréennenlulib/polishNames
liste les noms propres d’origine polonaisenlulib/russianNames
liste les noms propres d’origine russenlulib/scottishNames
liste les noms propres d’origine écossaisenlulib/spanishNames
liste les noms propres d’origine espagnolenlulib/vietnameseNames
liste les noms propres d’origine viétnamiennenlulib/czechNames
liste les noms propres d’origine tchèquenlulib/germanNames
liste les noms propres d’origine allemandenlulib/portugueseNames
liste les noms propres d’origine portugaise
nteabot
nlulib/username
liste quelques usernames possiblesnlulib/chatbotname
liste les noms des agents conversationnels existants
ntealan
nlulib/ntealan
liste les variantes du mot NTeALannlulib/nteabot
liste les variantes du mot NTeABotnlulib/sponsors
liste les variantes du mot sponsorsnlulib/hello
liste les variantes du mot hellonlulib/president
liste les variantes du mot présidentnlulib/leadscientist
liste les variantes du groupe de mots ‘coordonnateur scientifique’nlulib/developpers
liste les variantes du mot développeursnlulib/linguists
liste les variantes du mot linguiste
Lieux
nlulib/city
liste toutes les villes camerounaises/capitales du mondenlulib/country
liste tous les pays du mondenlulib/continent
liste tous les continents du monde
Snips [références]
snips/datetime
match tous les formats liés au tempssnips/temperature
match tous les formats liés à la températuresnips/amountOfMoney
match tous les formats liés à la monnaiesnips/musicAlbum
match tous les formats liés aux albums de musicsnips/musicArtist
match tous les formats liés aux musicienssnips/musicTrack
match tous les formats liés à une playlistsnips/ordinal
match tous les formats liés au ordinauxsnips/number
match tous les formats liés aux chiffressnips/duration
match tous les formats liés à la duréesnips/percentage
match tous les formats liés à un pourcentage