V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
waylybaye
V2EX  ›  分享创造

熊猫吃短信:全新的基于机器学习的垃圾短信过滤应用(iOS ¥ 1 元特价)

  waylybaye · 2017-12-04 11:28:18 +08:00 · 16782 次点击
这是一个创建于 2531 天前的主题,其中的信息可能已经有所发展或是发生改变。

作为一个生活在移动互联网时代的技术宅,饱受骚扰短信之苦,但没有一个简单的又不用上传自己短信的过滤应用。于是我从自己收到的两万多条短信以及测试期间用户提交的短信样本中训练出了熊猫。

iOS 11 带来了非常强大的 CoreML 机器学习框架,开发者都用来做视觉处理了,我就用它做一个文本归类的应用吧,让熊猫可以在手机里安家。

View on AppStore

熊猫吃短信

准确的语义识别

熊猫从庞大的样本中学习到了垃圾短信的文本模式,可以非常准确的从复杂的语义环境中对短信进行分类。比如下图中非常相似的 [京东支付] 的两条短信。

垃圾短信样本

你可以拷贝短信后,在应用里面点击 准确性测试 来测试准确度。

使用非常简单

您只需要安装后打开 设置 → 信息 → 未知与过滤信息 然后选中 熊猫吃短信 即可。熊猫就会默默的帮你吃掉垃圾短信。

关注隐私

熊猫不需要服务器端,不需要联网。应用自带完整的训练模型,使用 CoreML 就可以在手机上对短信进行分类。iOS 11 的沙盒限制也不允许短信过滤器访问网络以及向主 App 共享数据。虽然通过配置项可以让 iOS 11 向自己的服务器上发送短信在云端判断,但是熊猫并没有使用这一功能。

自动进化

熊猫正在飞速成长中,分类准确性依赖于熊猫有没有见过类似的信息。但是世界那么大,总有没吃过的东西,熊猫也有见识浅的时候。基于自愿原则,您可以在应用里面提交新的短信样本喂养熊猫,熊猫会从新的样本中学习到新的垃圾或者正常短信模式。

注意:提交短信样本会将短信匿名上传到服务器上,并非本地训练,熊猫将在云端完成学习,然后分发到所有人的手机上。

关于偏食

由于熊猫是我教的(监督学习),其一定程度上继承了我的喜好,对于有些比较模糊的短信,比如优惠、促销信息,我是一律标记为骚扰短信的。但是有些人可能会喜欢收到此类通知,大家自行取舍。

系统限制

由于 iOS 11 的系统设计原因,被过滤的短信也会显示角标,以及在 Apple Watch 上通知。另外 iOS 11 过滤短信是基于对话的过滤,如果同一个号码既发骚扰短信又发正常短信,那么整个对话都会被过滤。这种现象常见于五位数的号码,但 10 开头的短信发送端口非常少见。

