如何教一个脚本来发现讽刺?[关闭]


11

我当前正在构建一个有趣的脚本,该脚本基本上匹配给定的短语并根据匹配点给出预定义的响应。您可以要求它根据实时供稿检索一些信息,运行任务,讲述轶事或只是与她聊天。

我已经有内置的badwords和/或大写锁定检测功能。该程序有一个女孩的名字,我尝试从逻辑上讲尽可能接近一个女孩(例如:每个人都知道,大多数女孩花700ms来回答一个问题,当然是在开玩笑)。所以这是一个小例子:

客户:您有什么问题?
菊:不要使用与我同色的东西!
客户:####您
菊久:您为什么对我这么刻薄:/

但是,我真的很想添加讽刺功能。因此,如果您用讽刺的方式写东西,那么她会发现并做出相应的回应。现在这是一个棘手的部分,您如何教脚本,什么是讽刺?

对我来说更具体。今天最常用的讽刺单词是什么?还是如何获得该统计数据?如何使脚本理解给定短语的上下文?

更新

由于这个问题引起了很多炒作,我认为应该多清理一些事情。很清楚,使脚本完全检测讽刺基本上是不可能的。至少在合理的事情上。但是,我确实相信可以发现一些可能的讽刺。

目前为止,我的脚本可以检测到非常有限的讽刺。我预定义了一些常见的讽刺词(但是,仅它们是无用的。)例如:诸如此类,是的,正确而伟大。然后首先匹配简单的东西,例如大写和quoted:THANKS you are so smartoh you are so "SMART"

由于脚本的主要功能是执行任务或检索信息,而后记它将询问您的意思。然后我想,添加“谢谢”作为特殊变量。因此yeah thanks还是whatever thanks触发了可能的讽刺,脚本将询问您:“我是否检测到讽刺?” 最好的选择就是说“对不起”,否则它将添加一个警告点,如果达到限制,它将开始无视您。

由于这些非常简单的算法似乎可以实际工作,因此,当然,在进行大量调整和调整之后,这种想法才有希望。但是,有很多人会更聪明地制作出具有相同想法的开源软件。然后,可以将此功能连接到Web上的许多功能。客户服务可能会最大程度地受益,但是,这种软件也可以用于检测“可疑”内容。


14
除非您的脚本能真正理解所讲的内容(而不是选择关键字),否则我认为要抓住大多数讽刺的场景是不可能的
Rob

26
@Kalle让我们在这里清楚。讽刺是口语中最微妙和最先进的设备之一。即使您是说英语的母语人士,也完全能够掌握各种微妙的信息(例如,语气和任何相关的上下文信息),您仍然经常无法察觉到讽刺。非母语人士几乎没有机会。用它来发送文本,甚至以母语为母语的人几乎没有机会。并且您想要即使对最简单的句子也难以理解的计算机才能解决此问题?留给有毕生精力进行语音和文本分析的人。
doppelgreener 2011年

17
使脚本识别讽刺?这非常有用;)
zenzelezz

12
来吧-即使谢尔登·库珀也无法发现讽刺...
Paul R

3
我认为这个问题不应该被解决,特别是不要认为它不是“非建设性的”。如果没有约束力,我现在会进行重新投票,但是我认为这个问题值得重新投票,尤其是最新的修改。
亚当李尔

Answers:


17

如果您拥有完整的自然语言处理系统和IBM Watson系统中的事实数据库,则可以将某些声明标记为讽刺。例如,“我听说您的母亲得了癌症,而您刚被开除!” “是的,生活不是很美好!” 可能会因此而被标记,因为它可以认识到患癌症和失去工作通常不被认为是积极的经历。

我假设您没有资源来整合Watson评分系统。您可以建立一个常用的讽刺短语的数据库,然后在目标语句和讽刺数据库之间使用某种文本匹配算法。我不得不猜测这不会很有效,因为所有讽刺使用的短语都会被真诚地更频繁地使用。例如,“那是一个不错的X”。通常真诚地使用,但有时讽刺地使用。

讽刺与欺骗非常相关。对于使用讽刺的人在受到挑战时否认讽刺的情况并不少见,他们的言语选择也使否认成为可能。我怀疑这意味着一个好的嘲讽检测器可能和通过图灵测试的对话程序一样困难。


1
感谢您的回答。这个答案的质量肯定比上面的更好。我认为创建一个实际短语数据库会变得太大。但是,单词数据库和其他一些方法实际上可以使它工作(不是100%,然后又不是0%)。我打算添加一个验证步骤。如果脚本检测到轻度的讽刺,它会问:这是讽刺吗?如果您回答:“ OH NO”,那么它会确认讽刺并发疯并在一段时间内无视您(时间取决于讽刺的程度)。
Kalle H.Väravas11年

3
我真的认为您要坚持使用这些短语,因为讽刺是与上下文有关的,并且至少有一些短语更可能被讽刺使用。“是”不是讽刺,“是”不是讽刺,但是“是,是!” 真诚地经常被讽刺地使用。
查尔斯E.格兰特

