为什么要处理敏感词

做为seo的正规军,必须要每天都跟关键词打交道的。而且为了守护这人间的正义,我们的站点是不允许出现敏感词的。否则就非常容易被相关部门把网站给GG了,除非站点和域名都是在国外的。[滑稽]
如果做过几年的seo,不难发现有很多的站点就是一个敏感词的问题被干掉的,有的甚至就因为某个网页里面出现了一个敏感词而导致整站被干的。这种具体是什么敏感词大家想想应该就知道了。

什么是敏感词

敏感词一般是指带有敏感政治倾向(或反执政党倾向)、暴力倾向、不健康色彩的词或不文明语,也有一些网站根据自身实际情况,设定一些只适用于本网站的特殊敏感词。一般有以下几种:

  1. 色情类
  2. 民生类
  3. 反动类
  4. 政治类
  5. 暴恐类
  6. 广告类
  7. 医疗类
  8. 特殊网址

那么,以上这些词库如果整理出来的话,估计得有个几十万甚至更多,反正新浪的似乎已经有上百万的敏感词了。如果要对这些词进行处理的话无疑是一个大工程。
一般对于敏感词的处理有两种方式,第一种是直接删除包含敏感词的关键词和内容,第二种是对敏感词进行替换,比如替换为*符号。
但是不管哪种方式进行处理,首先都需要实现快速的找到敏感词,比如你有500万的关键词需要进行过滤,那么如果人工去看的话,这无疑是天方夜谭。估计公司都倒闭了这批词还没过滤完呢。这种时候就需要使用技术的力量了,让程序帮我们来干就好了。
但是程序也是有效率问题的,那么如何高效的进行搜索发现呢?

如何处理敏感词

这里给大家介绍一个高效快速的算法,Trie树算法,这个算法也叫字典树或前缀树。可以给作为seoer的小伙伴们说的是这个算法在SEO中的很多地方都可以发挥很大的效果哦,而不仅仅是处理敏感词。
那么先来说说这个算法吧,这个大家理解为前缀树算法可能更好些哈。大概长这样的(老外的东西就喜欢用英文做演示)
百万级的关键词如何进行敏感词过滤? - 图1
它的构造过程是这样的百万级的关键词如何进行敏感词过滤? - 图2
添加节点的时候是这样的百万级的关键词如何进行敏感词过滤? - 图3
查询的时候是这样的,比如我们查询关键词code,那么它的查询路径就是箭头这样的。
百万级的关键词如何进行敏感词过滤? - 图4
看不懂?没关系,不需要你看懂,会用就好啦。
它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。
相信看到这里,你也是一脸懵逼的,没关系。实现的东西只需要交给程序员就好了,你就告诉他我需要这样的工具。
然后让我们来看看它的威力吧,我在第三期python与seo实战课里面演示了如何用它来帮我们过滤敏感词和批量关键词内链添加的操作,之所以还可以进行内链添加主要就是因为我自己手工改造了一下这个算法的一些功能。
看看在敏感词上的查找效果吧,这里我只是用色情词识别来作为演示:百万级的关键词如何进行敏感词过滤? - 图5
请不要纠结为什么“内裤”也是色情词,这个词库是我在GitHub下载的,文末分享给大家。
然后最终的测试效果,对70万的词进行过滤只花了3秒钟就完成了。效率还是很OK的,所以如果你正好有这个需求,不妨让你们公司的程序员也给实现一个,这个在网络上也有各种语言的实现了,但是如果要添加一些个性化的功能还是要程序员稍微的进行改造一下的。
比如关键词内链添加,还有敏感词替换为*等特殊字符这类功能基本就需要自己实现了。
下面是内链添加的演示:百万级的关键词如何进行敏感词过滤? - 图6
下面是替换为特殊字符的演示:百万级的关键词如何进行敏感词过滤? - 图7

顺便说一下,这个算法还是AC自动机的基础算法哦,AC自动机是另外一种更为全面查询的算法,大家感兴趣的也可以去了解一下。

最后就是给大家分享一个很好的词库,这个基本上是目前互联网上公开的最强大的词库了。它包含了这么多类型的词库:
百万级的关键词如何进行敏感词过滤? - 图8
该词库的下载地址是:https://github.com/fighting41love/funNLP/