Wie lehre ich ein Skript, um Sarkasmus zu erkennen? [geschlossen]

11

Ich baue gerade ein lustiges Skript, das im Wesentlichen mit bestimmten Phrasen übereinstimmt und eine vordefinierte Antwort basierend auf den Übereinstimmungspunkten gibt. Sie können ihn bitten, einige Informationen basierend auf Live-Feeds abzurufen, Aufgaben auszuführen, Anekdoten zu erzählen oder einfach mit ihr zu chatten.

Ich habe bereits eine integrierte Erkennung für Badwords, Feststelltaste oder beides. Das Programm hat einen Mädchennamen und ich habe versucht, logischerweise so nah wie möglich an ein Mädchen heranzukommen (zum Beispiel: Jeder weiß, dass die meisten Mädchen 700 ms brauchen, um auf eine Frage zu antworten, natürlich im Scherz). Hier ist ein kleines Beispiel:

Kunde: WAS IST IHR PROBLEM?
Kiku: Benutze diesen Ton nicht mit mir!
Kunde: #### du
Kiku: warum bist du so gemein zu mir: /

Ich möchte jedoch wirklich eine Sarkasmus-Funktion hinzufügen. Wenn Sie also etwas in Sarkasmus schreiben, wird sie es erkennen und entsprechend reagieren. Das ist ein kniffliger Teil. Wie bringt man ein Drehbuch bei, was ist Sarkasmus?

Für mich genauer. Was sind die heute am häufigsten verwendeten sarkastischen Wörter? Oder wie bekommt man diese Statistik? Wie kann ich dem Skript den Kontext der angegebenen Phrase verständlich machen?

AKTUALISIEREN

Da diese Frage viel Hype bekommt, denke ich, dass die Dinge ein bisschen mehr geklärt werden sollten. Es ist sehr klar, dass es grundsätzlich unmöglich ist, ein Skript dazu zu bringen, Sarkasmus vollständig zu erkennen. Zumindest in vernünftiger Angelegenheit. Ich glaube jedoch, dass ein gewisses Maß an möglichem Sarkasmus festgestellt werden könnte.

Ich habe es derzeit so weit gebracht, dass mein Skript einen sehr begrenzten Sarkasmus erkennen kann. Ich habe einige gebräuchliche sarkastische Wörter vordefiniert (allein sind sie jedoch nutzlos). Zum Beispiel: wie, was auch immer, ja, richtig und großartig. Und dann passt es zuerst zu den einfachen Dingen, wie Großbuchstaben und zitiert: THANKS you are so smartoder oh you are so "SMART".

Da die Hauptfunktion des Skripts darin besteht, Aufgaben zu erledigen oder Informationen und Nachworte abzurufen, werden Sie gefragt, ob Sie dies gemeint haben. Dann dachte ich und fügte "Danke" als spezielle Variable hinzu. Also yeah thanksoder whatever thankswird der mögliche Sarkasmus ausgelöst, und das Skript wird Sie fragen: "Erkenne ich Sarkasmus?" Am besten sagen Sie dann "Entschuldigung", sonst wird ein Warnpunkt hinzugefügt, und wenn das Limit erreicht ist, werden Sie ignoriert.

Da diese sehr sehr einfachen Algorithmen tatsächlich zu funktionieren scheinen, hat diese Idee eine Zukunft, natürlich nach vielen Optimierungen und Optimierungen. Ist jedoch jemand, der viel schlauer ist, würde er eine Open-Source-Software mit der gleichen Idee entwickeln. Dann könnte diese Funktion mit vielen Funktionen im Web verknüpft werden. Die Kundenbetreuung würde wahrscheinlich am meisten davon profitieren, diese Art von Software könnte jedoch auch zur Erkennung von "Flaggable" -Inhalten verwendet werden.

