面向黑灰产治理的恶意短信变体字还原第6名方案

2024-06-21 07:58

本文主要是介绍面向黑灰产治理的恶意短信变体字还原第6名方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
前段时间组织同学们参加了面向黑灰产治理的恶意短信变体字还原比赛,获得了第6名。方案如下:

赛题链接:面向黑灰产治理的恶意短信变体字还原 竞赛 - DataFountain

赛题任务描述:本任务类似于机器翻译,需要针对恶意短信中的变体字进行还原。恶意垃圾短信为了跳过安全检测会将字符变成变体的字符,需要采用深度学习建模的方法将测试集中新出现的短信变体字还原为正常信息文本,即不含有变体字、干扰字符,所有变体字部分应使用常见简体汉字、字符来表示,同时需要保证不包含变体字的正常文本不受影响。

比赛数据集示例:

变体句子:噂儆的碦戸:其鎃祝册茺贈镐888葒笣!禛朲对弈佰捆任你選!嶺:http://url.cn/5aLeqP2

还原后:尊敬的客户:棋牌注册充赠高888红包!真人对弈百款任你选!领:url.cn5aLeqP2

比赛评测方案:

评测指标1:
BLEU得分:计算参赛团队处理后的还原文本与人工标注文本的BLEU值。
在这里插入图片描述

N=4,其中:
在这里插入图片描述
评测指标2:
f1值:指标按如下标准定义,变体字还原结果正确计为TP,变体字漏检计为FN,变体字还原错误或正常文字被错误还原计为FP。

比赛中会同时计算评测指标1和评测指标2,最终结果将二者得分相加计算平均值作为最终排名的得分。

模型要求:考虑到模型会在移动终端上使用,所以参赛团队在做算法选择时要综合考虑模型的资源占用和推理耗时,模型大小的上限不能超过400MB,CPU(Intel® Xeon® CPU E5-2630 v4 @ 2.20GHz)上的平均单条推理耗时不能超过300ms。最终模型大小和推理耗时会做为决赛成绩的加分项决定最终排名。

技术路线:

1.baseline:采用两层堆叠的transformer的Encoder作为基础模型,对编码后的文本进行特征提取。然后接分类层和softmax函数进行分类,分类的类别数为词表的大小,也就是进行字符级别的分类,预测每个字符最有可能被分类成哪一个字符。
在这里插入图片描述

2.输入输出对齐:因为是字符级别的分类,所以要求输入的input和输出的label必须长度一致,也就是对于输入的每个字符,都需要有相应的分类标签与之对应。但题目所给的训练数据的input和label并非长度一致的,因此需要一个文本对齐的方法。

文本对齐的方法是:遍历input和label中的字符,找出其中的同音或型近字,将同音/型近字进行一一对应,并将两对同音/型近字中间的部分进行对应,中间部分input的字符串和label中对应的字符串长度不一的,将较短的字符串使用空字符串补齐至长度和较长的字符串相同长度。

如何判断是否是同音/型近字:求出两个字的拼音/笔画的最长公共子串的长度,使用该长度除以较长字符串的长度得到音近/型近得分,根据设定的阈值来判断是否为音近/型近字。

3.特征构造:由于变体字中存在大量的同音字替换,因此在生成字的embedding时,同时生成了拼音的embedding,将两个embedding进行concat输入模型。Embedding是通过字和拼音训练后保存到本地的。

首先将一句话中每个字符转成数字序列,然后将其中的中文也全部转为,数字序列,对两个序列使用word2vec训练出嵌入向量,将字的向量和拼音的向量连接到一起,并保存到本地,一个字对应一个200维的Embedding。

4.循环构造训练数据,进行数据增强:首先通过固定长度的滑动窗口分别选中训练集和测试集的词语,根据笔画和拼音的最大公共子串的长度判断出是否是变体字,需要人工筛查一遍,创建出造错表。再使用边训练边造错的方法,使用0.85的概率从训练集中随机抽取训练数据进行训练,使用0.15的概率将训练集的label进行造错,每个句子造错不超过三个。这样尽可能地保证模型可以学到造错表所有的错误。

最终排名:
在这里插入图片描述

B榜成绩第8,提交代码后,主办方复现过程中,排名提升到第6。

这篇关于面向黑灰产治理的恶意短信变体字还原第6名方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080644

相关文章

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

