Je construis actuellement un script amusant, qui correspond essentiellement à des phrases données et donne une réponse prédéfinie en fonction des points de correspondance. Vous pouvez lui demander de récupérer des informations sur la base de flux en direct, d'exécuter des tâches, de raconter des anecdotes ou simplement de discuter avec elle.
J'ai déjà une détection intégrée des mauvais mots, du verrouillage des majuscules ou des deux. Le programme a un nom de fille et j'ai essayé de me rapprocher le plus possible d'une fille girly, sur le plan logique (par exemple: tout le monde sait que la plupart des filles girly mettent 700 ms pour répondre à une question, en plaisantant bien sûr). Voici donc un petit exemple:
Client: QUEL EST VOTRE PROBLÈME?
Kiku: N'UTILISEZ PAS CE TON AVEC MOI!
Client: #### toi
Kiku: pourquoi es-tu si méchant avec moi: /
Cependant, je voudrais vraiment y ajouter une fonction sarcasme. Donc, si vous écrivez quelque chose dans le sarcasme, elle le détectera et répondra en conséquence. Maintenant, c'est une partie délicate, comment enseignez-vous un script, qu'est-ce que le sarcasme?
Pour moi, plus précis. Quels sont les mots sarcastiques les plus couramment utilisés aujourd'hui? Ou comment obtenir cette statistique? Comment puis-je faire comprendre au script le contexte de la phrase donnée?
METTRE À JOUR
Comme cette question devient beaucoup de battage médiatique, je pense que les choses devraient être clarifiées un peu plus. Il est très clair que faire un script pour détecter complètement le sarcasme est fondamentalement impossible. Au moins dans une affaire raisonnable. Cependant, je crois qu'une certaine quantité de sarcasme possible pourrait être détectée.
Je l'ai fait jusqu'à présent, que mon script peut détecter un sarcasme très limité. J'ai prédéfini quelques mots sarcastiques communs (cependant, seuls, ils sont inutiles.) Par exemple: comme, peu importe, oui, bien et bien. Et puis il correspond d'abord, les choses simples, comme majuscule et cité: THANKS you are so smart
ou oh you are so "SMART"
.
Étant donné que la fonction principale des scripts consiste à effectuer des tâches ou à récupérer des informations, et par la suite, il vous demandera si c'est ce que vous vouliez dire. Puis j'ai pensé, en ajoutant "merci" comme variable spéciale. Alors yeah thanks
ou whatever thanks
déclenchera le sarcasme possible, et le script vous demandera: "Est-ce que je détecte le sarcasme?" Votre meilleur pari serait alors de dire "désolé", sinon cela ajoutera un point d'avertissement et si la limite est atteinte - cela commencera à vous ignorer.
Comme ces algorithmes très très simples semblent réellement fonctionner, cette idée a un avenir, bien sûr après beaucoup de réglages et d'ajustements. Cependant, quelqu'un de plus intelligent ferait un logiciel open source avec la même idée en tête. Ensuite, cette fonctionnalité pourrait être accrochée à de nombreuses fonctions sur le Web. Le service client bénéficierait probablement le plus, cependant, ce type de logiciel pourrait également être utilisé pour détecter le contenu "signalable".
la source
Réponses:
Si vous disposiez d'un système complet de traitement du langage naturel et d'une base de données de faits sur le système IBM Watson, vous pourriez être en mesure de signaler certaines déclarations comme des sarcasmes possibles. Par exemple, "J'entends que ta mère a un cancer et tu viens de te faire virer!" "Ouais, la vie n'est-elle pas merveilleuse!" pourrait être signalé parce qu'il pourrait reconnaître que le cancer et la perte d'un emploi ne sont généralement pas décrits comme des expériences positives.
Je suppose que vous n'avez pas les ressources nécessaires pour mettre en place un système de notation Watson. Vous pouvez constituer une base de données d'expressions sarcastiques couramment utilisées, puis utiliser une sorte d'algorithme de correspondance de texte entre l'instruction cible et la base de données sarcasme. Je dois deviner que ce ne sera pas très efficace parce que toutes les phrases utilisées avec sarcasme sont utilisées avec plus de sincérité. Par exemple, "c'est un joli X". est généralement utilisé avec sincérité, mais est parfois utilisé avec sarcasme.
Le sarcasme est très étroitement lié à la tromperie. Il n'est pas rare qu'une personne utilisant le sarcasme le nie lorsqu'elle est contestée, et leur choix de mots rend le déni possible. Je soupçonne que cela signifie qu'un bon détecteur de sarcasme est probablement un problème aussi difficile qu'un programme conversationnel qui réussit le test de Turing.
la source
<Sarcasme>
</Sarcasm>
Honnêtement, je n'ai aucune idée de comment procéder. Je pense qu'environ 30% seulement des gens dans la vraie vie "obtiennent" du sarcasme en premier lieu, donc faire en sorte qu'un ordinateur le reconnaisse et le comprenne semble être une tâche très difficile.
Edit Sur la base des commentaires de mon post d'origine, je pense avoir parfaitement illustré l'extrême difficulté de la tâche qui est demandée. Oui, la première moitié de mon poste était sarcastique. J'ai même souligné ce fait en utilisant une balise de balisage composée. En publiant un commentaire sarcastique sur une solution triviale à un problème exceptionnellement difficile, et ce sarcasme interprété comme "inutile" soulève cette question:
Si vous ne pouvez pas reconnaître le sarcasme écrit, alors comment allez-vous écrire un algorithme qui le reconnaît?
Oh, et Anna si quelqu'un inclut le terme "je pense ..." dans sa phrase, cela indique généralement que c'est une opinion qui est exprimée, pas nécessairement recherchée.
la source
Le problème de la détection des sarcasmes est un problème ouvert en linguistique informatique - vous seriez mieux servi en recherchant Google Scholar que stackexchange pour de telles choses. Il y a cependant eu quelques progrès sur la question. Pour le sarcasme parlé , un système de reconnaissance robuste peut être construit en utilisant des «caractéristiques spectrales et contextuelles» qui (selon les auteurs) détectent le sarcasme ainsi qu'un annotateur humain. Les auteurs de l'article affirment que le texte brut n'est donc pas suffisant pour détecter le sarcasme - en effet, ils ont obtenu de meilleurs résultats en ignorant les mots réels qui étaient dits.
Tsur et al. ont également rapporté des résultats intéressants dans la détection textuelle de sarcasme l'année dernière avec leur algorithme SASI . Ils font également état de résultats de suivi supplémentaires dans un autre document.
Dans tous les cas, c'est la pointe de la recherche en langage informatique; ne vous attendez pas à ce que quelqu'un vous remette un libsarcasme sur un plateau d'argent. Vous aurez besoin de grands ensembles de données de formation et de beaucoup de temps libre pour peaufiner votre détecteur de sarcasme - et même dans ce cas, une précision de 77% (comme indiqué dans le document SASI) n'est pas suffisante pour rejeter une publication basée uniquement sur un indicateur de sarcasme.
la source
Je ne pense pas que cette réponse soit une méthode d'approche très réaliste, mais si vous aviez les ressources pour le faire, je pense que ce serait possible. Considérez le projet reCaptcha de google qui utilise des êtres humains pour déchiffrer des mots que les ordinateurs ne peuvent pas lire ( "En savoir plus Recaptcha Page" ). Je crois que le problème est similaire, en ce sens que vous essayez de faire en sorte qu'une machine comprenne quelque chose que les humains sont déjà au moins meilleurs à faire.
Imaginez que vous aviez les ressources pour demander à des millions de personnes de vous identifier le sarcasme dans un contexte de conversation tapé. Imaginez que vous pourriez demander à beaucoup de gens de vous soumettre le moment exact de la conversation où le sarcasme a été réalisé et aussi peu de la conversation avant la réalisation qu'il faudrait marquer cette identification. Cela pourrait être stocké dans une base de données, disons, à laquelle votre programme avait accès. Ensuite, comme l'utilisateur tapait la conversation pour vous, la base de données pouvait être filtrée pour des conversations "similaires".
Comment évaluer la similitude est une chose à laquelle penser, mais je pense qu'il existe probablement déjà des recherches. Je crois que cela ressemblerait beaucoup à la théorie derrière les corrections d'erreurs d'orthographe. Dans les deux cas, cela reviendrait probablement à une valeur probabiliste selon laquelle la conversation tapée est en fait sarcastique, et à un moment donné, un seuil devrait être fourni.
J'aime aussi votre idée de présenter la question "C'était un sarcasme?" à l'utilisateur, puis en utilisant leur réponse pour prendre une décision plus précise.
J'espère que ma réponse n'a pas été un gaspillage complet et je vous souhaite bonne chance dans cette entreprise.
-Asaf
la source
La détection de sarcasmes en linguistique informatique (ou traitement du langage naturel) est un problème extrêmement difficile en soi. Il s'agit essentiellement d'un problème de classification où un modèle doit d'abord être formé. Un problème similaire pour trouver des doubles sens (fichier PDF) a été récemment étudié et publié. Les techniques pour les deux problèmes sont comparables.
la source
Mes 2 cents:
Demandez à un psychologue comment reconnaître le sarcasme dans les phrases, avec cette information, comparez-les à l'entrée.
Mais ce serait un projet vraiment difficile, avec l'effort fourni, vous pourriez faire le meilleur système d'exploitation au monde: P
la source