Kalle H. Väravas
quelle
14
Bis Ihr Skript tatsächlich verstehen kann , was gesagt wird (anstatt Schlüsselwörter aufzunehmen), denke ich, dass es unmöglich ist, die meisten Sarkasmus-Szenarien
Rob
26
@Kalle Lass uns hier klar sein. Sarkasmus ist eines der subtilsten und fortschrittlichsten Geräte in der gesprochenen Sprache. Selbst wenn Sie ein englischer Muttersprachler sind und in der Lage sind, Feinheiten wie den Tonfall und relevante Kontextinformationen zu erfassen, werden Sie Sarkasmus regelmäßig nicht erkennen. Nicht-Muttersprachler haben fast keine Chance. Nehmen Sie es zu Text und selbst die Muttersprachler haben fast keine Chance. Und Sie möchten, dass Computer, die selbst die einfachsten Sätze nur schwer verstehen, dieses Problem lösen? Überlassen Sie dies jemandem mit einer lebenslangen Sprach- und Textanalyse.
Doppelgreener
17
Ein Skript Sarkasmus erkennen lassen? Das ist wirklich nützlich;)
Zenzelezz
12
Komm schon - sogar Sheldon Cooper kann Sarkasmus nicht erkennen ...
Paul R
3
Ich denke nicht, dass diese Frage hätte geschlossen werden sollen, besonders nicht als "nicht konstruktiv". Ich würde jetzt eine Wiedereröffnungsabstimmung abgeben, wenn sie nicht bindend wäre, aber ich denke, diese Frage verdient ein paar Wiedereröffnungsstimmen, insbesondere mit der neuesten Bearbeitung.
Adam Lear

Antworten:

17

Wenn Sie über ein vollständiges Verarbeitungssystem für natürliche Sprachen und eine Datenbank mit Fakten wie das IBM Watson-System verfügen, können Sie möglicherweise einige Aussagen als möglichen Sarkasmus kennzeichnen. Zum Beispiel: "Ich habe gehört, deine Mutter hat Krebs und du wurdest gerade gefeuert!" "Ja, ist das Leben nicht wunderbar!" könnte markiert werden, weil es erkennen könnte, dass Krebserkrankungen und der Verlust eines Arbeitsplatzes im Allgemeinen nicht als positive Erfahrungen beschrieben werden.

Ich gehe davon aus, dass Sie nicht über die Ressourcen verfügen, um ein Watson-Notensystem zusammenzustellen. Sie könnten eine Datenbank mit häufig verwendeten sarkastischen Phrasen zusammenstellen und dann eine Art Textabgleichalgorithmus zwischen der Zielanweisung und der Sarkasmusdatenbank verwenden. Ich muss vermuten, dass es nicht sehr effektiv ist, weil alle Sätze, die sarkastisch verwendet werden, aufrichtig häufiger verwendet werden. Zum Beispiel "Das ist ein schönes X." wird normalerweise aufrichtig verwendet, wird aber manchmal sarkastisch verwendet.

Sarkasmus ist sehr eng mit Täuschung verbunden. Es ist nicht ungewöhnlich, dass eine Person, die Sarkasmus verwendet, dies leugnet, wenn sie dazu aufgefordert wird, und ihre Wortwahl ermöglicht die Verweigerung. Ich vermute, dies bedeutet, dass ein guter Sarkasmusdetektor wahrscheinlich genauso schwierig ist wie ein Konversationsprogramm, das den Turing-Test besteht.

Charles E. Grant
quelle
1
Danke für deine Antwort. Diese Antwortqualität ist definitiv besser als die oben genannte. Ich denke, das Erstellen einer Datenbank mit tatsächlichen Phrasen wird zu groß. Eine Datenbank mit Wörtern + einigen anderen Methoden könnte jedoch tatsächlich funktionieren (nicht 100%, aber auch nicht 0%). Ich plane, einen Überprüfungsschritt hinzuzufügen. Wenn das Skript ein leichtes Maß an Sarkasmus feststellt, wird gefragt: War das Sarkasmus? Wenn Sie antworten: "OH NEIN", dann bestätigt es den Sarkasmus und wird tatsächlich wütend und ignoriert Sie für einige Zeit (die Zeit wird durch das Ausmaß des Sarkasmus bestimmt).
Kalle H. Väravas
3
Ich denke wirklich, dass Sie sich an die Sätze halten möchten, weil es beim Sarkasmus nur um den Kontext geht und es zumindest einige Sätze gibt, die eher sarkastisch verwendet werden. "Ja" ist nicht sarkastisch, "Richtig" ist nicht sarkastisch, aber "Ja, richtig!" wird wahrscheinlich öfter sarkastisch als aufrichtig verwendet.
Charles E. Grant
6
Was die Qualität der Antworten hier betrifft, muss ich sagen, dass dies teilweise in Ihrer Verantwortung liegt. Die Verarbeitung natürlicher Sprache ist ein bekanntes Gebiet, das Ihnen verschiedene nützliche Techniken bieten könnte, aber Sie geben keinen Hinweis darauf, dass Sie Nachforschungen angestellt haben, um vorhandene Methoden nachzuschlagen. Es ist ein schwieriges Problem und nicht etwas, das im Allgemeinen in einem SO-Beitrag sinnvoll beantwortet werden kann. Viele, viele Bücher wurden zum Thema Verarbeitung natürlicher Sprache gefüllt.
Charles E. Grant
43