android 免费短信验证功能

没有太复杂的使用的话,功能实现比较简单粗暴。 在www.mob.com网站中可以申请使用免费短信验证功能。 步骤: 1.注册登录。 2.选择“短信验证码SDK” 3.下载对应的sdk包,我这是选studio的。 4.从头像那进入后台并创建短信验证应用,获取到key跟secret 5.根据技术文档操作(initSDK方法写在setContentView上面) 6.关键:在有用到的Mo

SQL Server中,用Restore DataBase把数据库还原到指定的路径

restore database 数据库名 from disk='备份文件路径' with move '数据库文件名' to '数据库文件放置路径', move '日志文件名' to '日志文件存放置路径' Go 如: restore database EaseWe from disk='H:\EaseWe.bak' with move 'Ease

警告,恶意域名疯狂外联,原因竟然是……

前言    在某个风和日丽的下午,突然收到客户那边运维发过来的消息说我司的DTA设备在疯狂告警,说存在恶意域名外联,我急忙背上小背包前往客户现场,经过与客户协同排查,最终确定该事件为一起挖矿病毒引起的恶意域名外联事件。(因客户信息保密且为了保证文章逻辑完整性,部分截图为后期追加图) 事件分析 一看域名地址donate.v2.xmrig.com

适用于 Android 的 几种短信恢复应用程序

Android 设备上的短信丢失可能由于多种原因而丢失,例如意外删除、恢复出厂设置、系统崩溃或病毒攻击。是否有应用程序可以恢复 Android 上已删除的短信?幸运的是,有几款短信恢复应用程序可以扫描您的 Android 手机并从内存或 SIM 卡中检索已删除的短信。 然而,并非所有短信恢复应用程序都是可靠或有效的。有些可能无法恢复消息,有些可能会损坏您的数据,有些甚至可能包含恶意软件或间谍软件

微服务(服务治理)

服务远程调用时存在的问题 注册中心原理 服务治理中的三个角色分别是什么? 服务提供者:暴露服务接口,供其它服务调用服务消费者:调用其它服务提供的接口注册中心:记录并监控微服务各实例状态,推送服务变更信息 消费者如何知道提供者的地址? 服务提供者会在启动时注册自己信息到注册中心,消费者可以从注册中心订阅和拉取服务信息 消费者如何得知服务状态变更? 服务提供者通过心

【建设方案】基于gis地理信息的智慧巡检解决方案(源文件word)

传统的巡检采取人工记录的方式,该工作模式在生产中存在很大弊端,可能造成巡检不到位、操作失误、观察不仔细、历史问题难以追溯等现象,使得巡检数据不准确,设备故障隐患得不到及时发现和处理。因此建立一套完善的巡检管理系统是企业实现精细化管理的一项重要工作。 基于GIS地理信息系统绘制常规巡检线路,设置线路巡检频率,当线路处于激活状态时,可根据已设置的频率自动生成巡检线路任务,并以消息的形式推送给执行人,

【架构设计】模块化-面向接口编程

模块化的优势 结构清晰:业务独立,代码实现分离便于协作:耦合度低,不会影响团队其他成员的开发进度便于维护:各模块管理自身代码、布局、资源,不影响主工程 模块化的特点 高内聚,低耦合 常见的模块化方法 所有模块都放在一个工程里实现每个模块都放在一个独立工程中实现 模块的划分 从高到低 业务层平台能力层基础层 模块间的通信 直接依赖事件或广播通信路由通信面向接口通信 具体实现

分布式锁实现方案-基于Redis实现的分布式锁

目录 一、基于Lua+看门狗实现 1.1 缓存实体 1.2 延迟队列存储实体 1.3 分布式锁RedisDistributedLockWithDog 1.4 看门狗线程续期 1.5 测试类 1.6 测试结果 1.7 总结 二、RedLock分布式锁 2.1 Redlock分布式锁简介 2.2 RedLock测试例子 2.3 RedLock 加锁核心源码分析 2.4

Android Apk瘦身方案1——R.java文件常量内联

R.java 文件结构 R.java 是自动生成的,它包含了应用内所有资源的名称到数值的映射关系。先创建一个最简单的工程,看看 R.java 文件的内容: R文件生成的目录为app/build/generated/not_namespaced_r_class_sources/xxxxxDebug/processXXXXDebugResources/r/com/xxx/xxx/R.java