最后

  • 熊猫的 Logo 来自于我最喜欢的一个滚滚背影图。
  • 熊猫目前只针对中文做了训练,其它语言环境下可能会撂摊子。
  • 我是一名全职的独立开发者,全干工程师,会移动开发,Python 十年老司机,略懂设计,求个关注(
191 条回复    2018-02-03 17:33:40 +08:00
1  2  
QAPTEAWH
    1
QAPTEAWH  
   2017-12-04 11:33:05 +08:00
1 元买不了吃亏上当,先买了。

如果有防骚扰电话功能就好了。否则还是得装腾讯管家之流,而腾讯管家附带短信过滤(效果不议)。
leots
    2
leots  
   2017-12-04 11:33:05 +08:00   ❤️ 1
之前在微博上看到这个 app 感觉很棒
想买来支持一下,可惜没有升级到 iOS11
mpich
    3
mpich  
   2017-12-04 11:36:01 +08:00
语料能 share 吗…
coolcoffee
    4
coolcoffee  
   2017-12-04 11:39:07 +08:00
mark 一下,我现在都是直接屏蔽所有短信,要接验证码再进去看。

现在 iOS 很扯淡的就是,就算识别为辣鸡短信,仍然会显示“+1 ”
SourceMan
    5
SourceMan  
   2017-12-04 11:41:35 +08:00
买不了吃亏买不了上当,支持再支持
scp055
    6
scp055  
   2017-12-04 11:42:11 +08:00
mark 下,有时间研究下 coreML
waylybaye
    7
waylybaye  
OP
   2017-12-04 11:43:48 +08:00   ❤️ 1
@QAPTEAWH 电话过滤需要庞大的号码库,这个我就无能为力了… PS:企鹅好像不拦截自家的短信?

@leots CoreML 和短信过滤都是 11 才有的…

@mpich 我自己的显然不能,太多隐私信息,用户贡献的我也不知道自己有没有权利 share,没有加授权协议……

@coolcoffee 是的,这个不知道苹果是基于什么考虑的设计。
yksoft1
    8
yksoft1  
   2017-12-04 11:47:13 +08:00
为啥不用 tensorflow 做模型,这样可以跨平台。。
lingo
    9
lingo  
   2017-12-04 11:48:29 +08:00
@coolcoffee 跟你一样,突然意识到自己已经几乎没用过短信了,索性通知全关。几个月下来也没啥影响。
waylybaye
    10
waylybaye  
OP
   2017-12-04 11:49:10 +08:00
Mirage09
    11
Mirage09  
   2017-12-04 11:49:23 +08:00
不支持其它语言...但是支持英语么?
yksoft1
    12
yksoft1  
   2017-12-04 11:50:53 +08:00
@waylybaye 显然不用 CoreML,直接把 tensorflow 的库放进去,用其 C++的接口做
waylybaye
    13
waylybaye  
OP
   2017-12-04 11:50:57 +08:00
@Mirage09 目前只有很少的英语训练集,所以应该是不支持的
ytterbium
    14
ytterbium  
   2017-12-04 11:52:24 +08:00 via Android
@waylybaye 训练语料哪搞的?好厉害
waylybaye
    15
waylybaye  
OP
   2017-12-04 11:53:59 +08:00
@yksoft1 我没试过不太清楚,我觉得它的 C++接口应该没有对 iPhone 进行硬件优化吧(瞎猜的
waylybaye
    16
waylybaye  
OP
   2017-12-04 11:56:48 +08:00
@ytterbium 我自己手工一个个标注的啊,累死我了。之前有在网上下载短信语料,但是一旦用于目前的垃圾短信识别基本没法用,于是我就放弃公开语料自己收集了。借用朋友的一句话 “脱离生活的样本都是假样本”
sobigfish
    17
sobigfish  
   2017-12-04 12:13:45 +08:00
用支付宝的红包支持了下(居然还可以两个红包合用😂)
sobigfish
    18
sobigfish  
   2017-12-04 12:20:10 +08:00
“提交短信样本会将短信匿名上传到服务器上”
提交时可以把里面的数字脱敏么,比如验证码 比如手机号
waylybaye
    19
waylybaye  
OP
   2017-12-04 12:27:11 +08:00
@sobigfish 可以可以,我正打算做这件事呢 👍
QAPTEAWH
    20
QAPTEAWH  
   2017-12-04 12:27:39 +08:00
@coolcoffee 角标可以关掉。我短信是关闭声音、角标、锁屏显示的。
qiaoqiao1235
    21
qiaoqiao1235  
   2017-12-04 12:31:57 +08:00 via iPhone   ❤️ 1
哦,原来 hyper app 也是楼主开发的!
douglas1997
    22
douglas1997  
   2017-12-04 12:50:03 +08:00 via iPhone   ❤️ 1
已买,支持一下。
whlvi
    23
whlvi  
   2017-12-04 12:59:59 +08:00 via iPhone   ❤️ 1
已买,支持一下
sobigfish
    24
sobigfish  
   2017-12-04 13:08:36 +08:00
呃,看了下文档 https://developer.apple.com/documentation/identitylookup
原来上传到网络判断是直接传的(不能脱敏) 但 lz 没有用这个 API
plist 里还是默认的 URL:example-sms-filter-application.com

但是 example-sms-filter-application.com 这个域名被人注册了的,还是有危险的,lz 请尽快修改 ILMessageFilterExtensionNetworkURL
bpsy
    25
bpsy  
   2017-12-04 13:11:52 +08:00 via iPhone   ❤️ 1
已买,支持一下
Tink
    26
Tink  
   2017-12-04 13:14:29 +08:00 via iPhone
这个 666 啊
a554340466
    27
a554340466  
   2017-12-04 13:31:43 +08:00 via iPhone
coreML 是怎么训练模型的
whlvi
    28
whlvi  
   2017-12-04 13:32:21 +08:00 via iPhone
原来 hyper app 也是楼主开发 除了 hyper ping 还没有购买 剩下包括 cloud speed 也购买了
designer
    29
designer  
   2017-12-04 13:41:25 +08:00
纯支持,但是这个不给看正脸,只能看背影的熊猫图标不太好看。
准备买楼主的 Hyper App
cloverstd
    30
cloverstd  
   2017-12-04 13:49:30 +08:00


下面的框太小了
xenme
    31
xenme  
   2017-12-04 13:51:53 +08:00
过滤改不了角标都是垃圾,所以,iOS 平台没有能用的过滤软件
waylybaye
    32
waylybaye  
OP
   2017-12-04 13:56:43 +08:00   ❤️ 2
@sobigfish 这个是 Xcode 模板默认的,但只要没加 Associated Domains 就没事……

@a554340466 用别的训练啊,我用的 scikit-learn,我上面的那个链接有 CoreML 支持的库列表。
AsherG
    33
AsherG  
   2017-12-04 13:58:01 +08:00
哦!我说怎么上次在我购买的列表里没看到 HyperApp 呢,我还以为我记错了 app 的名字,刚刚在楼主的 app 列表里点了一下才发现原来在国区被下架了
waylybaye
    34
waylybaye  
OP
   2017-12-04 13:58:05 +08:00
@whlvi 哈哈哈哈,买了我一个,全家桶带回家 😂

@designer 正面细节太多了,我画不来……

@cloverstd 下面的框是可以滚动的~
waylybaye
    35
waylybaye  
OP
   2017-12-04 14:03:32 +08:00
@AsherG 伤心往事(
iCodex
    36
iCodex  
   2017-12-04 14:12:52 +08:00
美区 0.99 美金
forever139
    37
forever139  
   2017-12-04 14:19:14 +08:00   ❤️ 1
@waylybaye 都快集齐你的全家桶了
Jreen
    38
Jreen  
   2017-12-04 14:37:04 +08:00
怎么把误杀的短信(已经在未知与过滤信息)的恢复到联系人普通短信呢?我已经提交了正常短信文本检测…我又不想给 1069 加入通讯录,1069 号段经常变化就没弄通讯录
waylybaye
    39
waylybaye  
OP
   2017-12-04 14:43:03 +08:00
@Jreen 我 App 里面有说明的,你只要随便回复两条短信(或者 3 条)就出来了 😂
jiangzhuo
    40
jiangzhuo  
   2017-12-04 15:18:48 +08:00   ❤️ 1
测试了 666
twor2
    41
twor2  
   2017-12-04 15:19:12 +08:00
安装后怎么让我知道起到作用了? 不会用..
xingwing
    42
xingwing  
   2017-12-04 15:23:29 +08:00
把我浦发银行的短信,标记为垃圾了 @waylybaye
waylybaye
    43
waylybaye  
OP
   2017-12-04 15:32:44 +08:00 via iPhone
@twor2 等你收到垃圾短信了就知道效果了……你也可以拷贝下短信自己试试准确性


@xingwing 浦发的好像是有误判,我在训练新的模型,这次样本很多。你也可以试试是不是被其它短信牵连了……
fyibmsd
    44
fyibmsd  
   2017-12-04 15:38:27 +08:00
会误拦截验证码短信吗
lianz
    45
lianz  
   2017-12-04 15:42:37 +08:00   ❤️ 1
不错,支持一个。
waylybaye
    46
waylybaye  
OP
   2017-12-04 15:56:32 +08:00
@fyibmsd 我不能说百分之百的不会,因为我的训练样本中也有不少类似送苹果笔记本输入“验证码”这样的诈骗短信。一般来说正常的验证码几乎不会被拦截,我自己是没有遇到过被拦截的情况。
whlvi
    47
whlvi  
   2017-12-04 16:02:25 +08:00 via iPhone   ❤️ 1
@waylybaye 全家桶快齐了 哈哈 从国区跟随到美区
yanze0613
    48
yanze0613  
   2017-12-04 16:21:57 +08:00   ❤️ 1
已买,支持一下
loryyang
    49
loryyang  
   2017-12-04 16:26:56 +08:00
我觉得需要小心处理用户上传短信,别把模型带偏了。。
batilo
    50
batilo  
   2017-12-04 16:28:11 +08:00
会有 android 版本么?
waylybaye
    51
waylybaye  
OP
   2017-12-04 16:32:00 +08:00
@whlvi 哈哈哈哈,打游击战的感觉

@batilo android 上应该有不少好用的短信拦截的应用吧,我就不重复造轮子了
waylybaye
    52
waylybaye  
OP
   2017-12-04 16:32:37 +08:00
@loryyang 有这个考虑的,目前我都是人工校对的。不过样本快多到我人工处理不过来的地步了……
blakejia
    53
blakejia  
   2017-12-04 16:33:32 +08:00
有没有根据号码判断呢?单纯根据内容判断。是不是比较容易误判
waylybaye
    54
waylybaye  
OP
   2017-12-04 16:36:30 +08:00
@blakejia 不会啊,目前号码没加入特征中,没发现影响判断结果,号码的特征不太重要。
luoyuhui
    55
luoyuhui  
   2017-12-04 16:57:37 +08:00   ❤️ 1
已下载\(^o^)/~
cloverstd
    56
cloverstd  
   2017-12-04 17:21:35 +08:00
@waylybaye #34 知道可以滚到,但是不太协调和方便
onenightintokyo
    57
onenightintokyo  
   2017-12-04 17:37:16 +08:00   ❤️ 1
活捉八爷
RangerWolf
    58
RangerWolf  
   2017-12-04 17:49:03 +08:00
要是能过滤微信朋友圈的推广、营销消息就牛掰了!

自我感觉现在短信的应用场景,最多的就是验证码。

不过作为玩 NLP 的一员, 还要给楼主点个赞! (没有钱买 iPone, 只能精神支持了 :doge )
whlvi
    59
whlvi  
   2017-12-04 17:49:51 +08:00 via iPhone   ❤️ 1
@waylybaye 你的 hyper app 最开始国区上架就开始用 后来过去大片封杀和转到美区
qiongmay
    60
qiongmay  
   2017-12-04 17:53:59 +08:00
误拦的短信可以找到吗
AdamZ
    61
AdamZ  
   2017-12-04 17:55:52 +08:00   ❤️ 1
哎呀,我的八爷来了
Monad
    62
Monad  
   2017-12-04 17:59:51 +08:00   ❤️ 1
已兹磁 过两天看看效果
everhythm
    63
everhythm  
   2017-12-04 18:14:20 +08:00
lz 这个点子不错
另外弱弱的问一句,贝叶斯过滤不够用么?
邮件是这么做的,感觉纯文本的短信也可以平移过来
waylybaye
    64
waylybaye  
OP
   2017-12-04 18:28:46 +08:00
@cloverstd 这个是图省事直接用的系统组件… 一般短信也不会太长 😂

@RangerWolf 应用内部的都不太可能…还不如幻想下 iOS 12 苹果开放通知过滤权限

@qiongmay 可以啊,App 的帮助里面有说明
xz
    65
xz  
   2017-12-04 18:30:15 +08:00
ios10 能用吗
waylybaye
    66
waylybaye  
OP
   2017-12-04 18:30:29 +08:00
@everhythm 好多种考虑 1 是 CoreML 没办法直接支持使用 Bayes 的模型 2 是我将来可能上多分类
waylybaye
    67
waylybaye  
OP
   2017-12-04 18:34:31 +08:00
@xz App Store 说不能就是不能,没有后门(
c6h6benzene
    68
c6h6benzene  
   2017-12-04 18:35:02 +08:00   ❤️ 1
推特上看到,日区支持了一下。感谢作者!
yexiaoxing
    69
yexiaoxing  
   2017-12-04 18:36:36 +08:00   ❤️ 1
已入试试 :)
AsherG
    70
AsherG  
   2017-12-04 18:45:55 +08:00   ❤️ 1
又去美区买了个 HyperApp+Ping 的大包 →_→
Tyler1989
    71
Tyler1989  
   2017-12-04 18:48:29 +08:00 via Android   ❤️ 1
已入😄
waylybaye
    72
waylybaye  
OP
   2017-12-04 18:54:13 +08:00
@AsherG 😝

感谢各位支持
tnx2014
    73
tnx2014  
   2017-12-04 18:57:43 +08:00
和企鹅管家兼容性怎样,因为还要用企鹅管家防电话,两者短信过滤可以一同开启么?
waylybaye
    74
waylybaye  
OP
   2017-12-04 19:15:40 +08:00 via iPhone
@tnx2014 不能,只能开启一个。但是电话和短信是分开的,互不影响。
tnx2014
    75
tnx2014  
   2017-12-04 19:19:35 +08:00   ❤️ 1
@waylybaye OK 知道了,你做的 APP 都很用心,感谢你。
thankfish
    76
thankfish  
   2017-12-04 19:28:03 +08:00 via iPhone   ❤️ 1
已买!业界良心
yangyaofei
    77
yangyaofei  
   2017-12-04 19:47:09 +08:00
啥时候出个 android 版的
mortal
    78
mortal  
   2017-12-04 20:15:49 +08:00
可以加入自定义正则表达式的功能吗?就像 NekoSMS 那样。那就非常棒了!(所在公司的某些 ZZ 系统会发送恼人的提醒)
krzover
    79
krzover  
   2017-12-04 20:20:18 +08:00   ❤️ 1
点击购买提示需要 ios11...想了想我还是口头支持下吧
waylybaye
    80
waylybaye  
OP
   2017-12-04 20:21:46 +08:00
@yangyaofei android 目前没计划…

@mortal 正则可以考虑下,我目前以完善模型为主…
artandlol
    81
artandlol  
   2017-12-04 20:22:30 +08:00 via iPhone
营运商的短信也给过滤了?
poorcai
    82
poorcai  
   2017-12-04 20:22:51 +08:00   ❤️ 1
已买,多谢
waylybaye
    83
waylybaye  
OP
   2017-12-04 20:24:31 +08:00
@artandlol 运营商的骚扰短信最多啊,而且是同一个号码发各种短信,会导致整个号码被过滤……

我个人不希望看到任何运营商推广流量、充值之类的短信,不过大家好像喜好不同……
xz
    84
xz  
   2017-12-04 20:36:31 +08:00 via iPhone
@waylybaye 没看见上面写出来所以问一下啦
cesar
    85
cesar  
   2017-12-04 20:44:27 +08:00   ❤️ 1
澳区已支持 :)
binss
    86
binss  
   2017-12-04 21:48:09 +08:00   ❤️ 1
好东西,已购
saginardo
    87
saginardo  
   2017-12-04 21:54:14 +08:00 via iPhone   ❤️ 1
已购,支持支持。
viosey
    88
viosey  
   2017-12-04 22:28:07 +08:00
楼主的 APP 都不错呀,Ping,Cloud Speed,熊猫吃短信都有了
waylybaye
    89
waylybaye  
OP
   2017-12-04 22:47:50 +08:00
@viosey 本帖惊现好几个我的全家桶用户 😲
viosey
    90
viosey  
   2017-12-04 22:52:23 +08:00
@waylybaye #89 还差一个 HyperApp 了😂 可惜黑五没打折
artandlol
    91
artandlol  
   2017-12-04 22:58:05 +08:00 via iPhone
@waylybaye 营运商会有一些提醒
也就是说你这是基于号码的过滤不是基于内容的过滤?
waylybaye
    92
waylybaye  
OP
   2017-12-04 23:04:46 +08:00 via iPhone
@artandlol 看我上面正文里面系统限制那一段… App 里面的常见问题也有解释……
shanliang
    93
shanliang  
   2017-12-04 23:18:30 +08:00   ❤️ 1
tg 群友过来资瓷一下
f0rger
    94
f0rger  
   2017-12-04 23:27:18 +08:00 via iPhone   ❤️ 1
买的第四个短信过滤 app 了,
LeungJZ
    95
LeungJZ  
   2017-12-05 00:10:45 +08:00 via Android
iPhone6 能不能用?
Jreen
    96
Jreen  
   2017-12-05 00:53:00 +08:00 via iPhone   ❤️ 1
@LeungJZ #95 只要你的手机支持 iOS 11 就可以
baskice
    97
baskice  
   2017-12-05 01:29:19 +08:00   ❤️ 1
赞,感谢~!
trotyoung
    98
trotyoung  
   2017-12-05 08:29:36 +08:00 via iPhone
就我觉得这图标值得在我手机安家的么?国宝多萌啊。
功能棒当然也很重要,测了一下发现效果还行,等待时间检验。
sobigfish
    99
sobigfish  
   2017-12-05 08:42:21 +08:00   ❤️ 1
不想被 Message Filter app extension 判断的(比如银行的) 可以把号码加入通讯录联系人
qmqy
    100
qmqy  
   2017-12-05 09:05:51 +08:00
期待出 Android 版:)
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2689 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 97ms · UTC 14:59 · PVG 22:59 · LAX 06:59 · JFK 09:59
Developed with CodeLauncher
♥ Do have faith in what you're doing.