Як навчити сценарій виявляти сарказм? [зачинено]


11

Наразі я будую цікавий сценарій, який в основному відповідає заданим фразам і дає заздалегідь задану відповідь на основі балів відповідності. Ви можете попросити її отримати деяку інформацію на основі живих каналів, виконувати завдання, розповідати анекдоти або просто спілкуватися з нею.

У мене вже є вбудована система виявлення шкідливих слів, блокування шапки або обох. У програмі є ім'я дівчини, і я намагався якомога ближче бути дівчинкою-дівчиною, на логічному плані (наприклад: всі знають, що більшість дівчат-дівчат займають 700 мн, щоб відповісти на запитання, звичайно жартуючи). Ось ось невеликий приклад:

Клієнт: ЯКА ВАША ПРОБЛЕМА?
Кіку: НЕ ВИКОРИСТОВУЙТЕ, ЩО МОЄТЬ З Мною!
Клієнт: #### ти
Кіку: чому ти так ставишся до мене: /

Однак я дуже хотів би додати до нього сарказм. Тож якщо ви щось написати сарказмом, то вона це виявить і відповість відповідно. Тепер це складна частина, як ви навчаєте сценарію, що таке сарказм?

Для мене більш конкретні. Які найпоширеніші саркастичні слова вживаються сьогодні? Або як отримати цю статистику? Як я можу змусити сценарій зрозуміти контекст даної фрази?

ОНОВЛЕННЯ

Оскільки це питання набуває багато галасу, я думаю, що все слід розмитнити трохи більше. Цілком зрозуміло, що зробити сценарій повністю виявити сарказм в основному неможливо. Принаймні, в розумній справі. Однак я вважаю, що можна було б виявити деяку кількість можливого сарказму.

Зараз я зробив це так далеко, що мій сценарій може виявити дуже обмежений сарказм. Я заздалегідь визначив декілька загальноприйнятих саркастичних слів (однак, поодинці вони марні.) Наприклад: як, що завгодно, так, правильно і чудово. А потім спочатку збігаються, прості речі, такі як великі регістри та цитуються: THANKS you are so smartабо oh you are so "SMART".

Оскільки основна функція сценаріїв - це виконувати завдання або витягувати інформацію, а післязапиту вона запитає, чи це саме ви мали на увазі. Тоді я подумав, додавши «спасибі» як спеціальну змінну. Так yeah thanksабо whatever thanksспровокує можливий сарказм, і сценарій запитає вас: "Чи виявляю я сарказм?" Найкраще б тоді сказати «вибачте», інакше це додасть попереджувальну точку, і якщо буде досягнуто обмеження - воно почне ігнорувати вас.

Оскільки ці дуже прості алгоритми, здається, насправді спрацьовують, то ця ідея має майбутнє, звичайно після багато налаштування та налаштування. Однак хтось набагато розумніший зробив би програмне забезпечення з відкритим кодом з тією ж ідеєю на увазі. Тоді ця функція може бути підключена до багатьох функцій в Інтернеті. Догляд за клієнтами, ймовірно, найбільше піде на користь, однак цей тип програмного забезпечення також може бути використаний для виявлення "змістового" вмісту.


14
Поки ваш сценарій насправді не може зрозуміти, про що йдеться (а не підбирати ключові слова), я думаю, що неможливо зловити більшість сценаріїв сарказму
Роб

26
@Kalle Давайте будемо зрозумілі тут. Сарказм - один з найтонших і найсучасніших пристроїв розмовної мови. Навіть якщо ви є носієм англійської мови, який повністю здатний підбирати тонкощі, наприклад, тон голосу та будь-яку відповідну контекстну інформацію, ви регулярно не зможете виявити сарказм. Інші носії мови майже не мають жодного шансу. Візьміть це до тексту і навіть носії мови майже не мають шансів. І ви хочете, щоб комп'ютери, які намагаються тьмяно осмислити навіть найпростіші речення, вирішили цю проблему? Залиште це комусь із життя, що займається мовленням та аналізом тексту.
doppelgreener

17
Зробити сценарій розпізнавання сарказму? Це справді корисно;)
zenzelezz

12
Давай - навіть Шелдон Купер не може виявити сарказм ...
Пол Р.

3
Я не думаю, що це питання мало бути закритим, особливо не як "неконструктивним". Я б зараз голосував на повторному голосуванні, якби це не було обов'язковим, але я думаю, що це питання заслуговує на кілька повторних голосів, особливо з останньою редакцією.
Адам Лір

Відповіді:


17

