Come insegnare a uno script per rilevare il sarcasmo? [chiuso]

11

Al momento sto sviluppando uno script divertente, che fondamentalmente corrisponde a frasi date e fornisce una risposta predefinita basata sui punti di corrispondenza. Puoi chiedere di recuperare alcune informazioni sulla base di feed live, eseguire attività, raccontare aneddoti o semplicemente chattare con lei.

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

Client: WHAT IS YOUR PROBLEM?
Kiku: DONT USE THAT TONE WITH ME!
Client: #### you
Kiku: why are you being so mean to me :/

Tuttavia, vorrei davvero aggiungere la funzione sarcasm. Quindi se scrivi qualcosa in sarcasmo, lei lo individuerà e risponderà di conseguenza. Ora questa è una parte difficile, Come insegni un copione, che sarcasmo è?

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

Aggiorna

Dato che questa domanda sta facendo un sacco di clamore, penso che le cose dovrebbero essere chiarite un po 'di più. È molto chiaro, che fare in modo che uno script riconosca completamente il sarcasmo è praticamente impossibile. Almeno in materia ragionevole. Tuttavia, credo che possa essere rilevata una certa quantità di sarcasmo possibile .

Al momento l'ho fatto finora, che il mio script 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 grande. E poi prima corrisponde, le cose semplici, come maiuscole e citate : THANKS you are so smart o oh you are so "SMART" .

Dato che la funzione principale degli script è quella di eseguire attività o recuperare informazioni, e dopo si chiederà se era questo che intendevi. Poi ho pensato, aggiungendo "grazie" come variabile speciale. Quindi yeah thanks o whatever thanks attiverà il sarcasmo possibile e lo script ti chiederà: "Riconosco il sarcasmo?" La soluzione migliore sarebbe quella di "scusa", altrimenti aggiungerà un punto di avviso e, se il limite viene raggiunto, inizierà a ignorarti.

Poiché questi algoritmi molto molto semplici sembrano funzionare, questa idea ha un futuro, ovviamente dopo un sacco di tuning e tweaking. Tuttavia, qualcuno molto più intelligente creerebbe un software open source con la stessa idea in mente. Quindi questa funzione potrebbe essere agganciata a un sacco di funzioni sul web. La cura del cliente sarebbe probabilmente di maggior beneficio, tuttavia, questo tipo di software potrebbe anche essere utilizzato per rilevare il contenuto "flaggable".

    
posta Kalle H. Väravas 12.09.2011 - 01:00
fonte

6 risposte

17

Se avessi un sistema di elaborazione del linguaggio naturale completo e un database di fatti al sistema IBM Watson, potresti essere in grado di contrassegnare alcune dichiarazioni come possibili sarcasmo. Ad esempio, "ho sentito che tua madre ha il cancro e sei stata licenziata!" "Sì, non è la vita meravigliosa!" potrebbe essere contrassegnato perché potrebbe riconoscere che il cancro e la perdita di un lavoro non sono generalmente descritti come esperienze positive.

Suppongo che tu non abbia le risorse per mettere insieme un sistema di classificazione Watson. Potresti mettere insieme un database di frasi sarcasche di uso comune e quindi utilizzare una sorta di algoritmo di corrispondenza testuale tra l'istruzione di destinazione e il database del sarcasmo. Devo indovinare che non sarà molto efficace perché tutte le frasi che vengono usate sarcasticamente sono usate sinceramente più frequentemente. Ad esempio "Questa è una bella X". di solito è usato sinceramente, ma a volte viene usato sarcasticamente.

Il sarcasmo è strettamente correlato all'inganno. Non è insolito per una persona che usa il sarcasmo negarlo quando viene messo in discussione, e la 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.

    
risposta data 12.09.2011 - 02:50
fonte
43

< Sarcasm >

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

< / Sarcasmo >

Onestamente, non ho idea di come procedere. Penso che solo il 30% delle persone nella vita reale "prende" il sarcasmo in primo luogo, quindi far sì che un computer lo riconosca e capisca che sembra un compito molto difficile.

Modifica Sulla base dei commenti al mio post originale, credo di aver illustrato perfettamente l'estrema difficoltà del compito che viene richiesto. Sì, la prima metà del mio post è stata sarcastica. Ho anche enfatizzato questo fatto usando un tag markup inventato. Pubblicando un commento sarcastico su una soluzione banale a un problema eccezionalmente difficile, e che il sarcasmo interpretato come "non utile" fa sorgere questa domanda:

Se non riesci a riconoscere il sarcasmo scritto, allora come stai andando a scrivere un algoritmo che lo riconosce?

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

    
risposta data 12.09.2011 - 01:08
fonte
11

Il problema del rilevamento del sarcasmo è un problema aperto nella linguistica computazionale: ti conviene cercare Google scholar di stackexchange per cose del genere Tuttavia, sono stati compiuti alcuni progressi in merito alla questione. Per il sarcasmo parlato , si può costruire un robusto riconoscitore usando "spettrale" e le caratteristiche contestuali " che (affermano gli autori) rileva il sarcasmo e un annotatore umano. Gli autori dell'articolo sostengono che il testo grezzo non è quindi sufficiente per rilevare il sarcasmo - anzi, hanno ottenuto risultati migliori ignorando le parole effettivamente pronunciate.

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

In ogni caso, questo è il filo conduttore della ricerca linguistica computazionale; non aspettarti che qualcuno ti dia una libsarcasm su un piatto d'argento. Avrai bisogno di grandi set di dati di addestramento e molto tempo libero per modificare il tuo rilevatore di sarcasmo - e anche allora, una precisione del 77% (come riportato nel documento SASI) non è sufficiente per rifiutare un post basato esclusivamente su un flag di sarcasmo.

    
risposta data 12.09.2011 - 05:49
fonte
2

Non penso 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 possono leggere ( "Ulteriori informazioni sulla pagina Recaptcha" ). Credo che il problema sia simile, nel senso che stai cercando di ottenere una macchina per capire qualcosa che gli esseri umani sono almeno migliori a fare già.

Immagina di avere le risorse per chiedere a milioni di persone di identificare il sarcasmo in un contesto di conversazione dattiloscritta. Immagina di poter chiedere a molte persone di sottoporti a te il momento esatto della conversazione quando il sarcasmo è stato realizzato e come poco della conversazione prima della realizzazione che sarebbe stato necessario contrassegnare quell'identificazione. Questo potrebbe essere memorizzato in un database, diciamo, a cui il tuo programma ha avuto accesso. Quindi, mentre l'utente stava scrivendo la conversazione, il database potrebbe essere filtrato per conversazioni "simili".

Come valutare la similarità è qualcosa su cui riflettere, ma credo che probabilmente esistano già delle ricerche già esistenti. Credo che sarebbe molto simile alla teoria alla base della correzione degli errori di ortografia. In ogni caso, probabilmente si giungerebbe a un valore probabilistico che la conversazione digitata sia effettivamente sarcastica, e ad un certo punto dovrebbe essere fornita una soglia.

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

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

-Asaf

    
risposta data 12.09.2011 - 05:08
fonte
1

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

    
risposta data 12.09.2011 - 04:30
fonte
1

I miei 2 centesimi:

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

Ma sarebbe un progetto davvero difficile, con lo sforzo usato in questo, potresti fare il meglio O.S. nel mondo di sicuro: P

    
risposta data 12.09.2011 - 11:46
fonte

Leggi altre domande sui tag