<Sarkasmus>

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

</ Sarkasmus>

Ehrlich gesagt habe ich keine Ahnung, wie ich das anstellen soll. Ich denke, nur etwa 30% der Menschen im wirklichen Leben "bekommen" Sarkasmus. Es klingt also nach einer sehr schwierigen Aufgabe, einen Computer dazu zu bringen, ihn zu erkennen und zu verstehen.

Bearbeiten Aufgrund der Kommentare zu meinem ursprünglichen Beitrag glaube ich, dass ich die extreme Schwierigkeit der gestellten Aufgabe perfekt dargestellt habe. Ja, die erste Hälfte meines Beitrags war sarkastisch. Ich habe diese Tatsache sogar durch die Verwendung eines erfundenen Markup-Tags betont. Durch die Veröffentlichung eines sarkastischen Kommentars über eine triviale Lösung eines außergewöhnlich schwierigen Problems und die Interpretation dieses Sarkasmus als "nicht hilfreich" wird folgende Frage aufgeworfen:

Wenn Sie geschriebenen Sarkasmus nicht erkennen können, wie werden Sie dann einen Algorithmus schreiben, der ihn erkennt?

Oh, und Anna, wenn jemand den Begriff "Ich denke ..." in seinen Satz aufnimmt, deutet dies normalerweise darauf hin, dass es sich um eine Meinung handelt, die angegeben wird, nicht unbedingt um eine harte Tatsache.

Dave Nay
quelle
3
-1 Es tut mir leid, ich bin mir nicht sicher, warum diese Antwort positiv bewertet wird. Der bereitgestellte Code ist zu 100% irrelevant für die vorliegende Frage und der zweite Teil der Antwort lautet "Ich habe keine Ahnung". Ihre Antwort ist zu 30% themenbezogen und hilft nicht wirklich oder gibt keine gute Richtung vor.
Kalle H. Väravas
18
Es wird positiv bewertet, weil das Poster darauf hingewiesen hat, dass es keinen praktischen Weg gibt, dies zu tun. Da Menschen Sarkasmus oft nicht erkennen können, gibt es keine Möglichkeit, eine Maschine zu unterrichten. Außerdem wird Sarkasmus oft durch den Tonfall vermittelt und daher in der Online-Kommunikation oft missverstanden.
Andy Waite
1
@ Andy Waite Ja natürlich, du bist richtig. Wie gesagt, seine Antwort ist zu 30% themenbezogen (obwohl er anfing, positive Stimmen zu erhalten, als es keinen zusätzlichen Text gab). Trotzdem akzeptiere ich diese Antwort nicht, weil ... ja, natürlich können Sie nicht 100% übereinstimmen. Aber auch eine 50% ige Übereinstimmung? Diese Antwort lautet im Grunde: "Ich verstehe deine Frage nicht, ich denke, es ist nicht möglich. Klingt schwer. Hör einfach auf!" Ich bekomme diese Art von Antworten meistens nur in Programmierern neben "Warum machst du das? Benutze ein Framework!".
Kalle H. Väravas
4
@Kalle Ich stimme dir zu. Diese Antwort besteht zum Teil aus Sarkasmus, zum Teil "Ich weiß nicht" und zum Teil aus Vermutungen (30%? Wirklich? Können Sie das belegen?). Es ist völlig wenig hilfreich und hätte bestenfalls ein Kommentar sein sollen.
Adam Lear
3
Interessanter Kommentarthread - anscheinend können sogar Menschen Sarkasmus (oder dessen Fehlen) nicht zuverlässig erkennen.
Piskvor verließ das Gebäude
11

Das Problem der Sarkasmuserkennung ist ein offenes Problem in der Computerlinguistik. Wenn Sie Google Scholar besser durchsuchen als den Stapelaustausch, sollten Sie nach solchen Dingen suchen . In diesem Bereich wurden jedoch einige Fortschritte erzielt. Für gesprochenen Sarkasmus kann ein robuster Erkenner unter Verwendung von "spektralen und kontextuellen Merkmalen" erstellt werden , die (die Autoren behaupten) Sarkasmus sowie einen menschlichen Annotator erkennen. Die Autoren des Papiers behaupten, dass der Rohtext daher nicht ausreicht, um Sarkasmus zu erkennen - tatsächlich haben sie bessere Ergebnisse erzielt, indem sie die tatsächlich gesprochenen Wörter ignoriert haben .

