ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

27 信息过滤与反垃圾,java语言程序设计教程课后题答案

2021-11-01 13:05:56  阅读:172  来源: 互联网

标签:27 java Trie 分类 信息 敏感 算法 过滤 课后


我国的信息过滤技术是走在世界前列的,尽管如此,在各种社区网站和个人邮箱中, 广告和垃圾信息仍然屡见不鲜、泛滥成灾。

常用的信息过滤与反垃圾手段有以下几种。


1 文本匹配

文本匹配主要解决敏感词过滤的问题。通常网站维护一份敏感词列表,如果用户发 表的信息含有列表中的敏感词,则进行消毒处理(将敏感词转义为***)或拒绝发表。

那么如何快速地判断用户信息中是否含有敏感词呢?如果敏感词比较少,用户提交 信息文本长度也较短,可直接使用正则表达式匹配。但是正则表达式的效率一般较差, 当敏感词很多,用户发布的信息也很长,网站并发量较高时,就需要更合适的方法来完 成,这方面公开的算法有很多,基本上都是Trie树的变种,空间和时间复杂度都比较好 的有双数组

【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

Trie算法等。

Trie算法的本质是确定一个有限状态自动机,根据输入数据进行状态转移。双数组Trie算法优化了 Trie算法,利用两个稀疏数组存储树结构,base数组存储Trie树的节点, check数组进行状态检查。双数组Trie数需要根据业务场景和经验确定数组大小,避免数组过大或者冲突过多。

另一种更简单的实现是通过构造多级Hash表进行文本匹配。假设敏感词表包含敏感 词:阿拉伯、阿拉汗、阿油、北京、北大荒、北风。那么可以构造如图8.11所示的过滤 树,用户提交的信息逐字顺序在过滤树中匹配。过滤树的分支可能会比较多,为了提高 匹配速度,减少不必要的查找,同一层中相同父节点的字可放在Hash表中。该方案处理 速度较快,稍加变形,即可适应各种过滤场景,缺点是使用Hash表会浪费部分内存空间,如果网站敏感词数量不多,浪费部分内存还是可以接受的。

在这里插入图片描述

有时候,为了绕过敏感词检查,某些输入信息会被做一些手脚,如“阿_拉_伯”,这 时候还需要对信息做降噪预处理,然后再进行匹配。


2 分类算法

早期网站识别垃圾信息的主要手段是人工方式,后台运营人员对信息进行人工审核。 对大型网站而言,特别是以社交为主的Web2.0网站,如Facebook或Linkedin这样的网 站,每天用户提交的信息数千万计,许多垃圾信息混杂其中,影响用户体验;而对于B2B 类的电子商务交易撮合网站,用户主要通过站内信等手段进行商品信息咨询,有时候站 内信充斥大量广告,甚至淹没正常询盘,引起用户严重不满和投诉。

对如此海量的信息进行人工审核是不现实的,对广告贴、垃圾邮件等内容的识别比 较好的自动化方法是采用分类算法。

以反垃圾邮件为例说明分类算法的使用,如图8.12所示。先将批量已分类的邮件样 本(如50000封正常邮件,2000封垃圾邮件)输入分类算法进行训练,得到一个垃圾邮 件分类模型,然后利用分类算法结合分类模型对待处理邮件进行识别。

在这里插入图片描述

比较简单实用的分类算法有贝叶斯分类算法,这是一种利用概率统计方法进行分类的算法。贝叶斯算法解决概率论中的一个典型问题:一号箱子放有红色球和白色球各20 个,二号箱子放有白色球10个,红色球30个,现在随机挑选一个箱子,取岀来一个球 的颜色是红色的,请问这个球来自一号箱子的概率是多少。

标签:27,java,Trie,分类,信息,敏感,算法,过滤,课后
来源: https://blog.csdn.net/m0_61364397/article/details/121078068

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有