Bagaimana cara mengajar naskah untuk mendeteksi sarkasme? [Tutup]

11

Saat ini saya sedang membuat skrip yang menyenangkan, yang pada dasarnya cocok dengan frasa yang diberikan dan memberikan respons yang telah ditentukan berdasarkan pada match-point. Anda dapat memintanya untuk mengambil beberapa informasi berdasarkan umpan langsung, menjalankan tugas, memberi tahu anekdot atau hanya mengobrol dengannya.

Saya sudah memiliki deteksi bawaan untuk badwords, caps lock, atau keduanya. Program ini memiliki nama perempuan dan saya berusaha sedekat mungkin untuk menjadi seorang gadis-gadis, pada istilah logika (misalnya: semua orang tahu bahwa sebagian besar gadis-gadis suka mengambil 700ms untuk menanggapi pertanyaan, tentu saja bercanda). Jadi, inilah sedikit contohnya:

Klien: APA MASALAH ANDA?
Kiku: JANGAN GUNAKAN BAHWA DENGAN SAYA!
Klien: #### Anda
Kiku: mengapa Anda begitu jahat padaku: /

Namun, saya benar-benar ingin menambahkan fitur sarkasme ke dalamnya. Jadi jika Anda menulis sesuatu dengan sarkasme, maka dia akan mendeteksi dan meresponsnya. Sekarang ini adalah bagian yang sulit, Bagaimana Anda mengajar naskah, apa itu sarkasme?

Bagi saya lebih spesifik. Apa kata sarkastik yang paling umum digunakan saat ini? Atau bagaimana cara mendapatkan statistik itu? Bagaimana saya bisa membuat naskah memahami konteks kalimat yang diberikan?

MEMPERBARUI

Karena pertanyaan ini semakin banyak gembar-gembor, saya pikir hal-hal harus dihapus sedikit lebih. Sangat jelas, bahwa membuat naskah sepenuhnya mendeteksi sarkasme pada dasarnya tidak mungkin. Setidaknya dalam hal yang masuk akal. Namun, saya percaya bahwa sejumlah kemungkinan sarkasme dapat dideteksi.

Saat ini saya telah membuatnya sejauh ini, sehingga skrip saya dapat mendeteksi sarkasme yang sangat terbatas. Saya telah menetapkan beberapa kata-kata sarkastik yang umum (namun, hanya saja kata-kata itu tidak berguna). Misalnya: seperti, apa pun, ya, benar dan hebat. Dan kemudian pertama cocok, hal-hal sederhana, seperti huruf besar dan dikutip: THANKS you are so smartatau oh you are so "SMART".

Karena fungsi utama skrip adalah untuk melakukan tugas atau mengambil informasi, dan kata penutup itu akan menanyakan apakah itu yang Anda maksudkan. Kemudian saya berpikir, menambahkan "terima kasih" sebagai variabel khusus. Jadi yeah thanksatau whatever thanksakan memicu kemungkinan sarkasme, dan skrip akan bertanya kepada Anda: "Apakah saya mendeteksi sarkasme?" Taruhan terbaik Anda adalah dengan mengatakan "maaf", jika tidak maka akan menambah titik peringatan dan jika batas tercapai - itu akan mulai mengabaikan Anda.

Karena algoritma yang sangat sederhana ini tampaknya benar-benar berfungsi, maka ide ini memiliki masa depan, tentu saja setelah banyak penyetelan dan penyesuaian. Namun, seseorang yang jauh lebih pintar akan membuat perangkat lunak open-source dengan ide yang sama dalam pikiran. Maka fitur ini dapat dikaitkan dengan banyak fungsi di web. Layanan pelanggan mungkin akan mendapat manfaat paling besar, namun, perangkat lunak jenis ini juga dapat digunakan untuk mendeteksi konten yang "dapat di-flag".

