文字审核:数据科学家礼节课

哈Ha!



从本文开始,我们将开始发表有关数据科学的一系列文章,这是我们在俄罗斯农业银行金融技术发展中心解决的任务。



去年,Rosselkhozbank宣布为农工企业创建和开发生态系统。对于生态系统的一个基本站点-我们的农业,我们决定做一些有用的任务,我们将在下面讨论。







Svoe Farmezstvo网站是俄罗斯各地最大的供应商为农业生产商提供商品的市场。该站点包括农民最优先考虑的商品:植物保护产品,肥料,种子,农业机械等。成千上万的供应商出于销售目的上载了有关其产品的信息。而且,当然,您需要实施一个过程来检查下载内容的质量。在这方面,我们决定创建自己的工具来预审文本和图形信息。



他们在做什么?



在本文中,我们将告诉您在与MIPT实验室(专门为世行的任务创建)的合作框架内,我们如何开发出一种工具,使您可以高精度地对文本内容进行预模式。



我们的目标听起来很简单-我们创建的工具应自动将文本分类为可以放置在网站上(类别0)或不可接受(类别1)。如果算法不能清楚地理解文本所属的类别,则我们将其发送(文本)进行人工审核。



我们有一个文本处理任务:我们想要过滤在所有意义上都是“有毒”的文本,即:诅咒,侮辱,法律禁止的各种内容,以及仅是不能在网站上放置的文本。



我们希望我们开发的算法将一组文本作为输入,并产生一个从0到1的数字-文本“有毒”的程度或可能性。这个数字越接近一个数字,评论越有毒。



应当指出的是,检测有毒文本的问题根本不是新问题,并且在英语段中非常流行。几年前,在Kaggle的《毒性评论分类挑战》中解决了类似的问题。对于俄语,应该以类似的方式获得解决方案,但是由于俄语在结构上比英语复杂,因此模型的质量可能会降低。在公共领域中



只有一个标记的俄语数据集在文本中寻找毒性。我们还设法找到了一个数据集来搜索侮辱(一种特殊的毒性情况)。另外,我们从农业门户网站收集了一些广告示例,并将其标记为可接受(类别-0)。



就给定的农业主题而言,我们设定的任务非常独特。它的特殊性在于,在农业方面,在日常生活中经常受到侮辱的短语并不总是这样。常见的示例如下:“不要放入鼻子”-文本显然是不可接受的,而带有“猪鼻子”的文本可以很容易地放在网站上(尽管取决于上下文)。这同样适用于农场动植物的某些亚种。



如果我们要讨论解决文本分类的此类问题,那么实际上,即使是最简单的模型(线性)也可以给出良好的结果但是,与往常一样,为了获得更高的质量,我们将使用神经网络。解决此类问题的最流行的体系结构(在撰写本文时)是BERT。在上面提到的Kaggle竞赛之时,这种架构尚不存在,因此使用了其他架构。但是,此任务后来在BERT的帮助下成功解决



你是怎么做到的?



让我们继续进行最有趣的部分-解决问题。在考虑了该工具的“体系结构”之后,我们决定使用三种模型:字典搜索(作为淫秽词汇的过滤器),逻辑回归(作为基本解决方案)和BERT(作为更高级的解决方案)。



一般方案







解决方案的一般方案如下:在“黑匣子”中,文本首先进入幼稚的分类器,该幼稚的分类器基于淫秽单词(代词)的字典,此处包含“不良”单词的文本会被立即截断(它们的毒性始终为( 1)。通过第一阶段的文本会落入更复杂的神经网络模型,该模型给出了毒性程度,如果神经网络模型失败,则将其替换为更简单的逻辑回归-也就是说,无论如何我们都会得到一些非幼稚的结果。



现在,让我们来看看详细的每个组件。



天真的分类器



这里的一切都非常简单:根据淫秽词汇词典,很容易理解文本中是否包含“坏”字。



也就是说,在此阶段,您甚至可以不使用ML模型,而立即清除包含“不良”字词的文本。但是,如果文本中未使用此类词典单词,但是该文本仍然不能在门户网站上发布,该怎么办?让我们尝试使用逻辑回归和BERT'a解决此问题。



逻辑回归



最简单的模型可以根据可用数据预测值。使用nltk的TF-IDF和TweetTokenizer获得此模型的文本向量。众所周知,这种模型允许使用逻辑函数来估计文本中毒的可能性。在我们的体系结构中,逻辑回归可“确保”神经网络。



伟大而可怕的BERT



我们使用了DeepPavlov的预训练的RuBert模型,我们对该标记文本进行了进一步的训练。无需详细说明的预测过程如下:





我们建造,建造并最终建造!



我们使用最喜欢的指标准确性,ROC-AUC和F1量度来评估质量。递延样本的最终质量指标如下:



算法/指标

幼稚

伯特

LR

天真→BERT

天真→LR

准确性

0.854

0.901

0.865

0.909

0.879

中华民国

0.782

0.960

0.921

0.963

0.939

F1措施

0.722

0.840

0.800

0.855

0.824



操作速度:在BERT处理下,GPU(GeForce 1080Ti)上的速度为每分钟2800个文本,这是显示算法中最慢的算法。



不出所料,使用BERT的指标结果稍好一些,尽管不多。



我们得出了什么结论



最后,我想指出几个重要方面,我们认为,没有这些重要方面,就不可能以工业模式启动此类解决方案。



  1. 您始终需要考虑有关文本标记的任务细节。
  2. 在模型“怀疑”其决定的情况下,有必要对文本进行人工审核。您不希望不当内容最终出现在您的产品中。
  3. 还必须发送上一段中的手写文本,以进行进一步的培训。因此,您可以逐步改进模型,并减少手动审核期间的工作量。
  4. 最好使用集成方法来解决问题。有时,即使是字典中最简单的“模型”也已经给出了不错的结果。
  5. 根据您的任务选择最佳模型。在我们的例子中,我们选择BERT是因为它对上下文的反应比对数回归更好。


感谢您的关注!



在下一篇文章中,我们将分享我们在生态系统的同一平台-我们的农业上对图像进行预审核的经验。



All Articles