Alaycılığı tespit etmek için bir senaryo nasıl öğretilir? [kapalı]


11

Şu anda verilen cümleleri eşleştiren ve maç noktalarına göre önceden tanımlanmış bir yanıt veren eğlenceli bir komut dosyası oluşturuyorum. Canlı yayınlara dayalı bazı bilgileri almasını, görevleri çalıştırmasını, fıkra anlatmasını veya sadece onunla sohbet etmesini isteyebilirsiniz.

Zaten kötü amaçlı yazılımlar, büyük harf kilidi veya her ikisi için yerleşik algılama var. Programın bir kız adı var ve mantık terimleriyle, kız gibi bir kız olmaya mümkün olduğunca yakın yapmaya çalıştım (örneğin: herkes, kız gibi genç kızların bir soruya cevap vermek, elbette şaka yapmak için 700ms aldığını biliyor). İşte size küçük bir örnek:

Müşteri: SORUNUNUZ NEDİR?
Kiku: BENİMLE YAPILAN TONU KULLANMAYIN!
Müşteri: #### you
Kiku: neden benim için bu kadar kaba davranıyorsun: /

Ancak, gerçekten alaycı özellik eklemek istiyorum. Yani alaycı bir şey yazarsanız, onu algılar ve buna göre cevap verir. Şimdi bu zor bir kısım, Senaryoyu nasıl öğretirsiniz, alaycılık nedir?

Bana göre daha spesifik. Bugün kullanılan en yaygın alaycı kelimeler nelerdir? Ya da bu istatistiği nasıl edinebilirim? Komut dosyasının verilen ifadenin içeriğini anlamasını nasıl sağlayabilirim?

GÜNCELLEME

Bu soru hype çok şey alıyor gibi, ben şeyler biraz daha temizlenmelidir düşünüyorum. Bir senaryoyu alaycılığı tam olarak tespit etmenin temelde imkansız olduğu çok açıktır. En azından makul bir konu. Ancak, bir miktar olası alaycılığın tespit edilebileceğine inanıyorum.

Şu anda bunu yaptım, senaryom çok sınırlı bir alaycılığı tespit edebilir. Bazı yaygın alaycı kelimeleri önceden tanımladım (ancak, yalnız işe yaramazlar.) Örneğin: her neyse, evet, doğru ve harika gibi. Ve sonra ilk, büyük harf ve alıntı gibi basit şeyler eşleşir: THANKS you are so smartveya oh you are so "SMART".

Komut dosyalarının ana işlevi, görevler yapmak veya bilgi almak olduğundan ve sözlerden sonra kastettiğiniz şey olup olmadığını soracaktır. Sonra özel bir değişken olarak "teşekkürler" ekleyerek düşündüm. Yani yeah thanksya whatever thanksda olası alaycılığı tetikleyecek ve senaryo size şunu soracaktır: "Alaycılığı algılayabilir miyim?" En iyi bahsiniz "üzgünüm" demek olacaktır, aksi takdirde bir uyarı noktası ekler ve sınıra ulaşılırsa - sizi görmezden gelmeye başlar.

Bu çok basit algoritmalar aslında işe yaradığından, bu fikrin bir sürü ayarı ve ince ayarından sonra bir geleceği vardır. Ancak, daha akıllı biri aynı fikri akılda tutarak açık kaynaklı bir yazılım yapar. Daha sonra bu özellik web üzerindeki birçok işleve bağlanabilir. Müşteri hizmetleri muhtemelen en fazla yararı sağlayacaktır, ancak bu tür bir yazılım "işaretlenebilir" içeriği tespit etmek için de kullanılabilir.


14
Senin Senaryonuz kadar anlamaya (anahtar kelimeler yerine toplayıp) söylenenleri, bunu en alay senaryoları yakalamak imkansız olduğunu düşünüyorum
Rob

26
@Kalle Burada net olalım. Sarcasm, sözlü dilde en ince ve gelişmiş cihazlardan biridir. Ses tonu ve ilgili içeriğe dayalı bilgiler gibi incelikleri tamamen alabilen ana dili İngilizce olan bir kişi olsanız bile, alaycılığı tespit edemezsiniz. Anadili olmayan hoparlörler neredeyse hiç şansı yok. Metne götürün ve ana dili İngilizce olanların bile neredeyse hiç şansı yok. Ve en basit cümleleri bile ciddiye anlamaya çalışan bilgisayarların bu sorunu çözmesini istiyor musunuz? Bunu, konuşma ve metin analizinde ömür boyu olan birine bırakın.
doppelgreener

17
Senaryoyu alaycılığı tanıtır mı? Bu gerçekten yararlı;)
zenzelezz

12
Hadi - Sheldon Cooper bile alaycılığı tespit edemez ...
Paul R

3
Bu sorunun özellikle “yapıcı değil” olarak kapatılmış olması gerektiğini düşünmüyorum. Eğer bağlayıcı olmasaydı şu an yeniden oy verirdim, ama bu soru özellikle son düzenleme ile birkaç yeniden oyu hak ediyor.
Adam Lear

Yanıtlar:


17

Tam bir doğal dil işleme sisteminiz ve IBM Watson sistemi ile ilgili bir gerçekler veritabanınız varsa, bazı ifadeleri mümkün olduğunca alay konusu olarak işaretleyebilirsiniz. Örneğin, "Annenizin kanser olduğunu duydum ve daha önce kovuldunuz!" "Evet, hayat harika değil!" işaretlenebilir çünkü kanser olmanın ve bir işi kaybetmenin genellikle olumlu deneyimler olarak tanımlanmadığını fark edebilir.

Watson sınıf sistemini bir araya getirecek kaynaklara sahip olmadığınızı varsayıyorum. Yaygın olarak kullanılan alaycı ifadelerin bir veritabanını bir araya getirebilir ve daha sonra hedef deyim ve alaycı veritabanı arasında bir tür metin eşleştirme algoritması kullanabilirsiniz. Çok etkili olmayacağını tahmin etmeliyim çünkü alaycı kullanılan tüm ifadeler daha sık kullanılıyor. Örneğin "Bu güzel bir X". genellikle içtenlikle kullanılır, ancak bazen alaycı olarak kullanılır.

Alaycılık aldatma ile çok yakından ilgilidir. Alaycılığı kullanan bir kişinin kendisine meydan okuduğunda inkar etmesi nadir değildir ve kelime seçimleri inkar etmeyi mümkün kılar. Bunun iyi bir alay detektörünün Turing testini geçen bir konuşma programı kadar zor bir sorun olduğu anlamına geldiğinden şüpheleniyorum.


1
Cevabınız için teşekkürler. Bu cevap kalitesi kesinlikle yukarıdaki yanıttan daha iyidir. Bence gerçek ifadeden oluşan bir veritabanı oluşturmak çok büyüyecek. Ancak bir kelime veritabanı + diğer bazı yöntemler, aslında (% 100 değil, daha sonra yine% 0 değil) çalışmasını sağlayabilir. Bir doğrulama adımı eklemeyi planlıyorum. Senaryo hafif bir alay düzeyi tespit ederse şu soruyu soracaktır: Bu alay mıydı? Eğer cevap verirseniz: "OH NO", o zaman alaycı teyit ve aslında delirir ve sizi bir süre için görmezden gelir (zaman alay düzeyi ile belirlenir).
Kalle H.Väravas

3
Gerçekten ifadelere bağlı kalmak istediğinizi düşünüyorum çünkü alaycılık tamamen bağlamla ilgilidir ve alaycılıkla kullanılması en az birkaç kelime öbeği vardır. "Evet" alaycı değil, "Doğru" alaycı değil, "Evet, doğru!" muhtemelen alaycı bir şekilde içtenlikle daha sık kullanılır.
Charles E. Grant

6
Buradaki cevapların kalitesine gelince, bunun kısmen sizin sorumluluğunuz olduğunu söylemeliyim. Doğal dil işleme, size birkaç yararlı teknik sağlayabilecek iyi bilinen bir alandır, ancak mevcut yöntemleri aramak için herhangi bir araştırma yaptığınıza dair hiçbir belirti vermezsiniz. Bu zor bir sorundur ve SO mesajında ​​genel olarak yararlı bir şekilde cevaplanabilecek bir şey değildir. Doğal dil işleme konusunda birçok, çok kitap doluydu.
Charles E. Grant

43

<Alay>

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

</ Alay>

Dürüst olmak gerekirse, bu konuda nasıl bir fikrim yok. Bence gerçek hayatta insanların yaklaşık% 30'u ilk etapta alaycı oluyor, bu yüzden bir bilgisayarı tanımak ve anlamak çok zor bir iş gibi geliyor.

Düzenle Orijinal yazımın yorumlarına dayanarak, sorulan görevin aşırı zorluğunu mükemmel bir şekilde gösterdiğime inanıyorum. Evet, görevimin ilk yarısı alaycıydı. Hatta bu gerçeği, tamamlanmış bir biçimlendirme etiketi kullanarak vurguladım. Son derece zor bir soruna önemsiz bir çözüm hakkında alaycı bir yorum göndererek ve bu alaycılığın "yararsız" olarak yorumlanması şu soruyu gündeme getirir:

Yazılı alaycılığı tanımıyorsanız, onu tanıyan bir algoritmayı nasıl yazacaksınız?

Oh, ve Anna birisinin cümlelerinde "sanırım ..." terimini içeriyorsa, genellikle bunun zor araştırılan değil, belirtilen bir görüş olduğunu gösterir.


3
-1 Üzgünüm, bu cevabın neden oy aldığından emin değilim. Sağlanan kod, eldeki soru ile% 100 ilgisizdir ve cevabın ikinci kısmı "hiçbir fikrim yok" diyorsunuz. Cevabınız% 30 konuyla ilgili ve gerçekten yardımcı olmuyor veya iyi bir yön vermiyor.
Kalle H. Väravas

18
Vekil seçildi, çünkü poster bunu yapmanın pratik bir yolu olmadığını belirtti. İnsanlar genellikle alaycılığı algılayamadığından, bir makineyi öğretmenin bir yolu yoktur. Ayrıca, alaycılık genellikle ses tonuyla taşınır ve bu nedenle çevrimiçi iletişimde sıklıkla yanlış anlaşılır.
Andy Waite

1
@Andy Waite Evet, elbette haklısın. Dediğim gibi hes cevap konu üzerinde% 30'dur (hatta ek metin olmadığında oylamaya başladığını düşündü.) Yine de, bu cevabı kabul etmeyeceğim, çünkü .. evet tabii ki% 100 eşleşme alamazsınız .. Ama% 50'lik bir eşleşme bile? Bu cevap temelde, "Sorunuzu anlamıyorum, bence bu mümkün değil, Kulağa zor geliyor, Sadece çıkın!" Çoğunlukla sadece bu tür cevapları Programcılar'da, "Bunu neden yapıyorsun? Bir çerçeve kullan!"
İfadesinin yanında alıyorum

4
@Kalle sana katılıyorum. Bu cevap kısmen alaycı, kısmen "Bilmiyorum" ve kısmen tahmin (% 30? Gerçekten mi? Bunu destekleyebilir misin?). Tamamen yararsızdır ve en iyi yorum olmalıydı.
Adam Lear

3
İlginç yorum dizisi - görünüşe göre insanlar bile alaycılığı (veya eksikliğini) güvenilir bir şekilde algılayamıyor.
Piskvor binadan ayrıldı

11

Alaycılık algılama sorunu, hesaplama dilbiliminde açık bir sorundur - bu tür şeyler için stackexchange'ten ziyade google bilgini arayarak daha iyi hizmet edersiniz . Ancak, bu konuda bazı ilerlemeler kaydedilmiştir. İçin sözlü alay, sağlam tanıyıcı "spektral ve bağlamsal özellikleri" kullanılarak inşa edilebilir yanı, bir insan annotator olarak (yazarlar iddia) algılar alay söyledi. Makalenin yazarları, ham metnin alaycılığı tespit etmek için yeterli olmadığını iddia ediyorlar - aslında, söylenen gerçek kelimeleri göz ardı ederek daha iyi sonuçlar aldılar .

