如何打开评论而不被垃圾邮件淹没



当您的工作是创造美丽的东西时,您不能特别谈论它,因为结果出在每个人的眼前。但是,如果您删除栅栏上的铭文,则直到栅栏看起来不错或您擦除了一些错误之前,没人注意到您的工作。

您可以在其中留下评论,查看,发送消息或上传图片的任何服务迟早都会面临垃圾邮件,欺诈和淫秽语言的问题。这是无法避免的,但是必须加以斗争。

我叫Mikhail,我在反垃圾邮件团队中工作,该团队保护Yandex服务的用户免受此类问题的困扰。我们的工作很少受到关注(而且很好!),所以今天我将更详细地讨论它。您将发现在哪些情况下节制是无用的,以及为什么准确性不是其有效性的唯一指标。我们还将以猫和狗为例谈论伴侣,以及为什么有时“像骗子一样思考”有时有用。

在Yandex中,用户发布内容的服务越来越多。您可以在Yandex中提问或写答案。Kew,在Yandex.Rayon中讨论院子的新闻,在Yandex.Maps上的对话中分享交通情况。但是,随着服务受众的增长,它变得对诈骗者和垃圾邮件发送者具有吸引力。他们来填写评论:他们提供轻松赚钱,宣传奇迹般的资金并承诺社会福利。由于垃圾邮件发送者,一些用户损失了金钱,而另一些用户则失去了将时间花在垃圾邮件蔓延的sc脚服务上的渴望。

这不是唯一的问题。我们不仅努力保护用户免受骗子的侵害,而且还努力营造一种舒适的交流氛围。如果评论中的人遇到淫秽的语言和侮辱,他们很可能会离开而永远不会返回。因此,这也需要能够战斗。

清洁网


与我们经常发生的情况一样,搜索的第一个发展是在搜索中诞生的,它在搜索结果中与垃圾邮件作斗争。十年前,出现了一项任务,即过滤成人内容以进行家庭搜索和不暗示18岁以上答案的查询。因此,出现了第一本手动键入的色情和垫子字典,分析师对其进行了补充。主要任务是将请求分类为可接受成人内容的请求和不可接受成人内容的请求。为此,收集了标记,建立了启发式方法,训练了模型。因此,出现了用于过滤不当内容的第一项发展。

随着时间的流逝,Yandex开始出现UGC(用户生成的内容)-由用户自己编写的消息,而Yandex仅发布。由于上述原因,许多邮件必须经过仔细审查才能发布。然后,我们决定创建一项服务,为所有Yandex UGC产品提供针对垃圾邮件和网络犯罪的保护,并使用最佳实践过滤搜索中的不当内容。该服务称为Clean Web。

新任务和帮助旅行者


最初,只有简单的自动化对我们有用:这些服务向我们发送了文本,并且我们为它们运行了字典,色情和常规字典-分析师手动制作了所有内容。但是随着时间的流逝,该服务已在越来越多的Yandex产品中使用,我们不得不学习处理新问题。

用户通常不会回想起而是发布一些毫无意义的信件,试图提高自己的成就,有时会在评论竞争对手公司的评论中宣传他们的公司,有时甚至会混淆组织并在有关宠物店的评论中写道:“完美煮熟的鱼!”。也许有一天人工智能将学会完全捕捉任何文本的含义,但是现在自动化有时比人类差。

很明显,没有人工标记就无法做到,我们在电路中增加了第二步-将其发送给人工进行人工检查。有些出版的文本分类器没有发现问题。您可以轻松想象这样一项任务的规模,因此,我们不仅依靠评估者,而且还使用了“人群的智慧”,即我们向行家寻求帮助。正是他们帮助我们识别了机器遗漏的东西,从而进行了教导。

智能缓存和LSH哈希


我们在处理注释时遇到的另一个问题是垃圾邮件,或者说是垃圾邮件的数量和分发速度。当Yandex.Ryon的受众开始迅速增长时,垃圾邮件发送者就来到了那里。他们学会了通过略微改变文字来避开常客。当然,垃圾邮件仍被发现并删除,但是数百人甚至在Yandex规模上仅5分钟就可以看到不可接受的邮件。



当然,这不适合我们,我们基于LSH(位置敏感的哈希)对文本进行了智能缓存它的工作方式是这样的:我们对文本进行规范化,从文本中删除链接,并将其切成n-gram(n个字母的序列)。此外,还考虑了n元语法的哈希值,并且已经在其上构建了文档的LSH向量。关键是,即使它们稍有变化,相似的文本也会变成相似的矢量。

该决定允许对类似文本重用分类器和分类器的判决。在垃圾邮件攻击中,第一封邮件通过检查并以判决“垃圾邮件”进入缓存时,所有新的相似消息,即使是已修改的类似消息,也收到相同的判决,并被自动删除。后来,我们学习了如何训练和自动训练垃圾邮件分类器,但是这种“智能缓存”仍然存在,并且仍然对我们有很大帮助。