Якщо у вас була повна система обробки природних мов і база даних фактів, що стосуються системи IBM Watson, ви могли б позначити деякі твердження як можливий сарказм. Наприклад, "Я чую, що у вашої матері рак, і вас просто звільнили!" "Так, чи не прекрасне життя!" можна позначити, оскільки він може визнати, що отримання раку та втрата роботи взагалі не описуються як позитивний досвід.

Я припускаю, що у вас немає ресурсів для складання системи оцінок Ватсона. Ви можете скласти базу даних загальновживаних саркастичних фраз, а потім використовувати якийсь алгоритм відповідності тексту між цільовим оператором та базою даних сарказму. Я мушу здогадуватися, що це буде не дуже ефективно, оскільки всі фрази, які використовуються саркастично, використовуються щиро частіше. Наприклад, "Це приємний X". зазвичай використовується щиро, але іноді використовується саркастично.

Сарказм дуже тісно пов'язаний з обманом. Не рідкість людина, яка вживає сарказм, заперечує це, коли кидає виклик, і їх вибір слів робить заперечення можливим. Я підозрюю, що це означає, що хороший детектор сарказму, ймовірно, є настільки ж важкою проблемою, як і розмовна програма, яка проходить тест Тьюрінга.


1
Дякую за вашу відповідь. Якість відповідей, безумовно, краща, ніж вище. Я думаю, що створення бази фактичної фрази стане занадто великим. Однак база даних слів + деякі інші методи насправді можуть змусити її працювати (не 100%, але знову ж таки не 0%). Я планую додати крок підтвердження. Якщо сценарій виявить незначний рівень сарказму, він запитає: це був сарказм? Якщо ви відповідаєте: "О НІ", то це підтверджує сарказм і насправді божеволіє і ігнорує вас деякий час (час визначатиметься рівнем сарказму).
Kalle H. Väravas

3
Я дійсно думаю, що ви хочете дотримуватися фраз, тому що сарказм стосується всього контексту, і є принаймні кілька фраз, які, швидше за все, використовуються саркастично. "Так" не є саркастичним, "Правильно" - не саркастично, але "Так, так!" Мабуть, використовується частіше саркастично, ніж щиро.
Чарльз Е. Грант

6
Що стосується якості відповідей тут, то можу сказати, що це частково ваша відповідальність. Обробка природних мов - це добре відома галузь, яка може запропонувати вам декілька корисних методик, але ви не даєте жодних ознак того, що проводили якісь дослідження для пошуку існуючих методів. Це непроста проблема, а не те, на що можна з користю відповісти взагалі в посту SO. Багато, багато книжок було заповнено на тему обробки природних мов.
Чарльз Е. Грант

43

<Сарказм>

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

</Sarcasm>

Чесно кажучи, я не маю уявлення, як з цим піти. Я думаю, що лише близько 30% людей у ​​реальному житті в першу чергу "отримують" сарказм, тому змусити комп'ютер розпізнати його і зрозуміти, це звучить як дуже складне завдання.

Редагувати Виходячи з коментарів до моєї оригінальної публікації, я вважаю, що я прекрасно проілюстрував надзвичайну складність завдання, яке задається. Так, перша половина моєї посади була саркастичною. Я навіть підкреслив цей факт, використовуючи створений тег розмітки. Опублікувавши саркастичний коментар щодо тривіального вирішення надзвичайно складної проблеми, і про те, що інтерпретують сарказм як "непосидний", виникає це питання:

Якщо ви не можете розпізнати написаний сарказм, то як ви збираєтеся написати алгоритм, який розпізнає його?

О, і Анна, якщо хтось включає у своєму реченні термін "я думаю ...", це зазвичай вказує на те, що це думка, яка висловлюється, не обов'язково досліджується важким фактом.


3
-1 Вибачте, я не впевнений, чому ця відповідь отримує підсумки. Наведений код на 100% не має жодного стосунку до питання, а в другій частині відповіді ви говорите "я не маю поняття". Ваша відповідь на 30% на тему і насправді не допомагає і не дає хорошого вказівки.
Kalle H. Väravas

18
Це стає актуальним, оскільки плакат вказав, що немає практичного способу зробити це. Оскільки люди часто не можуть виявити сарказм, то ви не можете навчити машині. Також сарказм часто передається тоном голосу, а отже, часто неправильно розуміється в онлайн-спілкуванні.
Енді Вейт