Tsur ve diğ. SASI algoritmasıyla geçen sene metinsel alay algılamasında bazı ilginç sonuçlar bildirdiler . Ayrıca başka bir makalede bazı ek takip bulguları bildirdiler .

Her halükarda, bu, hesaplamalı dil araştırmalarının öncüsüdür; kimsenin size gümüş bir tepside bir libsarcasm vermesini beklemeyin. Büyük eğitim veri setlerine ve alaycılık detektörünüzü değiştirmek için çok fazla boş zamana ihtiyacınız olacak - ve o zaman bile,% 77'lik bir hassasiyet (SASI gazetesinde bildirildiği gibi) yalnızca alay işaretine dayanan bir postayı reddetmek için yeterli değildir.


Hmm,% 77 mi? Bu çoğu insandan daha iyi görünüyor . (
Alaycılık

@Piskvor, büyük ihtimalle, ama bununla ilgili istatistiklerim yok. En azından ses olandan daha iyi hassasiyet.
bdonlan

2

Bu cevabın çok gerçekçi bir yaklaşım yöntemi olduğunu düşünmüyorum, ancak bunu yapacak kaynaklarınız olsaydı bunun mümkün olabileceğine inanıyorum. Bilgisayarların okuyamayacağı kelimeleri deşifre etmek için google'ın insanları kullanan reCaptcha projesini düşünün ( "Daha Fazla Recaptcha Sayfası Öğrenin" ). Sorunun benzer olduğuna inanıyorum, çünkü insanların en azından şimdiden daha iyi bir şey olduğunu anlamak için bir makine bulmaya çalışıyorsunuz .

Milyonlarca insandan yazılı bir konuşma bağlamında alaycılığı tanımasını isteyecek kaynaklara sahip olduğunuzu düşünün. Birçok kişiden, alaycılığın gerçekleştiği konuşmada tam olarak anı ve kişinin bu kimliği işaretlemesi gerekeceğinin farkına varmadan önce konuşmanın az bir kısmını size göndermesini isteyebileceğinizi hayal edin. Bu, programınızın erişebileceği bir veritabanında saklanabilir. Ardından, kullanıcı konuşmayı size yazarken, veritabanı "benzer" görüşmeler için filtrelenebilir.

Benzerliğin nasıl değerlendirileceği düşünülecek bir şey, ama muhtemelen var olan araştırmaların zaten var olduğuna inanıyorum. Yazım hatası düzeltmelerinin arkasındaki teoriye çok benzeyeceğine inanıyorum. Her iki durumda da, yazılan konuşmanın aslında alaycı olması muhtemeldir ve bir noktada bir eşik değerin sağlanması gerekecektir.

"Bu alay mıydı?" Sorusunu sunma fikrinizi de seviyorum. daha sonra daha doğru bir karara varmak için yanıtlarını kullanır.

Umarım cevabım tam bir atık değildir ve bu çabada size şans diliyorum.

-Asaf


1

Hesaplamalı dilbilimde alay saptaması (doğal dil işleme olarak da bilinir) kendi başına son derece zor bir sorundur. Temel olarak bir modelin önce eğitilmesi gereken bir sınıflandırma problemidir. Bir çift entenders bulmak için benzer bir sorun (PDF dosyası) geçtiğimiz günlerde araştırılmış ve yayınlanmıştır. Her iki problem için de teknikler karşılaştırılabilir.


1

2 sentim:

Bir psikoloğa, ifadelerde alaycılığı nasıl tanıyacağını sorun, bu bilgilerle bunları girdiyle karşılaştırın.

Ama bu gerçekten zor bir proje olurdu, kullanılan çaba ile, dünyanın en iyi işletim sistemini emin olabilirsiniz: P

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.