https://yinzo.github.io/14863637393852.html
使用的是 TensorFlow 后端的 keras , 3000 条弹幕的识别时间在 5s 左右(指的是 model.predict
的单句计时 5s 左右),可能是 model 隐层节点太多了?不知道前辈们有没有一些提高速度的方法呢,如果能帮我指一下方向那将会非常有帮助:D
接下来准备继续学 RNN 以及 LSTM 来继续优化这个玩具分类器:D
另外后排继续寻找广州的机器学习实习岗,希望有 dalao 收留简历在这里
1
cnallenzhao 2017-02-06 15:15:16 +08:00
朱芳芳迷弟路过
|
2
Yinz OP @cnallenzhao 2333 我也!
|
3
Livid MOD 很有意思。
话说我在想,我们也需要类似的技术来识别水贴…… 赠送你 1 个小时的置顶 :) |
4
Yinz OP @Livid 这个鼓励非常大 XD 这次实现觉得最困难在于样本获取,我是日思夜想怎么弄到 B 站举报弹幕的数据,相信 Livid 作为站长应该是不存在这个问题的 :D
|
5
winkidney 2017-02-06 15:42:51 +08:00
默默支持 LZ ,武运昌隆 23333
|
7
DlYgod 2017-02-06 15:47:16 +08:00
朱芳芳女粉路过
|
8
popil1987 2017-02-06 15:51:04 +08:00
光用 gensim 不也行吗? svm 训练好,分类就是毫秒之间
|
9
knva 2017-02-06 15:52:09 +08:00
电竞恶霸朱芳芳,等一个开黑 你被强化了啦#5167
|
10
Yinz OP @popil1987 svm 确实没有尝试过,效率这么高吗,我觉得我可以去尝试一下,因为这边 CNN 效率算下来也是 1.7 毫秒 /条
|
11
jzp113 2017-02-06 15:56:44 +08:00
只要样本多。用朴素贝叶斯也可以啊
|
12
Yinz OP @jzp113 2333 对的,我之前用的贝叶斯分类器写过,但是就是训练数据必须得符合现实分布,样本收集起来就很麻烦。而这里我是通过搜索关键词收集的骂人弹幕,所以就方便一点。
|
13
lan894734188 2017-02-06 16:08:46 +08:00 via Android
厉害了 同求广州地区网工运维职位
|
14
qq316107934 2017-02-06 16:10:17 +08:00 via Android
直播官方没法屏蔽弹幕拉黑人真的是硬伤。。。
之前做了个 js 版熊猫 tv 弹幕的 filter ,只能屏蔽指定关键字,结合这个后端就方便多了,支持下。 另外要不要稍微改下变成反代版的?这样改 hosts 就行了,不影响正常上网。 |
15
gejigeji 2017-02-06 16:12:42 +08:00
请问深圳的岗位考虑吗?
|
16
Yinz OP @qq316107934 原本我也是想着通过 host 来解决的,不过想起 Surge 有 URL Rewrite 就直接用了 XD ,我想大概改 host 也能直接生效?
|
17
Yinz OP |
18
wb14123 2017-02-06 16:19:45 +08:00
记得 keras 代码里面的一个例子就是用 RNN 做分类器,可以试试。
|
23
jiangzhuo 2017-02-06 16:35:03 +08:00
@qq316107934 训练好的模型做成 chrome 插件就好了
|
25
Hstar 2017-02-06 16:46:40 +08:00 2
如果能自动骂人,我觉得这项目的关注度会上一个台阶.(认真脸) (逃
|
26
Yinz OP @Hstar hhhhhh 好主意,可以顺便拿收集到的数据用 RNN 训练个 language model 来自动骂人 (逃
|
27
Izual_Yang 2017-02-06 17:35:14 +08:00 via Android
@Yinz
果然战争和黑产永远是技术发展和应用的最大推动力 |
29
Yinz OP @regicide 思考了一下,有点难,毕竟举报处理是 up 主负责的,处理的速度也很慢,跟不上弹幕的增加速度,一般换弹幕池了举报都没解决呢...
|
30
Necromancia 2017-02-06 19:34:24 +08:00 via Android 1
晕咗迷弟前来参拜;D
|
31
romantic1412 2017-02-06 19:51:19 +08:00 1
可以考虑一下 GAN
这样子你还能够顺便获得一个骂人水平很高的发帖机器 233 |
32
Yinz OP @romantic1412 GAN 指的是 Generative Adversarial Networks 吗,是个没了解过的网络呢 :D
不过通过生成样本来提高样本量这个思路好像在哪篇论文里看到过 XD 我找时间深入了解下看看 XD |
33
binux 2017-02-06 20:32:58 +08:00
模型看起来不错,你不是分了 validate 数据吗?准确率多少?
|
34
R18 2017-02-06 20:35:25 +08:00 via Android
很不错!膜下
|
35
Yinz OP @binux 最终这个模型我测试了 20 次迭代,最后选的是第三次迭代的, Validation Accuracy 是 97.060%,训练部分的详细数据可以看这篇文章 :D
https://yinzo.github.io/14863637259966.html |
36
wjm2038 2017-02-06 21:41:00 +08:00 1
建议跟官方反映一下,我觉得 b 站应该是很乐意看到这些东西的,顺便一提要是想要高质量的骂人弹幕请去乐视,腾讯网的弹幕抓取。。。 70%都是喷子
|
37
xuboying 2017-02-06 21:44:39 +08:00 via Android
这个可以学习一下。
|
38
nbndco 2017-02-06 22:02:45 +08:00 4
还是有不少可以改进的。
看了你的模型 1. 这么少的数据,其实 dropout 是很重要的,但是没做 2. 最后一个 sigmoid 就好了,二分类不要 softmax ,白白浪费空间 3. 其实这个应用最有效的是关键词过滤,其他的都没用,你用什么方法最后其实内部都成为某种意义的关键词查找而已。虽然理解你想用 deep learning ,但是其实有的时候并不是最复杂的方法就最好用的。 另外简历里面用 python 居然没有用 numpy 为何还要写出来自曝其短。 |
39
nicksite 2017-02-06 22:06:42 +08:00 via Android
监督学习速度快很多啊
|
40
Yinz OP @nbndco 首先感谢建议:D
关于关键词过滤我是有这样的想法的,我平时过滤弹幕的做法通常都是看到某些弹幕后才寻找关键词加入屏蔽列表,但是长期下来总是有许多新的关键词出现,正是这些层出不穷的漏网之鱼(词)使我产生了使用机器学习来屏蔽的想法的。 我使用神经网络,是希望它能够在大量的骂人弹幕中,寻找出一些相对明显的,人工注意不到的特征(当然这些特征里面很可能也包括关键词特征),这也是我使用 CNN 而不是普通 MLP 的原因:) 如果单从识别并找出最佳的屏蔽关键词的角度来说的话,我觉得决策树可能是一个非常合适的选择 另外我是有使用 numpy 的,包括这个项目,只不过并不算非常熟练我也不太好意思写出来献丑了:D |
41
wjm2038 2017-02-06 22:20:35 +08:00 via Android
@Yinz 其实你的想法很好,但是由于人脑和中文的神奇性,中文的骂人话(写出来的(包括垃圾弹幕))会比你想象的要多,同音字,拆字,谐音字,等等,人工都不一定屏蔽的完,机器的话一定会有很多误杀,就比如垃圾弹幕中最明显的一个刷颜色。
|
42
Yinz OP @wjm2038 其实你所说的同音字,拆字,谐音字等问题,按我的理解,在 word2vec model 上就已经解决掉了, word2vec 一定程度上解决了自动识别语义相近的词语的问题 :O
|
45
Yinz OP @yexm0 2333 这个功能我有注意,我原本还尝试通过求这两个模式下的差集来快速获得屏蔽弹幕呢,但是当我求完差集出来一看,这个过滤效果更像是大规模无差别灭杀 2333 ,不排除可能是通过筛选节操值小于特定阈值的用户弹幕产生的弹幕池 XD
|
47
wenymedia 2017-02-06 22:49:45 +08:00 via Android 1
不过我之前看到猪场有类似基于机器学习类似的识别垃圾信息的产品 有兴趣可以去交流交流?
|
52
Yinz OP @wjm2038 并不是 up 主屏蔽 XD 你可以观察一下开关这个选项前后的弹幕池,开选项之前是 http://comment.bilibili.com/13769505.xml , 开启之后变成了 http://comment.bilibili.com/rc/13769505.xml
另外 up 主屏蔽的 api 是这样的 http://comment.bilibili.com/cloud/filter/8376267.json XD |
53
gladuo 2017-02-06 23:22:49 +08:00 1
1. 只用 Word2vec 加关键词即可, CNN 应该并不能明显提升 acc
2. 训练数据太少 |
54
Yinz OP @gladuo 请问第一点能否展开一点说呢:D
因为我的目标是能够识别出包括无脏字的反讽弹幕,这一定程度上涉及了语义的问题,我思考了一段时间,还是没有想到关键词如何实现这样的目标,希望能够获得进一步的指点 :O |
55
yujia 2017-02-07 02:39:05 +08:00 via iPhone 1
这种识别 spam 的 naive bayes 真的很好用
|
56
am241 2017-02-07 03:25:00 +08:00 1
加 L1 正则会不会好点?
|
57
zgqq 2017-02-07 09:54:33 +08:00 via Android
@Yinz 如果一个人在直播打游戏,打得很垃圾,然后弹幕有人说你好厉害哦,这情况应该属于反讽了吧,首先你要知道那个人打得拉不垃圾,垃圾的标准是什么,真不知道你们搞机器学习怎么办到的
|
59
skyduy 2017-02-07 11:04:34 +08:00 1
支持一下,最近我也在搞类似的分类器~
|
60
plqws 2017-02-07 12:30:10 +08:00 1
有没有屏蔽空耳的。。。。
|
61
Yinz OP @am241 感谢提醒!确实没在 loss function 上做太多的优化,我后续会尝试加入一些 regularization 来看看效果的 :D
|
62
Yinz OP @zgqq 其实不必要把目光只放在单条弹幕上,比如说我们可以通过同时分析最近的所有弹幕,若所有弹幕都在说垃圾,只有一条在叫好,那么这也是一个比较明显的特征。若加上一些其他的特征作为辅助,可能就能实现识别反讽的这一目标了。
|
64
Yinz OP @plqws 你这么一说,好像空耳还真的挺难识别的。。不过一般空耳的句子流畅度、语义一致性和弹幕长度等特征应该会和普通弹幕有所区别,说不定也是可以做到的,这个得下手试过才能知道了
|
68
menc 2017-02-07 14:09:07 +08:00
@Yinz char level cnn 最大的作用在于经过混淆的没有语义含义的语句,比如 anti spam :“激.情|裸一聊一加 v : xxx ”
这种,对于弹幕识别, char cnn 不是合适的应用场景。 RNN 和 LSTM 更是了,弹幕没有 context ,你要 memory 有什么用? 这个场景最适合的方法还是传统机器学习方法。这不是一个复杂的 task 。 |
70
menc 2017-02-07 14:24:25 +08:00
文本是 linear separatable 很强的东西,单在 text classification 方面,用 linear kernel 的 svm 是非常好的做法。
|
71
Yinz OP @menc 之前的贝叶斯是我按照自己的理解写的,我对朴素贝叶斯的理解可能存在问题,我是这么理解的:
通过独立同分布的训练集,估计出每一类的先验概率 P(c) ,然后再估计出每个属性(词)的条件概率 P(x|c),由此计算出每个词对应的 P(c|x) 这里提到了同分布,如果分布不同,如何能估计出正确的 P(c) 呢 关于 context ,我是打算要把整个视频的弹幕作为 context 的,当然,我还没有实际学习过这两个模型,并没有什么明确的观点。 『没有正则的 NN 几乎是必然过拟合』这个观点请问是你的经验吗,因为在这个项目里我是通过人工观察 train acc 和 validation acc 来选择的模型,相当于人肉 early stopping ,不知道这样的模型是否也是过拟合的呢? 不过看来 bow+svm 确实是个好模型,我需要尝试一下了 |
72
menc 2017-02-07 17:49:32 +08:00
@Yinz 不是你找到好的 round 停下就没有过拟合的。参数爆炸带来的过拟合是没法避免的,即使在 loss 最低点也是过拟合状态。
|
73
menc 2017-02-07 17:51:29 +08:00
RNN 系列 NN 的重要假设就是, t-k 状态对 t 状态的 label 是有影响的,不是自己强行组合一个 context 就能套用 RNN 。
|
74
woniu127 2017-02-07 17:55:48 +08:00
隔壁院所的来支持一下,学习机器学习中
|
75
Yinz OP |
76
pandachow 2017-02-07 22:02:46 +08:00 via iPhone 1
最好的效果应该从弹幕本身出发,更多地挖掘弹幕自身的特征。
general 来说,朴素贝叶斯应该是性价比最高的算法。 |
78
emric 2017-02-07 22:37:54 +08:00
@plqws 我这里有份过滤表列。大概能过滤 70% 左右空耳。
我最近也在做一个大概有点像 AdBlock 这样的东西过滤 B 站弹幕,以后订阅一下就好。 嗯.... 按照目前的进度... 明年吧... https://gist.github.com/17/ec36f4923c74cec10d2de2ab4e425154 |
79
pandazxx 2017-02-08 09:41:07 +08:00 1
楼主方便留个联系方式不,推荐个实习岗位
|
80
pandazxx 2017-02-08 09:46:53 +08:00
可以加我 qq 63600154
|