猿问

每天微博接收的上百万条数据,每条评论都在几十到一百多之间,问如何能最快的查找出里面的敏感词汇?

当时笔试问到的一个问题,如题.当时脑子想的是用正则匹配,但是估计会炸了....回来查了好多资料,貌似是用AC算法这种东西,对算法真的不了解,大神们觉得怎么处理比较好呢?

动漫人物
浏览 747回答 2
2回答

慕村9548890

这些应用都是多台部署的,后台多台机器会提供敏感词验证服务接口,任务平摊给多个机器,速度自然很快了。 在自己公司内部技术wiki上搜索了一下,我司使用的敏感词算法是:Aho Corasick自动机结合DoubleArrayTrie极速多模式匹配 ,我司主要用的是java实现的,应该也有php版本的实现,你自己去找找吧。

小怪兽爱吃肉

一般用DFA算法。正则可以做到。不过效率太低了

蛊毒传说

用PHP做过类似的应用demo,也是用的ac,其实算法这东西,如果你不是研究算法,只是单纯的用的话其实不难的。 这是匹配算法。然后还有一点的就是语言,这种要求运行速度的最好别选PHP,脚本语言总是没有静态语言跑的快。然后是敏感词的存储,从内存中拿和从磁盘上拿这两个区别还是蛮大的。然后是一台服务器上多线程处理,多台服务器的分布式处理;暂时想到的就这些了
随时随地看视频慕课网APP
我要回答