Tsur et al. haben erst letztes Jahr mit ihrem SASI-Algorithmus einige interessante Ergebnisse bei der Erkennung von Textsarkasmus gemeldet . Sie berichten auch über einige zusätzliche Follow-up-Ergebnisse in einem anderen Artikel.

In jedem Fall ist dies der neueste Stand der rechnergestützten Sprachforschung. Erwarten Sie nicht, dass Ihnen jemand einen Libsarkasmus auf einem Silbertablett gibt. Sie benötigen große Trainingsdatensätze und viel Freizeit, um Ihren Sarkasmusdetektor zu optimieren - und selbst dann reicht eine Genauigkeit von 77% (wie im SASI-Papier angegeben) nicht aus, um einen Beitrag abzulehnen, der ausschließlich auf einem Sarkasmus-Flag basiert.

bdonlan
quelle
Hmm, 77%? Das scheint besser zu sein als die meisten Menschen . (kein Sarkasmus beabsichtigt)
Piskvor verließ das Gebäude
@Piskvor, möglicherweise, aber ich habe keine Statistiken darüber. Zumindest ist es präziser als das Audio.
Bdonlan
2

Ich denke nicht, dass diese Antwort eine sehr realistische Methode ist, aber wenn Sie die Ressourcen dazu hätten, glaube ich, dass es möglich wäre. Betrachten Sie das reCaptcha-Projekt von Google, bei dem Menschen Wörter entschlüsseln, die Computer nicht lesen können ( "Weitere Informationen zur Recaptcha-Seite" ). Ich glaube, das Problem ist insofern ähnlich, als Sie versuchen, eine Maschine dazu zu bringen, etwas herauszufinden, was Menschen zumindest schon besser können .

Stellen Sie sich vor, Sie hätten die Ressourcen, um Millionen von Menschen zu bitten, Sarkasmus in einem typisierten Konversationskontext für Sie zu identifizieren. Stellen Sie sich vor, Sie könnten so viele Leute bitten, sich genau zu dem Zeitpunkt im Gespräch zu melden, an dem Sarkasmus erkannt wurde, und ebenso wenig von dem Gespräch vor der Erkenntnis, dass man diese Identifikation markieren müsste. Dies könnte in einer Datenbank gespeichert werden, auf die Ihr Programm Zugriff hatte. Während der Benutzer die Konversation für Sie eingab, konnte die Datenbank nach "ähnlichen" Konversationen gefiltert werden.

Wie man Ähnlichkeit bewertet, ist etwas, über das man nachdenken muss, aber eines, von dem ich glaube, dass es wahrscheinlich bereits Forschung gibt. Ich glaube, es würde der Theorie hinter Rechtschreibfehlerkorrekturen sehr ähnlich sein. In beiden Fällen würde es wahrscheinlich zu einem probabilistischen Wert kommen, dass das getippte Gespräch tatsächlich sarkastisch ist und irgendwann ein Schwellenwert angegeben werden müsste.

Ich mag auch Ihre Idee, die Frage "War das Sarkasmus?" an den Benutzer und verwenden dann ihre Antwort, um eine genauere Entscheidung zu treffen.

Ich hoffe, meine Antwort war keine völlige Verschwendung und ich wünsche Ihnen viel Glück bei diesem Unterfangen.

-Asaf

Asaf
quelle
1

Die Erkennung von Sarkasmus in der Computerlinguistik (auch bekannt als Verarbeitung natürlicher Sprache) ist ein äußerst schwieriges Problem. Grundsätzlich handelt es sich um ein Klassifizierungsproblem, bei dem ein Modell zuerst trainiert werden muss. Ein ähnliches Problem bei der Suche nach Doppeldeutigkeiten (PDF-Datei) wurde kürzlich untersucht und veröffentlicht. Die Techniken für beide Probleme sind vergleichbar.

stackoverflowuser2010
quelle
1

Meine 2 Cent:

Fragen Sie einen Psychologen, wie man Sarkasmus in Phrasen erkennt. Vergleichen Sie diese Informationen mit den Eingaben.

Aber es wäre ein wirklich schwieriges Projekt, mit dem Aufwand könnten Sie mit Sicherheit das beste Betriebssystem der Welt machen: P.

Dysoco
quelle