Reconnaissance Vocale
Reconnaissance Vocale
Reconnaissance Vocale
Résumé
Mots-clés
1. Introduction
2. Problématique
3. Les erreurs en reconnaissance vocale
3.1. Les sources possibles
3.2. Prévention des erreurs grâce à des méthodes générales
3.3. Correction des erreurs grâce à des méthodes générales
3.4. Correction des erreurs grâce au machine learning
4. Cine mind : système de Named Entities Recognition (NER) des titres de films
4.1. Pré-traitement de la requête utilisateur t
4.2. Encodage en Double Métaphones (DM)
4.3. Comparaison « phonétique »
4.4. Classification des candidats
4.5. Méthode d’interprétation des résultats
4.6. Méthode d’évaluation de Cine_mind
4.7. Remarque
4.8. Conclusion
5. Un Siamese networks (SNN) pour la détection de sentiments en few shot learning
5.1. Le plongement de mots
5.2. Le sous réseau de convolution
5.3. Le Siamese Neural Network (SNN)
5.4. Méthode d’évaluation du SNN
5.5. Discussion
5.6. Conclusion
6. Conclusion générale
Références
Annexes
Mots-clés
Assistant vocal, Traitement du Langage Naturel, Reconnaissance d’entités
nommées, Few-Shots Learning, classification de texte, analyse de sentiments.
Il arrive parfois que les chatbots n’interprètent pas correctement les demandes
de l’utilisateur malgré les avancées technologiques réalisées dans ce domaine.
L’incompréhension chez un assistant vocal peut être due à la mauvaise prononciation
d’une requête (« Je voudrais voir Skywalker », en prononçant Skywalker à la
française) ou l’emploi d’homophones (« Je voudrais aller voir Glass. », pourrait être
traduit sous forme symbolique par le système, par « Je voudrais aller voir glace. »).
Elle peut aussi provenir d’une méconnaissance d’un terme lié à un contexte particulier
comme « Passe-moi la dernière de Cloclo » alors que l’on s’adresse à un assistant
vocal qui permet de réserver des places de cinéma.
Dans ce document, nous commencerons par énumérer les erreurs qui peuvent
survenir lors d’une interaction humain-chatbot, puis nous décrirons le fonctionnement
du système de reconnaissance d’entités nommées (Named Entity Recognition ou
NER) que nous avons recodé pour palier à ces erreurs et enfin nous parlerons du
travail effectué sur un réseau de neurones utilisé pour faire de la classification de texte
applicable à des jeux de données contenants peu d’exemples : le Few-Shots Learning
(FSL). Les codes et les ressources sont disponibles en annexes.
2. Problématique
La principale problématique proposée par le crédit mutuel ARKEA est de trouver
un système capable de corriger les erreurs de compréhension d’un assistant vocal
dédié à la réservation de places de cinéma pendant une interaction avec un client. Ce
chatbot est utilisé notamment par le cinéma Liberté à Brest. Il est accessible à partir
de l’assistant vocal google.
Dans certains cas le système peut prendre du temps pour traiter l’information.
Il est alors recommandé de le faire savoir. Il faut aussi éviter que le système coupe la
parole à son interlocuteur car les longs moments de silence en traitement du langage
naturel représentent généralement la fin de l’énoncé utilisateur. On peut faire en sorte
que le chatbot puisse être interrompu lorsque l’utilisateur prend la parole. Enfin,
l’assistant vocal peut mettre en valeur, explicitement ou implicitement, son style
conversationnel pour que l’utilisateur s’adapte à celui-ci et éviter une mauvaise
compréhension. Par exemple, on ne s’adresse pas de la même manière à un enfant
ou à un scientifique.
3.3. Correction des erreurs grâce à des méthodes générales
Pour Niculescu et Banchs §3.2, il existe plusieurs méthodes de correction des
erreurs qui évitent de faire appel à des techniques avancées. On peut mettre en place
dans le système un mécanisme de réponse qui contient les données clés de la requête
utilisateur. Par exemple l’utilisateur demande « J’ai besoin d’une place pour la Reine
des neiges 2 », le système répond « Bien sûr, je vous réserve une place pour
Maléfique », l’utilisateur peut alors corriger immédiatement « Non, Je veux acheter une
place pour la Reine des neiges 2 ! ». Demander de clarifier une requête peut s’avérer
Figure 1 : comparaison du WER entre l'ASR utilisant le dictionnaire américain de base et le dictionnaire modifié extraite de
[5].
Figure 2 : résultats du test SxS pour une correction de requêtes en anglais au clavier extraits de [5].
Avec la technique de correction des données par choix alternatif il n’y a pas de
modification du « WER », cela est dû à une faible quantité de données recueillies. Par
contre le score au test SxS est encourageant et passe de 0,418 pour un dictionnaire
classique à 0,457 pour un dictionnaire amélioré à l’aide des techniques utilisées.
- Si le titre du film recherché est le seul à figurer dans la liste de résultats, alors il y a
reconnaissance parfaite de f (match).
Par manque de données labellisées, nous avons dû évaluer notre programme avec
un jeu de données construit par nos soins à partir des requêtes extraites de
DialogFlow. 110 requêtes sont labellisées avec le titre du film qu’elles contiennent ou
Null si elles n’en contiennent pas. La base de données contient une vingtaine de titre
de films qui figurent ou non dans les labels pour tester la robustesse à la multiplication
d’homophones et voir si la quantité de données dans la base de données influence
l’efficacité de l’algorithme. Nous obtenons une précision de 97% (proportion
d'identifications positives effectivement correcte correspondante aux trois premiers
points de la section 2.5, « j’ai bien visé ») et un rappel de 95% (proportion des résultats
positif correctement identifiée dans les trois premiers points de la section 2.5, « je n’ai
rien oublié »). Ces résultats sont assez satisfaisants dans notre cas d’utilisation.
4.7. Remarque
4.8. Conclusion
Avec Cine_mind, l’algorithme de reconnaissance « phonétique » d’entités
nommées nous avons cherché à corriger les erreurs de transcriptions faites par l’agent
DialogFlow. Les résultats obtenus sont très positifs malgré le fait que pour réaliser une
meilleure évaluation de Cine_mind, il faudrait un ensemble de données labéllisées plus
volumineux.
‖𝑥𝑖 − 𝑥𝑗 ‖𝑖𝑓𝑙𝑖 = 𝑙𝑗
ℎ(𝑥𝑖 − 𝑥𝑗 ) = { 2 (eq1)
max (0, 𝑚 − ‖𝑥𝑖 − 𝑥𝑗 ‖ ) 𝑖𝑓𝑙𝑖 ≠ 𝑙𝑗
ou l est le label du vecteur texte x réencodé par le CNN. Elle permet de faire le
rapprochement entre deux vecteurs ayant la même classe et de séparer les vecteurs
d’une valeur d’au moins m quand ils sont de classe différente. La fonction sigmoïde
est ensuite ajoutée pour d’obtenir un résultat compris entre 0 est 1. Quand P1 et P2 ont
le même label (Les deux phrases d’entrées ont le même sentiment) alors le lot est
annoté 1, sinon 0. Les hyperparamètres sont les mêmes que lors de la phase de pré
entraînement.
Figure 7 : résultats du CNN obtenus avec le jeu de données HCR et les paramètres par défaut (1).
Figure 8 : résultats du SNN obtenus avec le jeu de données HCR et les paramètres par défaut (1).
Figure 9 : résultats du CNN obtenus avec le jeu de données HCR et un taux d'apprentissage plus faible (2).
Figure 10 : résultats du SNN obtenus avec le jeu de données HCR et un taux d'apprentissage plus faible (2).
Figure 12 : résultats du SNN obtenus avec le jeu de données HCR et early stopping (3).
Une amélioration est visible dans les prédictions réalisées par notre SNN. Or, en
augmentant le nombre d’exemples dans notre jeu de données nous nous éloignons
du but principal qui est de faire apprendre notre réseau de neurones des classe
sentiments à l’aide de peu d’exemples.
5.5. Discussion
Malgré de nombreux essais, nous n’avons pas pu reproduire correctement
l’expérience et obtenir des résultats similaires à ceux de Leiming et al.. Cela peut
provenir de la façon dont l’expérience a été reconstituée :
- Nous n’avons pas travaillé à partir des mêmes jeux de données, car ils sont
difficiles à retrouver.
- Nous n’avons pas d’information sur le langage, ni sur les APIs utilisées dans le
l’article de Leiming et al..
- Nous avons établi des modifications pour réduire certains biais comme le
surapprentissage.
- Nous utilisons un SVM non sensible au coût et peut être mal placé dans
l’architecture.
- Nous avons mal interprété le critère d’évaluation de [15] en fin d’introduction du
§5.
5.6. Conclusion
Nous n’avons pas obtenu de résultats convenables en mettant en application le
SNN de Leiming et al. pour faire de la comparaison de sentiment avec peu de données.
Nous pouvons nuancer cet échec de manière positive car les scores réalisés par le
CNN sont plutôt acceptables pour du FSL.
Annexes
i. Code de Cine_mind
https://nuxeo.enib.fr/nuxeo/nxdoc/default/b7307731-9c94-40ad-9510-
48507f814104/view_documents
Les fichiers sont stockés dans un fichier zip et chiffré à l’aide de GNU Privacy
Guard (gpg). Le mot de passe de déchiffrage est : Cine-Siamese,20.
https://nuxeo.enib.fr/nuxeo/nxdoc/default/85bb8ca2-6afb-4d59-ba96-
0f120d720a76/view_documents
Les fichiers sont stockés dans un fichier zip et chiffré à l’aide de GNU Privacy
Guard (gpg). Le mot de passe de déchiffrage est : Cine-Siamese,20.