Come insegnare una sceneggiatura per rilevare il sarcasmo? [chiuso]


11

Attualmente sto creando uno script divertente, che fondamentalmente corrisponde a determinate frasi e fornisce una risposta predefinita basata sui punti di corrispondenza. Puoi chiedergli di recuperare alcune informazioni basate su feed live, eseguire attività, raccontare aneddoti o semplicemente chattare con lei.

Ho già un rilevamento integrato per parole chiave, blocco maiuscole o entrambi. Il programma ha un nome femminile e ho cercato di avvicinarmi il più possibile all'essere una ragazza-ragazza, secondo i termini logici (per esempio: tutti sanno che la maggior parte delle ragazze-ragazza impiega 700 ms per rispondere a una domanda, scherzando ovviamente). Quindi, ecco un piccolo esempio:

Cliente: QUAL È IL TUO PROBLEMA?
Kiku: NON USARE QUEL TONO CON ME!
Cliente: #### you
Kiku: perché sei così cattivo con me: /

Tuttavia, vorrei davvero aggiungere la funzione sarcasmo ad esso. Quindi se scrivi qualcosa in sarcasmo, allora lo rileverà e risponderà di conseguenza. Ora questa è una parte difficile, come insegni una sceneggiatura, cos'è il sarcasmo?

Per me più specifico. Quali sono le parole sarcastiche più comuni utilizzate oggi? O come ottenere quella statistica? Come posso far capire allo script il contesto della frase data?

AGGIORNARE

Dato che questa domanda sta diventando molto clamore, penso che le cose dovrebbero essere chiarite un po 'di più. È molto chiaro che fondamentalmente è impossibile realizzare una sceneggiatura per rilevare il sarcasmo. Almeno in una questione ragionevole. Tuttavia, credo che potrebbe essere rilevata una certa quantità di possibile sarcasmo.

Al momento sono arrivato così lontano che la mia sceneggiatura può rilevare un sarcasmo molto limitato. Ho predefinito alcune parole sarcastiche comuni (tuttavia, da sole sono inutili). Ad esempio: come, qualunque cosa, sì, giusto e fantastico. E poi prima corrisponde, le cose semplici, come maiuscole e virgolette: THANKS you are so smarto oh you are so "SMART".

Dal momento che la funzione principale degli script è di eseguire attività o recuperare informazioni, e in seguito chiederà se era quello che intendevi. Poi ho pensato, aggiungendo "grazie" come variabile speciale. Quindi yeah thankso whatever thanksattiverà il possibile sarcasmo e la sceneggiatura ti chiederà: "Rilevo il sarcasmo?" La tua scommessa migliore sarebbe quella di dire "scusa", altrimenti aggiungerà un punto di avvertimento e se il limite viene raggiunto, inizierà a ignorarti.

Dato che questi algoritmi molto semplici sembrano funzionare davvero, questa idea ha un futuro, ovviamente dopo un sacco di messa a punto e messa a punto. Tuttavia, qualcuno è molto più intelligente realizzerebbe un software open source con la stessa idea in mente. Quindi questa funzione potrebbe essere agganciata a molte funzioni sul web. L'assistenza clienti probabilmente trarrebbe maggiori benefici, tuttavia, questo tipo di software potrebbe anche essere utilizzato per rilevare il contenuto "flaggable".


14
Fino a quando la tua sceneggiatura non può effettivamente capire cosa viene detto (piuttosto che raccogliere parole chiave), penso che sia impossibile cogliere la maggior parte degli scenari di sarcasmo
Rob

26
@Kalle Cerchiamo di essere chiari qui. Il sarcasmo è uno dei dispositivi più sottili e avanzati nella lingua parlata. Anche se sei un madrelingua inglese, pienamente in grado di cogliere le sottigliezze, ad esempio il tono della voce e qualsiasi informazione contestuale pertinente, non riesci regolarmente a rilevare il sarcasmo. I non madrelingua non hanno quasi nessuna possibilità. Portalo al testo e anche i madrelingua non hanno quasi alcuna possibilità. E vuoi che i computer, che lottano per comprendere debolmente anche le frasi più semplici, risolvano questo problema? Lascia questo a qualcuno con una vita nel discorso e nell'analisi del testo.
doppelgreener,

17
Far riconoscere una sceneggiatura al sarcasmo? È davvero utile;)
zenzelezz,

12
Dai - nemmeno Sheldon Cooper non riesce a rilevare il sarcasmo ...
Paul R

3
Non credo che questa domanda avrebbe dovuto essere chiusa, soprattutto non come "non costruttiva". In questo momento darei un voto di riapertura se non fosse vincolante, ma penso che questa domanda meriti alcuni voti di riapertura, specialmente con l'ultima modifica.
Adam Lear

Risposte:


17