好的文本的分类器


由于没有时间休息与垃圾邮件的斗争,我们意识到我们95%的内容都是人工审核的:分类器仅对违规行为做出回应,而且大多数文字都不错。我们加载了toloker,在100个案例中,有95个案例的评价为“一切都很好”。我不得不做一个不寻常的工作-要使分类器具有良好的内容,这次标记的好处已经积累了很多。

第一个分类器看起来像这样:我们对文本进行词素化(将单词简化为初始形式),丢弃所有语音服务部分,并使用预先准备的“好的词缀字典”。如果文本中所有单词均为“ good”,则整个文本不包含违规。在不同的服务上,这种方法立即提供了25%到35%的手动标记自动化。当然,这种方法不是理想的:很容易将几个无辜的单词组合在一起并获得令人反感的陈述,但是它使我们能够快速达到良好的自动化水平,并花了一些时间来训练更复杂的模型。

好的文本分类器的以下版本已经包括线性模型,决策树及其组合。例如,为了标记粗鲁和侮辱,我们尝试使用BERT神经网络。在这里,重要的是要掌握上下文中单词的含义以及不同句子中单词的连接,而BERT可以很好地做到这一点。(顺便说一下,最近,《新闻》的同事告诉他们如何使用该技术执行非标准任务-搜索标头中的错误。)结果,根据服务的不同,我们设法自动完成了90%的流程。

准确性,完整性和速度


为了进行开发,您需要了解哪种自动分类器可以带来收益,对其进行更改,以及手动检查的质量是否不会降低。为此,我们使用准确性和完整性指标。

准确性是正确判断在不良内容的所有判断中所占的比例。精度越高,误报就越少。如果您不遵循准确性,那么从理论上讲,您可以删除所有垃圾邮件和淫秽物品,并用它们消除一半的好邮件。另一方面,如果您仅依赖准确性,那么最好的技术将是不会抓住任何人。因此,还有一个完整性指标:检测到的不良内容占不良内容总量的比例。这两个指标相互平衡。

为了进行测量,我们对每种服务的整个输入流进行采样,并将内容样本提供给评估人员,以进行专家评估并与机器解决方案进行比较。

但是还有另一个重要指标。

我在上面写道,即使在5分钟之内,数百人仍会看到不可接受的消息。因此,我们考虑了在隐藏内容之前向我们展示了多少次不良内容。这很重要,因为它不足以有效地工作-您需要快速工作。当我们针对垫子建立防御时,我们会充分感受到它。

安提玛猫和狗的例子


轻微的抒情偏离。有人可能说脏话和侮辱并不像恶意链接那样危险,也不像垃圾邮件那样令人讨厌。但是,我们努力为数以百万计的用户之间的交流提供一个舒适的环境,人们不喜欢回到冒犯的地方。难怪在包括哈布雷在内的许多社区的规则中都明确规定了禁止淫秽语言和侮辱性行为。但是我们分心了。

马塔语词典无法应付所有俄语的财富。尽管事实上只有四个主要的淫秽根源,但您可以从中制造出许多普通人都听不见的单词。此外,您可以用单词的音译部分书写,用类似的组合替换字母,重新排列字母,添加星号等。有时,在没有上下文的情况下,基本上无法确定用户是什么淫秽单词。我们尊重哈伯(Habr)的规则,因此,我们不会在现场实例中展示这一点,而是在海豹和狗身上展示这一点。



“柳,”猫说。但我们了解到那只猫又说了一句话...

我们开始考虑词汇的“模糊匹配”算法和更智能的预处理:音译,胶合空格和标点符号,搜索模式并在其上编写单独的规则。这种方法产生了结果,但是常常降低了准确性,却没有提供所需的完整性。

然后我们决定“像骂人一样思考”。我们自己开始在数据中引入噪音:重新排列字母,产生错别字,用类似的拼写替换字母,等等。最初的标记是通过将mat字典应用于大型文本而实现的。如果您采用一个句子并以几种方式使它失真,那么您已经有很多句子了。因此,您可以将训练样本增加数十倍。剩下的就是在接收到的池上训练一些或多或少考虑了上下文的智能模型。



现在谈论最终决定还为时过早。我们仍在尝试解决该问题的方法,但是我们已经看到,一个由几层组成的简单符号卷积网络大大超过了字典和常规:这证明它同时提高了准确性和完整性。

当然,我们知道,即使是最先进的自动化,也总有办法解决,尤其是在如此鲁ck的情况下:编写以使笨拙的机器无法理解。在这里,与打击垃圾邮件一样,我们没有目标来消除编写淫秽内容的可能性,我们的任务是使游戏不堪一击。

可以轻松地分享您的意见,交流和评论的机会。要获得安全,舒适的环境并尊重人,要困难得多。没有这个,就不会有任何社区的发展。

All Articles