6
至于这里回答的质量,我必须说这部分是您的责任。自然语言处理是一个众所周知的领域,可以为您提供几种有用的技术,但是您没有表示已经进行了任何研究来查找现有方法的迹象。这是一个棘手的问题,一般来说,在SO帖子中没有一个有用的答案。关于自然语言处理的话题已经很多很多。
查尔斯E.格兰特

43

<讽刺>

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

</ Sarcasm>

老实说,我不知道该怎么做。我认为现实生活中只有30%的人首先“嘲笑”讽刺,因此让计算机识别并理解它似乎是一项非常艰巨的任务。

编辑 根据我对原始帖子的评论,我相信我已经完美地说明了所要完成任务的极端难度。是的,我帖子的前半部分是讽刺的。我什至通过使用虚构的标记来强调这一事实。通过发表关于一个极其困难的问题的简单解决方案的讽刺评论,而这种讽刺被解释为“无用的”提出了这个问题:

如果您不能识别出讽刺,那么您将如何编写一个识别它的算法?

哦,安娜,如果有人在句子中包含“我认为...”一词,通常表明这是一种正在陈述的意见,而不必研究硬事实。


3
-1对不起,我不确定为什么这个答案越来越好。提供的代码与当前问题无关,而且100%与您说“我不知道”的答案的第二部分无关。您的回答是关于主题的30%,它实际上并没有帮助或给出任何良好的指导。
Kalle H.Väravas2011年

18
之所以受到批评是因为张贴者指出,没有实际的方法可以做到这一点。由于人类通常无法检测到讽刺,因此您无法教机器。而且,嘲讽常常通过语调来传达,因此经常在在线交流中被误解。
安迪·怀特

1
@Andy Waite当然可以,您是正确的。正如我所说的那样,他的回答是关于主题的30%(即使没有附加文字,他也开始认为自己是反对者。)不过,我不会接受这个回答,因为..当然,您不可能获得100%的匹配。但是,即使是50%的比赛?这个答案基本上是在说:“我不明白您的问题,我认为这不可能,听起来很难,只是退出!” 我大多只能得到这些类型的程序员的回答,旁边。“你为什么要这样使用框架?!”
卡勒H.Väravas

4
@Kalle我同意你的看法。这个答案部分是讽刺,部分是“我不知道”,部分是猜测(30%?真的吗?你能支持吗?)。这是完全无济于事的,充其量应该只是评论。
亚当李尔

3
有趣的评论线索-显然,甚至人类也无法可靠地发现讽刺(或缺乏讽刺)。
Piskvor在2011年

11

讽刺检测问题是计算语言学中的一个开放性问题-与Google进行此类搜索相比,搜索Google Scholar更好。但是,在这个问题上已经取得了一些进展。对于口语讽刺,可以使用“光谱和上下文特征”(作者声称)来构建鲁棒的识别器(作者声称),这些特征可以检测出讽刺和人类注释者。该论文的作者声称,原始文本不足以检测讽刺-实际上,他们通过忽略实际所说的单词而获得了更好的结果。

Tsur等。去年他们的SASI算法也报道了文本嘲讽的一些有趣结果。他们还在另一篇论文中报告了一些其他的后续发现

无论如何,这都是计算语言研究的前沿。不要指望有人在银盘上给您一个嘲讽。您将需要大量的训练数据集和大量的空闲时间来调整您的讽刺检测器-即使那样,77%的精度(如SASI论文中所述)也不足以拒绝仅基于讽刺标记的帖子。


嗯77%?那似乎比大多数都要好。(无讽刺
意味

@Piskvor,很有可能,但是我没有统计数据。至少比音频精度要好。
bdonlan

2

我认为这个答案不是非常现实的方法,但是如果您有足够的资源去做,我相信这是可能的。考虑一下Google的reCaptcha项目,该项目使用人类来解密计算机无法读取的单词(“了解更多Recaptcha页面”)。我相信问题是相似的,因为您正在尝试让机器找出人类至少已经做某件事上做得更好的事情。

想象一下,您有资源要求成千上万的人在类型化的对话上下文中识别出对您的嘲讽。想象一下,您可能会要求许多人向您提交谈话中的确切时刻,即嘲讽的发生时间,而在意识到有人需要标记该标识之前,只需进行很少的对话。可以将其存储在您的程序可以访问的数据库中。然后,当用户向您键入对话时,可以为“相似”对话过滤数据库。

如何评估相似性是需要考虑的事情,但是我认为可能已经存在研究。我相信这很像拼写错误更正背后的理论。无论哪种方式,键入的对话实际上都是讽刺性的,都可能会降低到概率值,并且在某个时候必须提供阈值。

我也喜欢您提出“讽刺?”这个问题的想法。给用户,然后使用他们的响应来做出更准确的决定。

我希望我的回答不是完全的浪费,也希望您在这项工作中能取得成功。

-阿萨夫


1

计算语言学(即自然语言处理)中的讽刺检测本身就是一个非常困难的问题。基本上,这是一个分类问题,必须首先训练模型。一个寻找双关语类似的问题(PDF文件)最近进行了研究和出版。这两个问题的技术都是可比的。


1

我的2美分:

向心理学家询问如何识别短语中的讽刺,并将该信息与输入进行比较。

但这将是一个非常艰巨的项目,通过其中的努力,您肯定可以做到世界上最好的OS:P

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.