Se avessi un sistema di elaborazione del linguaggio naturale completo e un database di fatti relativi al sistema IBM Watson, potresti essere in grado di contrassegnare alcune affermazioni come possibile sarcasmo. Ad esempio, "Ho sentito che tua madre ha il cancro e sei appena stato licenziato!" "Sì, la vita non è meravigliosa!" potrebbe essere segnalato perché potrebbe riconoscere che ottenere il cancro e perdere un lavoro non sono generalmente descritti come esperienze positive.

Presumo che tu non abbia le risorse per mettere insieme un sistema di valutazione Watson. È possibile mettere insieme un database di frasi sarcastiche comunemente utilizzate e quindi utilizzare una sorta di algoritmo di corrispondenza del testo tra l'istruzione target e il database sarcasmo. Devo supporre che non sarà molto efficace perché tutte le frasi usate sarcasticamente sono usate sinceramente più frequentemente. Ad esempio "Questa è una bella X." di solito è usato sinceramente, ma a volte è usato sarcasticamente.

Il sarcasmo è strettamente legato all'inganno. Non è insolito per una persona che usa il sarcasmo negarlo quando viene sfidato su di esso e la loro scelta delle parole rende possibile la negazione. Sospetto che ciò significhi che un buon rilevatore di sarcasmo è probabilmente un problema tanto difficile quanto un programma di conversazione che supera il test di Turing.


1
Grazie per la tua risposta. Questa risposta è decisamente migliore di quella sopra. Penso che la creazione di un database di frasi reali diventerà troppo grande. Tuttavia un database di parole + alcuni altri metodi, potrebbe effettivamente farlo funzionare (non al 100%, ma di nuovo non allo 0%). Sto programmando di aggiungere un passaggio di verifica. Se la sceneggiatura rileva un leggero livello di sarcasmo, chiederà: era quel sarcasmo? Se rispondi: "OH NO", allora conferma il sarcasmo e in realtà ti arrabbi e ti ignora per qualche tempo (il tempo sarà determinato dal livello di sarcasmo).
Kalle H. Väravas,

3
Penso davvero che tu voglia attenersi alle frasi perché il sarcasmo è tutto basato sul contesto e ci sono almeno alcune frasi che hanno maggiori probabilità di essere usate sarcasticamente. "Sì" non è sarcastico, "Giusto" non è sarcastico, ma "Sì, giusto!" è probabilmente usato più spesso sarcasticamente che sinceramente.
Charles E. Grant,

6
Per quanto riguarda la qualità delle risposte qui, devo dire che questa è in parte una tua responsabilità. L'elaborazione del linguaggio naturale è un campo ben noto che potrebbe fornirti diverse tecniche utili, ma non fornisci alcuna indicazione di aver fatto alcuna ricerca per cercare metodi esistenti. È un problema difficile, e non qualcosa a cui si può utilmente rispondere in generale in un post SO. Molti, molti libri sono stati riempiti sul tema dell'elaborazione del linguaggio naturale.
Charles E. Grant,

43

<Sarcasmo>

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

</ Sarcasmo>

Onestamente, non ho idea di come procedere. Penso che solo il 30% circa delle persone nella vita reale "ottenga" il sarcasmo in primo luogo, quindi far riconoscere un computer e capirlo sembra un compito molto difficile.

Modifica In base ai commenti al mio post originale, credo di aver perfettamente illustrato l'estrema difficoltà del compito che mi viene chiesto. Sì, la prima metà del mio post è stata sarcastica. Ho anche sottolineato questo fatto usando un tag markup inventato. Pubblicando un commento sarcastico su una banale soluzione a un problema eccezionalmente difficile, e quel sarcasmo interpretato come "inutile" solleva questa domanda:

Se non riesci a riconoscere il sarcasmo scritto, allora come hai intenzione di scrivere un algoritmo che lo riconosce?

Oh, e Anna se qualcuno include il termine "Penso ..." nella sua frase, di solito indica che si tratta di un'opinione che viene dichiarata, non necessariamente ricercata.


3
-1 Mi dispiace, non sono sicuro del motivo per cui questa risposta sta ottenendo voti. Il codice fornito è irrilevante al 100% per la domanda in corso e la seconda parte della risposta che stai dicendo "non ne ho idea". La tua risposta è del 30% sull'argomento e non aiuta davvero né dà alcuna buona direzione.
Kalle H. Väravas,

18
Viene valutato perché il poster ha sottolineato che non esiste un modo pratico per farlo. Poiché gli umani spesso non sono in grado di rilevare il sarcasmo, non è possibile insegnare a una macchina. Inoltre, il sarcasmo viene spesso trasmesso dal tono di voce e quindi spesso frainteso nella comunicazione online.
Andy Waite,

1
@Andy Waite Sì, certo, hai ragione. Come ho detto, la sua risposta è del 30% sull'argomento (anche se ha iniziato a ottenere voti positivi quando non c'era testo aggiuntivo). Tuttavia, non accetterò quella risposta, perché .. sì, certo, non puoi ottenere una corrispondenza del 100% .. Ma anche una partita del 50%? Questa risposta sta sostanzialmente dicendo "Non capisco la tua domanda, penso che non sia possibile, sembra difficile, basta!" Per lo più ottengo questi tipi di risposte solo nei programmatori, accanto a "Perché stai facendo questo? Usa un framework!" ..
Kalle H. Väravas,

