热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

46.概率统计:如何利用朴素贝叶斯算法过滤垃圾短信

文章目录1.算法解析1.1基于黑名单的过滤器1.2基于规则的过滤器1.3基于概率统计的过滤器1.3.1朴素贝叶斯算法1.3.2如何利用朴素贝叶斯算法,来做垃圾短信的过


文章目录

  • 1.算法解析
    • 1.1 基于黑名单的过滤器
    • 1.2 基于规则的过滤器
    • 1.3 基于概率统计的过滤器
      • 1.3.1 朴素贝叶斯算法
      • 1.3.2 如何利用朴素贝叶斯算法,来做垃圾短信的过滤

问题:实现一个简单的垃圾短信过滤功能以及骚扰电话拦截功能,该用什么样的数据结构和算法实现呢?


1.算法解析


1.1 基于黑名单的过滤器


  • 散列表、二叉树,比较好内存,存储有限
  • 布隆过滤器,省内存,可能会误判
  • 黑名单存储服务器,需要联网,网络通讯比较慢。

1.2 基于规则的过滤器

如果号码不在黑名单,可以通过预设规则来过滤:


  • 短信中包含特殊单词(或词语),比如一些非法、淫秽、反动词语等;

  • 短信发送号码是群发号码,非我们正常的手机号码,比如+60389585;

  • 短信中包含回拨的联系方式,比如手机号码、微信、QQ、网页链接等,因为群发短信的号码一般都是无法回拨的;

  • 短信格式花哨、内容很长,比如包含各种表情、图片、网页链接等;

  • 符合已知垃圾短信的模板。垃圾短信一般都是重复群发,对于已经判定为垃圾短信的短信,我们可以抽象成模板,将获取到的短信与模板匹配,一旦匹配,我们就可以判定为垃圾短信。

何定义特殊单词?概率统计。
在这里插入图片描述


1.3 基于概率统计的过滤器


1.3.1 朴素贝叶斯算法

假设事件A是“小明不去上学”,事件B是“下雨了”。现在统计了一下过去10天的下雨情况和小明上学的情况,作为样本数据。

在这里插入图片描述

规律:在这10天中,有4天下雨,所以下雨的概率P(B)=4/10。10天中有3天,小明没有去上学,所以小明不去上学的概率P(A)=3/10。在4个下雨天中,小明有2天没去上学,所以下雨天不去上学的概率P(A|B)=2/4。在小明没有去上学的3天中,有2天下雨了,所以小明因为下雨而不上学的概率是P(B|A)=2/3。

公式表达:
在这里插入图片描述


1.3.2 如何利用朴素贝叶斯算法,来做垃圾短信的过滤

计算机没办法像人一样理解短信的含义,需要把短信抽象成一组计算机可以理解并且方便计算的特征项,用这一组特征项代替短信本身,来做垃圾短信过滤。

通过分词算法,把一个短信分割成n个单词。这n个单词就是一组特征项,全权代表这个短信。

使用概率,来表征一个短信是垃圾短信的可信程度。公式如下:
在这里插入图片描述
实际没法通过样本数据统计得到这个概率。

朴素贝叶斯公式:
在这里插入图片描述

P(W1W_{1}W1,W2W_{2}W2,W3W_{3}W3,…,WnW_{n}Wn同时出现在一条短信中 | 短信是垃圾短信)这个概率照样无法通过样本来统计得到。通过以下公式计算:

独立事件发生的概率计算公式:P(A*B) = P(A)*P(B)如果事件A和事件B是独立事件,两者的发生没有相关性,事件A发生的概率P(A)等于p1,事件B发生的概率P(B)等于p2,
那两个同时发生的概率P(A*B)就等于P(A)*P(B)。

基于上面的公司,得到如下:
在这里插入图片描述
其中,P(WiW_{i}Wi出现在短信中 | 短信是垃圾短信)表示垃圾短信中包含WiW_{i}Wi这个单词的概率有多大。这个概率值通过统计样本很容易就能获得。我们假设垃圾短信有y个,其中包含WiW_{i}Wi的有x个,那这个概率值就等于x/y。

P(短信是垃圾短信)表示短信是垃圾短信的概率 = 把样本中垃圾短信的个数除以总样本短信个数,就是短信是垃圾短信的概率。

在这里插入图片描述


推荐阅读
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
  • 本文详细介绍了《问道》手游在2020年12月31日进行的服务器维护情况,以及此次更新中新增的跨年狂欢活动和寒假活动等内容。同时,文章还涵盖了其他重要的系统优化与修复信息。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
author-avatar
q40796672
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有