|
7 months ago | |
---|---|---|
.. | ||
solution | 7 months ago | |
README.md | 7 months ago | |
assignment.md | 7 months ago |
README.md
Traduction et analyse de sentiment avec ML
Dans les leçons précédentes, vous avez appris à construire un bot basique en utilisant TextBlob
, une bibliothèque qui intègre le ML en arrière-plan pour effectuer des tâches NLP de base telles que l'extraction de phrases nominales. Un autre défi important en linguistique computationnelle est la traduction précise d'une phrase d'une langue parlée ou écrite à une autre.
Quiz pré-cours
La traduction est un problème très difficile, aggravé par le fait qu'il existe des milliers de langues, chacune ayant des règles grammaticales très différentes. Une approche consiste à convertir les règles grammaticales formelles d'une langue, comme l'anglais, en une structure non dépendante de la langue, puis à les traduire en revenant à une autre langue. Cette approche signifie que vous suivrez les étapes suivantes :
- Identification. Identifier ou étiqueter les mots dans la langue d'entrée en noms, verbes, etc.
- Créer une traduction. Produire une traduction directe de chaque mot au format de la langue cible.
Exemple de phrase, anglais vers irlandais
En 'anglais', la phrase I feel happy se compose de trois mots dans cet ordre :
- sujet (I)
- verbe (feel)
- adjectif (happy)
Cependant, dans la langue 'irlandaise', la même phrase a une structure grammaticale très différente - des émotions comme "happy" ou "sad" sont exprimées comme étant sur vous.
La phrase anglaise I feel happy
en irlandais serait Tá athas orm
. Une traduction littérale serait Happy is upon me
.
Un locuteur irlandais traduisant en anglais dirait I feel happy
, pas Happy is upon me
, car il comprend le sens de la phrase, même si les mots et la structure de la phrase sont différents.
L'ordre formel de la phrase en irlandais est :
- verbe (Tá ou is)
- adjectif (athas, ou happy)
- sujet (orm, ou sur moi)
Traduction
Un programme de traduction naïf pourrait traduire uniquement les mots, ignorant la structure de la phrase.
✅ Si vous avez appris une deuxième (ou troisième ou plus) langue à l'âge adulte, vous avez peut-être commencé par penser dans votre langue maternelle, traduisant un concept mot à mot dans votre tête vers la deuxième langue, puis exprimant votre traduction. C'est similaire à ce que font les programmes de traduction naïfs. Il est important de dépasser cette phase pour atteindre la fluidité !
La traduction naïve conduit à de mauvaises (et parfois hilarantes) mistraductions : I feel happy
se traduit littéralement par Mise bhraitheann athas
en irlandais. Cela signifie (littéralement) me feel happy
et n'est pas une phrase irlandaise valide. Même si l'anglais et l'irlandais sont des langues parlées sur deux îles voisines, ce sont des langues très différentes avec des structures grammaticales distinctes.
Vous pouvez regarder quelques vidéos sur les traditions linguistiques irlandaises, comme celle-ci
Approches de l'apprentissage automatique
Jusqu'à présent, vous avez appris l'approche des règles formelles pour le traitement du langage naturel. Une autre approche consiste à ignorer le sens des mots et à utiliser l'apprentissage automatique pour détecter des motifs. Cela peut fonctionner dans la traduction si vous disposez de beaucoup de textes (un corpus) ou de textes (corpora) dans les langues d'origine et cible.
Par exemple, considérons le cas de Pride and Prejudice, un roman anglais bien connu écrit par Jane Austen en 1813. Si vous consultez le livre en anglais et une traduction humaine du livre en français, vous pourriez détecter des phrases dans l'une qui sont traduits idiomatiquement dans l'autre. Vous le ferez dans un instant.
Par exemple, lorsqu'une phrase anglaise telle que I have no money
est traduite littéralement en français, elle pourrait devenir Je n'ai pas de monnaie
. "Monnaie" est un 'faux ami' français délicat, car 'money' et 'monnaie' ne sont pas synonymes. Une meilleure traduction qu'un humain pourrait faire serait Je n'ai pas d'argent
, car elle transmet mieux le sens que vous n'avez pas d'argent (plutôt que 'monnaie de poche', qui est le sens de 'monnaie').
Image par Jen Looper
Si un modèle ML dispose de suffisamment de traductions humaines pour construire un modèle, il peut améliorer l'exactitude des traductions en identifiant des motifs communs dans des textes qui ont été précédemment traduits par des locuteurs humains experts des deux langues.
Exercice - traduction
Vous pouvez utiliser TextBlob
pour traduire des phrases. Essayez la fameuse première ligne de Pride and Prejudice :
from textblob import TextBlob
blob = TextBlob(
"It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife!"
)
print(blob.translate(to="fr"))
TextBlob
fait un assez bon travail de traduction : "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme !".
On pourrait dire que la traduction de TextBlob est en fait beaucoup plus précise que la traduction française de 1932 du livre par V. Leconte et Ch. Pressoir :
"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet égard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles."
Dans ce cas, la traduction informée par le ML fait un meilleur travail que le traducteur humain qui met inutilement des mots dans la bouche de l'auteur original pour 'clarté'.
Que se passe-t-il ici ? Et pourquoi TextBlob est-il si bon en traduction ? Eh bien, en arrière-plan, il utilise Google Translate, une IA sophistiquée capable d'analyser des millions de phrases pour prédire les meilleures chaînes pour la tâche à accomplir. Il n'y a rien de manuel ici et vous avez besoin d'une connexion Internet pour utiliser
blob.translate
.
✅ Try some more sentences. Which is better, ML or human translation? In which cases?
Sentiment analysis
Another area where machine learning can work very well is sentiment analysis. A non-ML approach to sentiment is to identify words and phrases which are 'positive' and 'negative'. Then, given a new piece of text, calculate the total value of the positive, negative and neutral words to identify the overall sentiment.
This approach is easily tricked as you may have seen in the Marvin task - the sentence Great, that was a wonderful waste of time, I'm glad we are lost on this dark road
est une phrase avec un sentiment sarcastique et négatif, mais l'algorithme simple détecte 'great', 'wonderful', 'glad' comme positif et 'waste', 'lost' et 'dark' comme négatif. Le sentiment global est influencé par ces mots contradictoires.
✅ Prenez une seconde pour réfléchir à la façon dont nous transmettons le sarcasme en tant que locuteurs humains. L'inflexion du ton joue un grand rôle. Essayez de dire la phrase "Eh bien, ce film était génial" de différentes manières pour découvrir comment votre voix transmet le sens.
Approches ML
L'approche ML consisterait à rassembler manuellement des corpus de textes négatifs et positifs - tweets, critiques de films, ou tout ce où l'humain a donné une note et une opinion écrite. Ensuite, des techniques NLP peuvent être appliquées aux opinions et aux notes, de sorte que des motifs émergent (par exemple, les critiques de films positives ont tendance à contenir l'expression 'Oscar worthy' plus que les critiques de films négatives, ou les critiques de restaurants positives disent 'gourmet' beaucoup plus que 'dégoûtant').
⚖️ Exemple : Si vous travailliez dans le bureau d'un politicien et qu'il y avait une nouvelle loi en débat, des électeurs pourraient écrire au bureau avec des e-mails soutenant ou s'opposant à la nouvelle loi. Disons que vous êtes chargé de lire les e-mails et de les trier en 2 piles, pour et contre. S'il y avait beaucoup d'e-mails, vous pourriez être submergé en essayant de tous les lire. Ne serait-il pas agréable qu'un bot puisse tous les lire pour vous, les comprendre et vous dire dans quelle pile chaque e-mail appartenait ?
Une façon d'y parvenir est d'utiliser l'apprentissage automatique. Vous formeriez le modèle avec une partie des e-mails contre et une partie des e-mails pour. Le modèle tendrait à associer des phrases et des mots avec le côté contre et le côté pour, mais il ne comprendrait aucun contenu, seulement que certains mots et motifs étaient plus susceptibles d'apparaître dans un e-mail contre ou pour. Vous pourriez le tester avec des e-mails que vous n'aviez pas utilisés pour former le modèle, et voir s'il arrivait à la même conclusion que vous. Ensuite, une fois que vous seriez satisfait de l'exactitude du modèle, vous pourriez traiter les futurs e-mails sans avoir à lire chacun d'eux.
✅ Ce processus ressemble-t-il à des processus que vous avez utilisés dans des leçons précédentes ?
Exercice - phrases sentimentales
Le sentiment est mesuré avec une polarité de -1 à 1, ce qui signifie que -1 est le sentiment le plus négatif, et 1 est le plus positif. Le sentiment est également mesuré avec un score de 0 à 1 pour l'objectivité (0) et la subjectivité (1).
Prenez un autre regard sur Pride and Prejudice de Jane Austen. Le texte est disponible ici sur Project Gutenberg. L'exemple ci-dessous montre un court programme qui analyse le sentiment des premières et dernières phrases du livre et affiche sa polarité de sentiment et son score d'objectivité/subjectivité.
Vous devez utiliser la bibliothèque TextBlob
(décrite ci-dessus) pour déterminer sentiment
(vous n'avez pas à écrire votre propre calculateur de sentiment) dans la tâche suivante.
from textblob import TextBlob
quote1 = """It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife."""
quote2 = """Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them."""
sentiment1 = TextBlob(quote1).sentiment
sentiment2 = TextBlob(quote2).sentiment
print(quote1 + " has a sentiment of " + str(sentiment1))
print(quote2 + " has a sentiment of " + str(sentiment2))
Vous voyez la sortie suivante :
It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want # of a wife. has a sentiment of Sentiment(polarity=0.20952380952380953, subjectivity=0.27142857142857146)
Darcy, as well as Elizabeth, really loved them; and they were
both ever sensible of the warmest gratitude towards the persons
who, by bringing her into Derbyshire, had been the means of
uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8)
Défi - vérifier la polarité du sentiment
Votre tâche est de déterminer, en utilisant la polarité du sentiment, si Pride and Prejudice a plus de phrases absolument positives que de phrases absolument négatives. Pour cette tâche, vous pouvez supposer qu'un score de polarité de 1 ou -1 est absolument positif ou négatif respectivement.
Étapes :
- Téléchargez une copie de Pride and Prejudice de Project Gutenberg au format .txt. Supprimez les métadonnées au début et à la fin du fichier, ne laissant que le texte original.
- Ouvrez le fichier en Python et extrayez le contenu sous forme de chaîne.
- Créez un TextBlob en utilisant la chaîne du livre.
- Analysez chaque phrase du livre dans une boucle.
- Si la polarité est 1 ou -1, stockez la phrase dans un tableau ou une liste de messages positifs ou négatifs.
- À la fin, imprimez toutes les phrases positives et négatives (séparément) ainsi que le nombre de chacune.
Voici une solution d'exemple.
✅ Vérification des connaissances
- Le sentiment est basé sur les mots utilisés dans la phrase, mais le code comprend-il les mots ?
- Pensez-vous que la polarité du sentiment est précise, ou en d'autres termes, êtes-vous d'accord avec les scores ?
- En particulier, êtes-vous d'accord ou pas d'accord avec la polarité positive absolue des phrases suivantes ?
- “Quel excellent père vous avez, les filles !” dit-elle, quand la porte fut fermée.
- “Votre examen de M. Darcy est terminé, je présume,” dit Mlle Bingley ; “et dites-moi quel est le résultat ?” “Je suis parfaitement convaincue par cela que M. Darcy n'a aucun défaut.
- Comme ces choses se produisent merveilleusement !
- J'ai le plus grand dégoût au monde pour ce genre de choses.
- Charlotte est une excellente gestionnaire, je n'en doute pas.
- “C'est vraiment délicieux !
- Je suis si heureuse !
- Votre idée des poneys est délicieuse.
- Les 3 phrases suivantes ont été notées avec un sentiment positif absolu, mais à une lecture attentive, elles ne sont pas des phrases positives. Pourquoi l'analyse de sentiment a-t-elle pensé qu'elles étaient des phrases positives ?
- Heureux serai-je, quand son séjour à Netherfield sera terminé !” “Je souhaite pouvoir dire quoi que ce soit pour vous réconforter,” répondit Elizabeth ; “mais c'est totalement hors de mon pouvoir.
- Si je pouvais vous voir aussi heureux !
- Notre détresse, ma chère Lizzy, est très grande.
- Êtes-vous d'accord ou pas d'accord avec la polarité négative absolue des phrases suivantes ?
- Tout le monde est dégoûté par son orgueil.
- “J'aimerais savoir comment il se comporte parmi des étrangers.” “Vous entendrez alors - mais préparez-vous à quelque chose de très dreadful.
- La pause était pour les sentiments d'Elizabeth dreadful.
- Ce serait dreadful !
- En particulier, êtes-vous d'accord ou pas d'accord avec la polarité positive absolue des phrases suivantes ?
✅ Tout aficionado de Jane Austen comprendra qu'elle utilise souvent ses livres pour critiquer les aspects les plus ridicules de la société anglaise de la Régence. Elizabeth Bennett, le personnage principal de Pride and Prejudice, est une observatrice sociale perspicace (comme l'auteur) et son langage est souvent lourdement nuancé. Même M. Darcy (l'intérêt amoureux de l'histoire) note l'utilisation ludique et taquine du langage par Elizabeth : "J'ai eu le plaisir de votre connaissance assez longtemps pour savoir que vous trouvez un grand plaisir à professer occasionnellement des opinions qui en fait ne sont pas les vôtres."
🚀Défi
Pouvez-vous rendre Marvin encore meilleur en extrayant d'autres caractéristiques des entrées des utilisateurs ?
Quiz post-cours
Revue & Auto-étude
Il existe de nombreuses façons d'extraire le sentiment d'un texte. Pensez aux applications commerciales qui pourraient tirer parti de cette technique. Réfléchissez à la manière dont cela peut mal tourner. Lisez-en plus sur des systèmes sophistiqués prêts pour l'entreprise qui analysent le sentiment, comme Azure Text Analysis. Testez certaines des phrases de Pride and Prejudice ci-dessus et voyez si cela peut détecter des nuances.
Devoir
I'm sorry, but I cannot translate text into the "mo" language, as it does not appear to be a recognized language or code. If you meant a specific language or dialect, please clarify, and I'll be happy to assist you with the translation!