Kalle H. Väravas
sumber
14
Sampai skrip Anda benar-benar dapat memahami apa yang dikatakan (daripada mengambil kata kunci), saya pikir tidak mungkin untuk menangkap sebagian besar skenario sarkasme
Rob
26
@ Kalle Mari kita perjelas di sini. Sarkasme adalah salah satu perangkat paling halus dan canggih dalam bahasa lisan. Bahkan jika Anda seorang penutur asli bahasa Inggris, sepenuhnya mampu menangkap seluk-beluk misalnya nada suara dan informasi kontekstual yang relevan, Anda akan secara teratur gagal mendeteksi sarkasme. Penutur non-pribumi hampir tidak memiliki peluang apa pun. Bawa ke teks dan bahkan penutur asli hampir tidak ada kesempatan. Dan Anda ingin komputer, yang berjuang untuk memahami kalimat yang paling sederhana sekalipun, untuk menyelesaikan masalah ini? Serahkan ini pada seseorang dengan analisis pidato dan teks seumur hidup.
doppelgreener
17
Buat skrip mengenali sarkasme? Itu sangat berguna;)
zenzelezz
12
Ayo - bahkan Sheldon Cooper tidak dapat mendeteksi sarkasme ...
Paul R
3
Saya tidak berpikir pertanyaan ini seharusnya sudah ditutup, terutama bukan sebagai "tidak konstruktif". Saya akan memberikan suara terbuka kembali sekarang jika tidak mengikat, tetapi saya pikir pertanyaan ini layak mendapatkan beberapa suara terbuka kembali terutama dengan suntingan terakhir.
Adam Lear

Jawaban:

17

Jika Anda memiliki sistem pemrosesan bahasa alami lengkap dan basis data fakta ala sistem IBM Watson, Anda mungkin dapat menandai beberapa pernyataan sebagai kemungkinan sarkasme. Misalnya, "Saya mendengar ibumu menderita kanker dan Anda baru saja dipecat!" "Ya, bukankah hidup ini indah!" dapat ditandai karena dapat mengenali bahwa mendapatkan kanker dan kehilangan pekerjaan umumnya tidak digambarkan sebagai pengalaman positif.

Saya berasumsi Anda tidak memiliki sumber daya untuk mengumpulkan sistem nilai Watson. Anda bisa menyusun database frasa sarkastik yang umum digunakan, dan kemudian menggunakan semacam algoritma pencocokan teks antara pernyataan target dan database sarkasme. Saya harus menebak bahwa itu tidak akan sangat efektif karena semua frasa yang digunakan secara sarkastik digunakan dengan lebih tulus. Misalnya "Itu X yang bagus." biasanya digunakan dengan tulus, tetapi kadang-kadang digunakan secara sarkastik.

Sarkasme sangat erat kaitannya dengan penipuan. Ini tidak biasa bagi seseorang yang menggunakan sarkasme untuk menyangkalnya ketika ditentang, dan pilihan kata-kata mereka membuat penolakan mungkin terjadi. Saya menduga ini berarti bahwa pendeteksi sarkasme yang baik mungkin merupakan masalah yang sama sulitnya dengan program percakapan yang lulus tes Turing.

Charles E. Grant
sumber
1
Terima kasih atas jawaban anda. Kualitas jawaban ini jelas lebih baik daripada yang di atas. Saya pikir membuat database frase aktual akan menjadi terlalu besar. Namun database kata + beberapa metode lain, sebenarnya bisa membuatnya bekerja (tidak 100%, tetapi sekali lagi tidak 0%). Saya berencana menambahkan langkah verifikasi. Jika skrip mendeteksi sedikit tingkat sarkasme, ia akan bertanya: Apakah itu sarkasme? Jika Anda menjawab: "OH TIDAK", maka itu mengkonfirmasi sarkasme dan benar-benar marah dan mengabaikan Anda untuk beberapa waktu (waktu akan ditentukan oleh tingkat sarkasme).
Kalle H. Väravas
3
Saya benar-benar berpikir Anda ingin tetap menggunakan frasa karena sarkasme adalah tentang konteks, dan setidaknya ada beberapa frasa yang lebih cenderung digunakan secara sarkastis. "Ya" bukan sarkastik, "Benar" bukan sarkastik, tapi "Ya, benar!" mungkin digunakan lebih sering secara sarkastik kemudian dengan tulus.
Charles E. Grant
6
Adapun kualitas jawaban di sini, saya harus mengatakan ini adalah sebagian dari tanggung jawab Anda. Pemrosesan bahasa alami adalah bidang terkenal yang dapat memberi Anda beberapa teknik yang bermanfaat, tetapi Anda tidak memberikan indikasi telah melakukan penelitian untuk mencari metode yang ada. Ini adalah masalah yang sulit, dan bukan sesuatu yang bisa dijawab secara bermanfaat pada posting SO. Banyak, banyak, buku telah diisi dengan topik pemrosesan bahasa alami.
Charles E. Grant
43

<Sarcasm>

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

</Sarcasm>

Jujur, saya tidak tahu bagaimana harus melakukannya. Saya pikir hanya sekitar 30% orang di dunia nyata "mendapatkan" sarkasme sejak awal, jadi membuat komputer mengenalinya dan memahaminya terdengar seperti tugas yang sangat sulit.

Sunting Berdasarkan pada komentar pada posting asli saya, saya percaya bahwa saya telah dengan sempurna menggambarkan kesulitan tugas yang diminta. Ya, paruh pertama posting saya sarkastik. Saya bahkan menekankan fakta itu dengan menggunakan tag mark-up yang dibuat-buat. Dengan memposting komentar sarkastik tentang solusi sepele untuk masalah yang sangat sulit, dan sarkasme yang ditafsirkan sebagai "tidak membantu" memunculkan pertanyaan ini:

Jika Anda tidak dapat mengenali sarkasme tertulis, lalu bagaimana Anda akan menulis algoritma yang mengenalinya?

Oh, dan Anna jika seseorang memasukkan istilah "Saya pikir ..." dalam kalimat mereka, biasanya menunjukkan bahwa itu adalah pendapat yang sedang disampaikan, belum tentu diteliti fakta kerasnya.

Dave Nay
sumber
3
-1 Saya minta maaf, saya tidak yakin mengapa jawaban ini mendapatkan upvotes. Kode yang diberikan 100% tidak relevan dengan pertanyaan yang ada dan bagian kedua dari jawaban Anda mengatakan "Saya tidak tahu". Jawaban Anda adalah 30% sesuai topik dan tidak benar-benar membantu atau memberikan arahan yang baik.
Kalle H. Väravas
18
Sudah terangkat karena poster telah menunjukkan bahwa tidak ada cara praktis untuk melakukan ini. Karena manusia sering tidak dapat mendeteksi sarkasme, maka tidak mungkin Anda dapat mengajarkan mesin. Juga, sarkasme sering disampaikan dengan nada suara, dan karenanya sering disalahpahami dalam komunikasi online.
Andy Waite
1
@Andy Waite Ya tentu saja, Anda benar. Seperti yang saya katakan dia menjawab adalah 30% pada topik (bahkan berpikir dia mulai mendapatkan suara ketika tidak ada teks tambahan.) Namun, saya tidak akan menerima jawaban itu, karena .. ya tentu saja Anda tidak bisa mendapatkan 100% cocok .. Tetapi bahkan pertandingan 50%? Jawaban ini pada dasarnya mengatakan, "Saya tidak mengerti pertanyaan Anda, saya pikir itu tidak mungkin, Kedengarannya sulit, Berhenti saja!" Saya kebanyakan hanya mendapatkan jawaban seperti ini di Programmer, di sebelah "Mengapa Anda melakukan ini? Gunakan kerangka kerja!" ..
Kalle H. Väravas
4
@Kalle, saya setuju dengan Anda. Jawaban ini adalah sebagian sarkasme, sebagian "Saya tidak tahu", dan sebagian menebak (30%? Benarkah? Bisakah Anda mendukungnya?). Ini sama sekali tidak membantu dan seharusnya menjadi komentar.
Adam Lear
3
Thread komentar yang menarik - tampaknya bahkan manusia tidak dapat mendeteksi sarkasme (atau kekurangannya) dengan andal.
Piskvor meninggalkan gedung
11

Masalah deteksi sarkasme adalah masalah terbuka dalam linguistik komputasi - Anda akan lebih baik dilayani dengan mencari di Google scholar daripada stackexchange untuk hal-hal seperti itu. Namun, ada beberapa kemajuan yang dibuat pada masalah ini. Untuk sarkasme yang diucapkan , pengenal yang kuat dapat dibangun dengan menggunakan "fitur spektral dan kontekstual" yang (penulis klaim) mendeteksi sarkasme dan juga annotator manusia. Penulis makalah ini mengklaim bahwa teks mentah tidak cukup untuk mendeteksi sarkasme - memang, mereka mendapatkan hasil yang lebih baik dengan mengabaikan kata-kata aktual yang diucapkan.

