「熊猫吃短信」不仅会 ML 还支持自定义规则了

2018-02-03 13:27:48 +08:00
 waylybaye

前情传送门 → 熊猫吃短信:全新的基于机器学习的垃圾短信过滤应用

在最近的几个版本迭代中,我新收集到了四万多条短信样本,并扩充到了熊猫的模型中。我个人很喜欢 ML 这种流程,只要不停的喂数据就好了,不用改一行代码,它就能变的更好……

产品角度的一点点分享

由于用户群扩大,在一条短信是不是垃圾短信上有了越来越多的分歧… 比如,有些人认为「送你一张优惠券」应该是正常短信,有些人认为要看优惠券面值和门槛来区分,我认为所有这种都是骚扰短信……

再比如理财类的短信,「 XX 基金推荐购入」,短信本身是否有价值,取决于是否是用户订阅的,发给 A 用户可能是有用的信息,发给 B 用户就是骚扰短信了。

我在中间一个版本中,花了很多天时间重新标注了几万条短信样本,从二值分类(正常和垃圾短信)改成了多值分类(正常、广告、不重要、公益等),试图解决一部分问题,但是多值分类会让机器学习的模型成倍增长,并且超过扩展的内存限制( iOS 短信扩展的内存限制非常低)后来经过多次尝试后我最终选择了降维后的三分类(正常、广告、不重要)模型( 200Kb 大小)。

用户的需求总是不同的,我尽可能的让熊猫的预测结果满足大部分的期望。虽然我很希望用 ML 来解决所有问题,但是目前还没有办法在手机上动态调整模型,就算可以,一个用户喂上十几条短信也是很难将熊猫吃了几万条短信形成的思维改过来的……

所以最终我还是加了号码、关键词黑、白名单的功能,让用户可以简单粗暴的自定自己的需求。对于常见的短信模式不建议加关键词来拦截,比如退订,你要相信熊猫有足够的智力分辨带「退订」的是不是垃圾短信…… 建议只对一些特有的情况加关键词,比如「 XX 手机报」「 XX 中学」等

技术角度的一点点小分享

起初我用 python 训练的模型,转换成 CoreML 后会有一点点结果不一样,因为分词算法不一样。由于把带词库的算法移植到 iOS 上很难(光是加载词库就超过 iOS 扩展的内存限制了,直接就会 OOM )所以我就反过来用 pyobjc 直接调用 CoreFoundation 的分词算法,保证训练和预测时分词一模一样。除了性能有点低外,效果还不错,就是这个分词算法有点笨(

顺便求个关注

全干的独立开发者一枚,靠卖 App 为生。会 Python、移动开发、前端,略懂设计。目前作品有 HyperApp、Ping、Cloud Speed、熊猫吃短信。

7045 次点击
所在节点    分享创造
47 条回复
3a3Mp112
2018-02-03 13:30:50 +08:00
「 XX 基金推荐购入」 不管对任何用户来说都应该是垃圾短信。 支持我的点个赞
waylybaye
2018-02-03 13:36:10 +08:00
@3a3Mp112 好像有人专门订阅了此类推荐的,我只是拿这个做个类比(
wadjj
2018-02-03 13:38:48 +08:00
我觉得这里存在的问题是苹果的机制本质上不是根据单条内容来决定过滤的,因为一条垃圾被过滤整个号码就被过滤。在这个前提下,就不可能完美,只能在过严或过松之间平衡。
wadjj
2018-02-03 13:40:52 +08:00
我觉得本身苹果的机制需要改,逻辑模型就应该是垃圾 不重要 正常,只有发纯粹的垃圾信息的号码才应该被彻底干掉,不重要信息可以弱提醒
lzmbbg
2018-02-03 13:51:59 +08:00
今天收到两条澳门短信没识别
waylybaye
2018-02-03 13:53:14 +08:00
@wadjj 是的,粒度应该更小些,可以只过滤单条内容就行了。其实短信这种东西已经快被边缘化了,又不开放,估计很难出现创新了
waylybaye
2018-02-03 13:53:45 +08:00
@lzmbbg 澳门的是 iMessage 吧,iMessage 不让过滤…
ch3nOr
2018-02-03 14:00:33 +08:00
很好用,继续加油。
lzmbbg
2018-02-03 14:33:11 +08:00
@waylybaye 原来如此,谢谢。
oh
2018-02-03 14:42:38 +08:00
原来楼主就在 V2 啊… 支持一下
如果有什么需要帮助的也可以说哈
oh
2018-02-03 14:42:54 +08:00
有什么想找合作的也可以说
EchoChan
2018-02-03 14:46:44 +08:00
支持!
waylybaye
2018-02-03 15:04:47 +08:00
@ch3nOr @EchoChan 感谢支持 🤪

@oh 你这话说的我有点懵 …
tulongtou
2018-02-03 15:15:51 +08:00
可以做到每个用户自己有模型嘛?就是要注册完单独存自己的过滤规则这样的
nathanw
2018-02-03 15:25:47 +08:00
之前卸载了,但发现过滤依然存在,系统设置禁用也是一样,希望提供个禁用功能,仅提供自定义
cai314494687
2018-02-03 15:27:10 +08:00
熊猫吃短信 有几次把我收的验证码都过滤掉了
waylybaye
2018-02-03 16:18:10 +08:00
@tulongtou 这个有点难,其实也不方便,因为要喂上几百条才能有可以用的一个模型吧,我感觉大部分用户是没有这个兴趣自己从头调教的…

@nathanw 你把过滤选项全取消就可以了。禁用或者卸载过滤器后系统好像并不会重置信息的标志位。

@cai314494687 那是一个号码混着发正常短信和垃圾短信的吧,这种情况还真没好办法,如果需要的话只能给号码加白名单
tulongtou
2018-02-03 17:54:08 +08:00
@waylybaye 可以有一个默认的模型啊,就像先在这样写在 APP 里,然后自己喂就可以扩展自己的模型,然后存到 iCloud 里,这样即使换手机也不会丢掉模型。当然用户也可以选择把自己的模型上传给你
wangkq
2018-02-03 18:39:29 +08:00
已支持,有个问题想请教一下,以后的规则是通过软件更新还是怎样
wwqgtxx
2018-02-03 18:39:41 +08:00
其实目前看熊猫吃短信的准确性还是可以接受的,支持作者一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/428192

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX