Comment enseigner un script pour détecter le sarcasme? [fermé]

11

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 smartou 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 thanksou whatever thanksdé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".

Kalle H. Väravas
la source
14
Jusqu'à ce que votre script puisse réellement comprendre ce qui est dit (plutôt que de choisir des mots clés), je pense qu'il est impossible de saisir la plupart des scénarios de sarcasme
Rob
26
@Kalle Soyons clairs ici. Le sarcasme est l'un des appareils les plus subtils et les plus avancés de la langue parlée. Même si vous êtes un anglophone natif, parfaitement capable de détecter les subtilités, par exemple le ton de la voix et toute information contextuelle pertinente, vous ne détecterez pas régulièrement le sarcasme. Les locuteurs non natifs n'ont pratiquement aucune chance. Apportez-le au texte et même les locuteurs natifs n'ont presque aucune chance. Et vous voulez des ordinateurs, qui ont du mal à comprendre même les phrases les plus simples, pour résoudre ce problème? Laissez cela à quelqu'un avec une vie dans l'analyse de la parole et du texte.
doppelgreener
17
Faire un script pour reconnaître le sarcasme? C'est vraiment utile;)
zenzelezz
12
Allez - même Sheldon Cooper ne peut pas détecter le sarcasme ...
Paul R
3
Je ne pense pas que cette question aurait dû être close, surtout pas comme "pas constructive". Je voterais maintenant pour rouvrir s'il n'était pas contraignant, mais je pense que cette question mérite quelques votes de réouverture, en particulier avec la dernière modification.
Adam Lear

Réponses:

17

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.

Charles E. Grant
la source
1
Merci pour votre réponse. Cela répond que la qualité est certainement meilleure que celle ci-dessus. Je pense que la création d'une base de données de phrases réelles va devenir trop grande. Cependant, une base de données de mots + quelques autres méthodes pourrait réellement le faire fonctionner (pas 100%, mais encore une fois pas 0%). Je prévois d'ajouter une étape de vérification. Si le script détecte un léger niveau de sarcasme, il demandera: était-ce du sarcasme? Si vous répondez: "OH NON", cela confirme le sarcasme et devient fou et vous ignore pendant un certain temps (le temps sera déterminé par le niveau de sarcasme).
Kalle H.Väravas,
3
Je pense vraiment que vous voulez vous en tenir aux phrases parce que le sarcasme est une question de contexte, et il y a au moins quelques phrases qui sont plus susceptibles d'être utilisées avec sarcasme. "Ouais" n'est pas sarcastique, "Bien" n'est pas sarcastique, mais "Ouais, bien!" est probablement utilisé plus souvent de façon sarcastique que sincère.
Charles E. Grant,
6
Quant à la qualité des réponses ici, je dois dire que cela est en partie de votre responsabilité. Le traitement du langage naturel est un domaine bien connu qui pourrait vous fournir plusieurs techniques utiles, mais vous ne donnez aucune indication d'avoir fait des recherches pour rechercher des méthodes existantes. C'est un problème difficile, et pas quelque chose qui peut être utilement répondu en général dans un poste SO. Beaucoup, beaucoup de livres ont été remplis sur le thème du traitement du langage naturel.
Charles E. Grant,
43

<Sarcasme>

if(string.Contains("<Sarcasm>")) containsSarcasm = true;

</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.

Dave Nay
la source
3
-1 Je suis désolé, je ne sais pas pourquoi cette réponse obtient des votes positifs. Le code fourni est 100% sans rapport avec la question posée et la deuxième partie de la réponse, vous dites "je n'en ai aucune idée". Votre réponse est à 30% sur le sujet et n'aide pas vraiment ou ne donne aucune bonne direction.
Kalle H.Väravas
18
Cela fait l'objet d'un vote positif parce que l'affiche a souligné qu'il n'y avait aucun moyen pratique de le faire. Étant donné que les humains ne peuvent souvent pas détecter le sarcasme, il n'y a aucun moyen d'apprendre à une machine. En outre, le sarcasme est souvent véhiculé par le ton de la voix, et donc souvent mal compris dans la communication en ligne.
Andy Waite
1
@Andy Waite Oui bien sûr, vous avez raison. Comme je l'ai dit, la réponse est à 30% sur le sujet (même s'il a commencé à obtenir des votes lorsqu'il n'y avait pas de texte supplémentaire.) Pourtant, je n'accepterai pas cette réponse, car .. oui bien sûr, vous ne pouvez pas obtenir une correspondance à 100% .. Mais même un match à 50%? Cette réponse dit essentiellement: "Je ne comprends pas votre question, je pense que ce n'est pas possible, ça a l'air dur, arrêtez!" Je reçois principalement ces types de réponses uniquement dans les programmeurs, à côté de "Pourquoi faites-vous cela? Utilisez un cadre!" ..
Kalle H. Väravas
4
@Kalle, je suis d'accord avec vous. Cette réponse est en partie sarcasme, en partie «je ne sais pas» et en partie devinettes (30%? Vraiment? Pouvez-vous confirmer cela?). C'est totalement inutile et aurait au mieux dû être un commentaire.
Adam Lear
3
Fil de commentaires intéressant - apparemment, même les humains ne peuvent pas détecter le sarcasme (ou son absence) de manière fiable.
Piskvor a quitté le bâtiment le
11

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.

bdonlan
la source
Hmm, 77%? Cela semble être meilleur que la plupart des gens . (pas de sarcasme)
Piskvor a quitté le bâtiment le
@Piskvor, très probablement, mais je n'ai pas de statistiques à ce sujet. C'est une meilleure précision que l'audio au moins.
bdonlan
2

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

Asaf
la source
1

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.

stackoverflowuser2010
la source
1

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

dysoco
la source