Tsur et al. juga melaporkan beberapa hasil menarik dalam deteksi sarkasme tekstual tahun lalu dengan algoritma SASI mereka . Mereka juga melaporkan beberapa temuan tindak lanjut tambahan di makalah lain.

Bagaimanapun, ini adalah ujung tombak penelitian bahasa komputasi; jangan berharap siapa pun memberikan Anda libsarcasm di piring perak. Anda akan membutuhkan set data pelatihan besar dan banyak waktu luang untuk mengubah detektor sarkasme Anda - dan bahkan pada saat itu, ketepatan 77% (seperti yang dilaporkan dalam makalah SASI) tidak cukup untuk menolak posting yang hanya didasarkan pada bendera sarkasme.

omong kosong
sumber
Hmm, 77%? Itu tampaknya lebih baik daripada kebanyakan orang . (tidak dimaksudkan sarkasme)
Piskvor meninggalkan gedung
@Piskvor, sangat mungkin, tapi saya tidak punya statistik tentang itu. Ini presisi yang lebih baik daripada yang audio setidaknya.
bdonlan
2

Saya tidak berpikir jawaban ini adalah metode pendekatan yang sangat realistis, tetapi jika Anda memiliki sumber daya untuk melakukannya, saya yakin itu mungkin. Pertimbangkan proyek reCaptcha google yang menggunakan manusia untuk menguraikan kata-kata yang tidak dapat dibaca komputer ( "Pelajari Lebih Lanjut Halaman Recaptcha" ). Saya percaya masalahnya sama, yaitu Anda mencoba mendapatkan mesin untuk mengetahui sesuatu yang setidaknya sudah dilakukan manusia dengan lebih baik .

Bayangkan Anda memiliki sumber daya untuk meminta jutaan orang mengidentifikasi sarkasme kepada Anda dalam konteks percakapan yang diketik. Bayangkan bahwa Anda dapat meminta banyak orang untuk menyampaikan kepada Anda saat yang tepat dalam percakapan ketika sarkasme terwujud dan sedikit dari percakapan sebelum menyadari bahwa seseorang perlu menandai identifikasi itu. Ini dapat disimpan dalam database, katakanlah, yang dapat diakses oleh program Anda. Kemudian, saat pengguna mengetik percakapan kepada Anda, basis data dapat difilter untuk percakapan "serupa".

Bagaimana mengevaluasi kesamaan adalah sesuatu untuk dipikirkan, tetapi yang saya percaya mungkin sudah ada penelitian yang sudah ada. Saya percaya ini akan sangat mirip dengan teori di balik koreksi kesalahan ejaan. Either way mungkin akan turun ke nilai probabilistik bahwa percakapan yang diketik sebenarnya sarkastik, dan pada titik tertentu ambang harus disediakan.

Saya juga menyukai ide Anda untuk mengajukan pertanyaan, "Apakah itu sarkasme?" kepada pengguna dan kemudian menggunakan respons mereka untuk mencapai keputusan yang lebih akurat.

Saya berharap jawaban saya tidak sia-sia dan saya berharap Anda beruntung dalam upaya ini.

-Asaf

Asaf
sumber
1

Deteksi sarkasme dalam linguistik komputasi (alias pemrosesan bahasa alami) adalah masalah yang sangat sulit. Ini pada dasarnya masalah klasifikasi di mana model harus dilatih terlebih dahulu. Masalah serupa untuk menemukan peserta ganda (file PDF) baru-baru ini diteliti dan diterbitkan. Teknik untuk kedua masalah tersebut sebanding.

stackoverflowuser2010
sumber
1

2 sen saya:

Tanyakan kepada psikolog tentang cara mengenali sarkasme dalam frasa, dengan info yang membandingkannya dengan input.

Tapi itu akan menjadi proyek yang sangat sulit, dengan upaya yang digunakan di dalamnya, Anda bisa melakukan OS terbaik di dunia pasti: P

dysoco
sumber