1
@Andy Waite Так, звичайно, ти маєш рацію. Як я вже сказав, відповідь на це є 30% на тему (навіть думав, що він почав отримувати відгуки, коли не було додаткового тексту.) Я все-таки не можу прийняти цю відповідь, тому що ... так, звичайно, ви не можете отримати 100% відповідність .. Але навіть 50% матчу? Ця відповідь в основному говорить: "Я не розумію вашого запитання, я думаю, що це неможливо. Звучить важко. Просто киньте!" В основному я отримую відповіді на такі типи програмістів, поруч із "Чому ти це робиш? Використовуй рамку!" ..
Kalle H. Väravas

4
@Kalle Я згоден з тобою. Ця відповідь - частина сарказму, частина "я не знаю", а частина здогадок (30%? Дійсно? Чи можете ви це зробити?). Це абсолютно не допомагає і, у кращому випадку, це був коментар.
Адам Лір

3
Цікава тема коментаря - мабуть, навіть людина не може надійно виявити сарказм (або його відсутність).
Пісквор вийшов з будівлі

11

Проблема виявлення сарказму - це відкрита проблема в обчислювальній лінгвістиці - вам краще послужити, шукаючи вченого google, ніж stackexchange для таких речей. Однак у цьому питанні досягнуто певного прогресу. Для розмовного сарказму може бути побудований надійний розпізнавач, використовуючи "спектральні та контекстуальні особливості", які (стверджують автори) виявляють сарказм, а також людський анотатор. Автори статті стверджують, що необробленого тексту недостатньо для виявлення сарказму - дійсно, вони отримали кращі результати, ігноруючи фактично сказані слова.

Цур та ін. також повідомили про деякі цікаві результати щодо виявлення текстового сарказму лише минулого року за допомогою свого алгоритму SASI . Вони також повідомляють про деякі додаткові результати подальших досліджень у іншому документі.

У будь-якому випадку, це передовий досвід обчислювальної мови; не сподівайся, що хтось передасть тобі лібсарказм на срібній тарілці. Вам знадобляться великі набори даних про навчання та багато вільного часу, щоб налаштувати детектор сарказму - і навіть тоді точності в 77% (як повідомляється в статті SASI) недостатньо, щоб відхилити посаду, засновану виключно на прапорі сарказму.


Хм, 77%? Це, здається, краще, ніж більшість людей . (не планується сарказм)
Пісквор вийшов з будівлі

@Piskvor, цілком можливо, але я не маю статистики щодо цього. Це краща точність, ніж принаймні аудіо.
bdonlan

2

Я не думаю, що ця відповідь є дуже реалістичним методом підходу, але якби у вас були ресурси для цього, я вважаю, що це можливо. Розглянемо проект reCaptcha google, який використовує людину для розшифровки слів, які комп'ютери не можуть прочитати ( "Дізнайтеся більше Recaptcha Page" ). Я вважаю, що проблема схожа на те, що ви намагаєтеся отримати машину, щоб зрозуміти, що люди, принаймні, краще вже роблять.

Уявіть, у вас були ресурси, щоб попросити мільйони людей визначити сарказм у вас в контексті набраної розмови. Уявіть, що ви могли б попросити багатьох людей подати вам точний момент розмови, коли реалізувався сарказм і як мінімум розмови до усвідомлення того, що потрібно позначити цю ідентифікацію. Це може бути збережено у базі даних, скажімо, до якої мала доступ до вашої програми. Потім, коли користувач набирав вам розмову, база даних може бути відфільтрована для «подібних» розмов.

Як оцінити подібність, є над чим подумати, але, на мою думку, вже існує ймовірно дослідження. Я вважаю, що це буде дуже схоже на теорію виправлення орфографічних помилок. Так чи інакше, мабуть, доведеться до ймовірнісного значення того, що введена розмова насправді є саркастичною, і в якийсь момент повинен бути забезпечений поріг.

Мені також подобається ваша ідея представити питання "Це був сарказм?" користувачеві, а потім використовуючи його відповідь для досягнення більш точного рішення.

Я сподіваюся, що моя відповідь не була повною мірою, і я бажаю вам удачі в цьому починанні.

-Asaf


1

Виявлення сарказму в обчислювальній лінгвістиці (так само природній обробці мови) є надзвичайно важкою проблемою. Це в основному проблема класифікації, коли модель повинна бути навчена спочатку. Аналогічна проблема для знаходження подвійних смислів (PDF файл) недавно була досліджена і опублікована. Методи для обох проблем порівнянні.


1

Мої 2 копійки:

Запитайте у психолога про те, як розпізнати сарказм у фразах, щоб ця інформація порівняла їх із вхідними.

Але це був би дійсно важкий проект, доклавши зусиль для цього, ти зможеш точно зробити найкращу ОС у світі: P

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.