前情传送门 → 熊猫吃短信:全新的基于机器学习的垃圾短信过滤应用
在最近的几个版本迭代中,我新收集到了四万多条短信样本,并扩充到了熊猫的模型中。我个人很喜欢 ML 这种流程,只要不停的喂数据就好了,不用改一行代码,它就能变的更好……
由于用户群扩大,在一条短信是不是垃圾短信上有了越来越多的分歧… 比如,有些人认为「送你一张优惠券」应该是正常短信,有些人认为要看优惠券面值和门槛来区分,我认为所有这种都是骚扰短信……
再比如理财类的短信,「 XX 基金推荐购入」,短信本身是否有价值,取决于是否是用户订阅的,发给 A 用户可能是有用的信息,发给 B 用户就是骚扰短信了。
我在中间一个版本中,花了很多天时间重新标注了几万条短信样本,从二值分类(正常和垃圾短信)改成了多值分类(正常、广告、不重要、公益等),试图解决一部分问题,但是多值分类会让机器学习的模型成倍增长,并且超过扩展的内存限制( iOS 短信扩展的内存限制非常低)后来经过多次尝试后我最终选择了降维后的三分类(正常、广告、不重要)模型( 200Kb 大小)。
用户的需求总是不同的,我尽可能的让熊猫的预测结果满足大部分的期望。虽然我很希望用 ML 来解决所有问题,但是目前还没有办法在手机上动态调整模型,就算可以,一个用户喂上十几条短信也是很难将熊猫吃了几万条短信形成的思维改过来的……
所以最终我还是加了号码、关键词黑、白名单的功能,让用户可以简单粗暴的自定自己的需求。对于常见的短信模式不建议加关键词来拦截,比如退订,你要相信熊猫有足够的智力分辨带「退订」的是不是垃圾短信…… 建议只对一些特有的情况加关键词,比如「 XX 手机报」「 XX 中学」等
起初我用 python 训练的模型,转换成 CoreML 后会有一点点结果不一样,因为分词算法不一样。由于把带词库的算法移植到 iOS 上很难(光是加载词库就超过 iOS 扩展的内存限制了,直接就会 OOM )所以我就反过来用 pyobjc 直接调用 CoreFoundation
的分词算法,保证训练和预测时分词一模一样。除了性能有点低外,效果还不错,就是这个分词算法有点笨(
全干的独立开发者一枚,靠卖 App 为生。会 Python、移动开发、前端,略懂设计。目前作品有 HyperApp、Ping、Cloud Speed、熊猫吃短信。
1
3a3Mp112 2018-02-03 13:30:50 +08:00
「 XX 基金推荐购入」 不管对任何用户来说都应该是垃圾短信。 支持我的点个赞
|
3
wadjj 2018-02-03 13:38:48 +08:00 via iPhone
我觉得这里存在的问题是苹果的机制本质上不是根据单条内容来决定过滤的,因为一条垃圾被过滤整个号码就被过滤。在这个前提下,就不可能完美,只能在过严或过松之间平衡。
|
4
wadjj 2018-02-03 13:40:52 +08:00 via iPhone
我觉得本身苹果的机制需要改,逻辑模型就应该是垃圾 不重要 正常,只有发纯粹的垃圾信息的号码才应该被彻底干掉,不重要信息可以弱提醒
|
5
lzmbbg 2018-02-03 13:51:59 +08:00 via iPhone
今天收到两条澳门短信没识别
|
6
waylybaye OP @wadjj 是的,粒度应该更小些,可以只过滤单条内容就行了。其实短信这种东西已经快被边缘化了,又不开放,估计很难出现创新了
|
8
ch3nOr 2018-02-03 14:00:33 +08:00 1
很好用,继续加油。
|
10
oh 2018-02-03 14:42:38 +08:00 via iPhone
原来楼主就在 V2 啊… 支持一下
如果有什么需要帮助的也可以说哈 |
11
oh 2018-02-03 14:42:54 +08:00 via iPhone
有什么想找合作的也可以说
|
12
EchoChan 2018-02-03 14:46:44 +08:00 via iPhone
支持!
|
14
tulongtou 2018-02-03 15:15:51 +08:00 via iPhone
可以做到每个用户自己有模型嘛?就是要注册完单独存自己的过滤规则这样的
|
15
nathanw 2018-02-03 15:25:47 +08:00 via iPhone
之前卸载了,但发现过滤依然存在,系统设置禁用也是一样,希望提供个禁用功能,仅提供自定义
|
16
cai314494687 2018-02-03 15:27:10 +08:00
熊猫吃短信 有几次把我收的验证码都过滤掉了
|
17
waylybaye OP @tulongtou 这个有点难,其实也不方便,因为要喂上几百条才能有可以用的一个模型吧,我感觉大部分用户是没有这个兴趣自己从头调教的…
@nathanw 你把过滤选项全取消就可以了。禁用或者卸载过滤器后系统好像并不会重置信息的标志位。 @cai314494687 那是一个号码混着发正常短信和垃圾短信的吧,这种情况还真没好办法,如果需要的话只能给号码加白名单 |
18
tulongtou 2018-02-03 17:54:08 +08:00 via iPhone
@waylybaye 可以有一个默认的模型啊,就像先在这样写在 APP 里,然后自己喂就可以扩展自己的模型,然后存到 iCloud 里,这样即使换手机也不会丢掉模型。当然用户也可以选择把自己的模型上传给你
|
19
wangkq 2018-02-03 18:39:29 +08:00
已支持,有个问题想请教一下,以后的规则是通过软件更新还是怎样
|
20
wwqgtxx 2018-02-03 18:39:41 +08:00 via iPhone
其实目前看熊猫吃短信的准确性还是可以接受的,支持作者一下
|
21
f0rger 2018-02-03 19:10:33 +08:00 via iPhone
支持一波,本来还想建议说增加个自定义号码的,结果就出了,接下来要支持正则了吧
|
22
thankfish 2018-02-03 20:33:17 +08:00
熊猫发在 v2 的第一天两个账号都支持了(欧区和中区)。和 up 的习惯完全一样,我也认为这些就是骚扰短信,肥肠好用。这种细心的照顾其他用户需求的行为再给个赞,有好作品了继续支持。
|
23
goodbest 2018-02-03 20:59:42 +08:00
我认为 iOS12 的时候苹果一定会开放 iMessage 的短信过滤 API,然后“再一次改变世界”
手动 doge |
24
CatCode 2018-02-03 21:15:09 +08:00
还是很喜欢这个 APP 的。
只是最近 B 站会员购买漫展门票和东航买机票的短信被当作广告拦截了。已经提交了样本为正常短信。 |
25
waylybaye OP @tulongtou #18 主要是 CoreML 没有提供学习的机制,我自己要在手机上实现下分类算法感觉挺麻烦的 😂
|
26
Liir 2018-02-03 23:01:40 +08:00
有的时候会抽风,把不应该过滤的验证码短信都过滤了,把应该过滤的广告短信全都放进来了。然后把他放进来的垃圾短信拿到 app 里面去验证,却能正确识别……
|
27
waylybaye OP |
28
Nobitasean 2018-02-03 23:04:33 +08:00
把我阿里小号的整个号码来的短信都给吃掉了
|
29
waylybaye OP |
30
waylybaye OP @CatCode #24 感谢支持,我下个版本会更新下模型。航空公司的有个棘手的地方是它会用同一个号码发订单消息以及广告,导致订单信息可能会被牵连。要是只有一条订单消息结果被吃了的话,那就是模型没训练好……
@Liir #26 弱弱的问一句广告短信是新收到的吧 😂 安装前收到的和 iMessage 广告是不会过滤的… 如果是新收到的普通短信 App 内识别成功但没过滤,最可能是 iOS 内存满了,导致收到短信时过滤器的没法分配内存… 一般这种情况,重启就好了…… @Nobitasean 阿里小号不是都成 App 内消息了么。它发的短信发件人是不一样的么? |
32
tulongtou 2018-02-03 23:59:10 +08:00 via iPhone
模型更新不能通过 http 么?
|
33
whlvi 2018-02-04 00:05:52 +08:00 via iPhone 1
支持一波 全家桶已购齐😝
|
34
waylybaye OP |
36
dxppp 2018-02-04 06:51:08 +08:00
楼主的帖子点击图标就可以打开链接是怎么实现的
|
37
dxppp 2018-02-04 07:08:07 +08:00
|
38
oh 2018-02-04 09:36:07 +08:00 via iPhone
|
39
Aether 2018-02-04 09:50:25 +08:00
可能每个人的需求不一样。对我来说,短信里有 [ ] [ ] TD 退订 验证 10000 欢迎 字样……的都是垃圾短信。或者说,非联系人发来的短信都应该是单独一列静音无提示。
但过滤之后还短信图标上还显示红点,我的感想是:傻。 |
40
waylybaye OP |
41
merlinX 2018-02-05 08:37:51 +08:00
说实话,有一点很蠢,我是 watch 用户,然后所有被熊猫在手机上拦截掉的短信,只要我带着手表,都会在手腕上震动提醒下...应该是苹果的锅?
|
45
draftbk 2018-02-06 17:16:43 +08:00
求问最开始的短信样本哪里找
|
47
draftbk 2018-02-07 11:37:21 +08:00
"花了很多天时间重新标注了几万条短信样本"..嗯之前漏看了,好辛苦!
|