4
@Kalle sono d'accordo con te. Questa risposta è in parte sarcasmo, in parte "Non lo so" e in parte congetture (30%? Davvero? Riesci a sostenerlo?). È del tutto inutile e nella migliore delle ipotesi dovrebbe essere stato un commento.
Adam Lear

3
Interessante thread di commenti - apparentemente anche gli umani non sono in grado di rilevare il sarcasmo (o la loro mancanza) in modo affidabile.
Piskvor lasciò l'edificio il

11

Il problema del rilevamento del sarcasmo è un problema aperto nella linguistica computazionale: sarebbe meglio essere cercati su Google Scholar che su StackExchange per tali cose. Tuttavia, sono stati compiuti alcuni progressi sulla questione. Per il sarcasmo parlato , un robusto riconoscitore può essere costruito usando "caratteristiche spettrali e contestuali" che (sostengono gli autori) rilevano il sarcasmo e un annotatore umano. Gli autori dell'articolo sostengono che il testo non è quindi sufficiente per rilevare il sarcasmo, anzi, hanno ottenuto risultati migliori ignorando le parole stesse che vengono dette.

Tsur et al. hanno anche riportato alcuni risultati interessanti nel rilevamento testuale del sarcasmo proprio l'anno scorso con il loro algoritmo SASI . Riferiscono anche alcuni risultati di follow-up aggiuntivi in un altro documento.

In ogni caso, questo è all'avanguardia nella ricerca linguistica computazionale; non aspettarti che nessuno ti dia un libsarcasmo su un piatto d'argento. Avrai bisogno di grandi set di dati di allenamento e molto tempo libero per modificare il tuo rilevatore di sarcasmo - e anche in questo caso, una precisione del 77% (come riportato nel documento SASI) non è sufficiente per rifiutare un post basato esclusivamente su una bandiera del sarcasmo.


Hmm, 77%? Sembra essere migliore della maggior parte delle persone . (nessun sarcasmo previsto)
Piskvor lasciò l'edificio il

@Piskvor, molto probabilmente, ma non ho statistiche al riguardo. Almeno è una precisione migliore di quella audio.
bdonlan,

2

Non credo che questa risposta sia un metodo di approccio molto realistico, ma se tu avessi le risorse per farlo credo che sarebbe possibile. Considera il progetto reCaptcha di google che utilizza gli esseri umani per decifrare le parole che i computer non sono in grado di leggere ( "Ulteriori informazioni sulla pagina di Recaptcha" ). Credo che il problema sia simile, in quanto stai cercando di ottenere una macchina per capire qualcosa che gli umani sono almeno più bravi a fare già.

Immagina di avere le risorse per chiedere a milioni di persone di identificarti con il sarcasmo in un contesto di conversazione tipizzato. Immagina di poter chiedere a molte persone di presentarti il ​​momento esatto della conversazione in cui il sarcasmo è stato realizzato e almeno una parte della conversazione prima della realizzazione che si dovrebbe contrassegnare quell'identificazione. Questo potrebbe essere memorizzato in un database, diciamo, al quale il tuo programma ha avuto accesso. Quindi, mentre l'utente ti scriveva la conversazione, il database poteva essere filtrato per conversazioni "simili".

Il modo in cui valutare la somiglianza è qualcosa a cui pensare, ma credo che probabilmente ci siano già ricerche in atto. Credo che sarebbe molto simile alla teoria alla base della correzione degli errori di ortografia. In entrambi i casi, si tratterebbe probabilmente di un valore probabilistico che la conversazione che si sta digitando è in effetti sarcastica, e ad un certo punto dovrebbe essere prevista una soglia.

Mi piace anche la tua idea di presentare la domanda "Era quel sarcasmo?" all'utente e quindi utilizzare la sua risposta per raggiungere una decisione più accurata.

Spero che la mia risposta non sia stata uno spreco completo e ti auguro buona fortuna in questo sforzo.

-Asaf


1

Il rilevamento del sarcasmo nella linguistica computazionale (ovvero l'elaborazione del linguaggio naturale) è di per sé un problema estremamente difficile. È fondamentalmente un problema di classificazione in cui un modello deve essere addestrato per primo. Un problema simile per la ricerca di doppi sensi (file PDF) è stato recentemente studiato e pubblicato. Le tecniche per entrambi i problemi sono comparabili.


1

I miei 2 centesimi:

Chiedi a uno psicologo come riconoscere il sarcasmo nelle frasi, con quelle informazioni confrontale con l'input.

Ma sarebbe un progetto davvero difficile, con lo sforzo utilizzato in questo, potresti sicuramente fare il miglior sistema operativo al mondo: P

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.