【NLP实战系列】朴素贝叶斯文本分类实战

朴素贝叶斯算法对文本的分类 1.案例 2.为了防止像tokyo这种为零的情况,因此引入拉普拉斯平滑系数 8是在C中所有词个数,6是在所有特征词个数,一个类别只算一次 API 阅读详情

实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式。因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自己动手试一试。

本篇介绍自然语言处理中一种比较简单,但是有效的文本分类手段:朴素贝叶斯模型。

作者&编辑 | 小Dream哥

1 朴素贝叶斯介绍 

贝叶斯决策论是在统计概率框架下进行分类决策的基本方法。对于分类任务来说,在所有相关概率都已知的情况下,贝叶斯决策论考虑如何基于这些概率和误判损失来预测分类。

朴素贝叶斯模型在训练过程,利用数据集D,计算P(c),P(x_i|c)。在预测时,输入样本,利用贝叶斯公式,计算n个类别的概率,最后输出概率最大的那个类别,作为预测的类别。

640?wx_fmt=png

朴素贝叶斯模型分类的理论相关知识,在文章中有详细的介绍,感兴趣或者不清楚的朋友可以出门左转,再看一下。

假如我们有语料集D,文本可分为(c_1,c_2,...,c_n)个类别,我们根据语料集D,计算每个类别出现的概率P(c_i),以及当文本类别为c_i时,词x_i出现的概率P(x_i|c_i)。这样一个由m个词构成的文本(x_1,x_2,...,x_m)就可以根据上述公式预测出文本是各个类别的概率。

2 NLTK

Natural Language Toolkit,NLTK是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发,是一个不错的python工具包。此次我们介绍用NLTK里的NaiveBayesClassifier模块,来进行文本分类。

3 数据集准备

因为是文本分类任务,所以数据集是按类别分好的一系列文本,如下图所示:

640?wx_fmt=png

这里因为只是展示,数据集比较简单,只有3个类别。在一个类别内,每条数据之间用分号隔开。

4 数据读取

数据读取的代码如下所示:

#1 进行数据读取

def read_data(filename):# 最后返回的是一个列表,结构如下[('我要打车','get_a_taxi'),('明天天气怎么样','get_weather')。。。]

数据读取过程的任务很简单,就是从语料文件中将语料读到内存中,组织成一个列表,列表中每一项组成为(data,label),如('明天天气怎么样','get_weather')。

5 特征选择及训练数据集构建

利用分词后的词性作为训练数据特征。最后喂给模型的数据是一个类似这样的列表:

[({“t”:“明天”,“n”:“天气”,“r”:“怎么样” }, 'get_weather') ,... ]

#2.1 停用词处理#2 进行特征选择,这里利用分词后的词性作为特征

#3 构建训练数据集

6 训练及预测

训练及预测的过程很简单,就是调用NLTK的NaiveBayesClassifier模块,代码如下:

#训练模型

classifier = nltk.NaiveBayesClassifier.train(      

                   get_features_sets('data.txt') )

#预测某一个文本的类别

print(predict_label)    ## get_weather

#预测某一个文本为某一个类别的概率print(classifier.prob_classify(get_word_features('请问明天的天气怎么样?')).prob(predict_label)) # 0.995154

我们展示一下预测的结果:

640?wx_fmt=png

至此,介绍了如何利用NLTK的NaiveBayesClassifier模块进行文本分类,代码在我们有三AI的github可以下载:

https://github.com/longpeng2008/yousan.ai/tree/master/natural_language_processing

找到intention文件夹,执行python3 intent_recognition.py就可以运行了。

总结

文本分类常常用于情感分析、意图识别等NLP相关的任务中,是一个非常常见的任务,朴素贝叶斯本质上统计语料中对应类别中相关词出现的频率,并依此来预测测试文本。总的来说,它是一种非常便捷,效果可以接受的方法。

我们也会在知识星球讨论其他文本分类方法,感兴趣扫描下面的二维码了解。

读者们可以留言,或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"。

下期预告:命名实体识别实践

知识星球推荐

640?wx_fmt=png

扫描上面的二维码,就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师。

知识星球主要有以下内容:

(1) 聊天机器人。考虑到聊天机器人是一个非常复杂的NLP应用场景,几乎涵盖了所有的NLP任务及应用。所以小Dream哥计划以聊天机器人作为切入点,通过介绍聊天机器人的原理和实践,逐步系统的更新到大部分NLP的知识,会包括语义匹配,文本分类,意图识别,语义匹配命名实体识别、对话管理以及分词等。

(2) 知识图谱。知识图谱对于NLP各项任务效果好坏的重要性,就好比基础知识对于一个学生成绩好坏的重要性。他是NLP最重要的基础设施,目前各大公司都在着力打造知识图谱,作为一个NLP工程师,必须要熟悉和了解他。

(3) NLP预训练模型。基于海量数据,进行超大规模网络的无监督预训练。具体的任务再通过少量的样本进行Fine-Tune。这样模式是目前NLP领域最火热的模式,很有可能引领NLP进入一个全新发展高度。你怎么不深入的了解?

转载文章请后台联系

侵权必究

640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png

往期精选

NLP系列(2)_用朴素贝叶斯进行文本分类(上) 1. 引言 贝叶斯方法是一个历史悠久,有着坚实的理论基础的方法,同时处理很多问题时直接而又高效,很多高级自然语言处理模型也可以从它演化而来。因此,学习贝叶斯方法,是研究自然语言处理问题的一个非常好的切入口。 2. 贝叶斯公式 阅读详情

相关推荐

NLP系列(4)_朴素贝叶斯实战与进阶

本文为朴素贝叶斯的实践和进阶篇,先丢了点干货,总结了贝叶斯方法的优缺点,应用场景,注意点和一般建模方法。紧接着对它最常见的应用场景,抓了几个例子,又来了一遍手把手系列,不管是对于文本主题分类、多分类问题(犯罪类型分类) 还是 情感分析/分类,朴素贝叶斯都是一个简单直接高效的方法。尤其是在和逻辑回归的对比中可以看出,在这些问题中,朴素贝叶斯能取得和逻辑回归相近的成绩,但是训练速度远快于逻辑回归,真正的直接和高效。

寒小阳 5万+

机器学习之贝叶斯分类算法(nlp)

一、贝叶斯公式 条件概率 由上式进一步推导 由此,推广到随机变量的范畴,设 X,Y 为两个随机变量,得到贝叶斯公式: 二、朴素贝叶斯算法的优缺点 1、朴素贝叶斯优点: 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!) 分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储) 2、朴素贝叶斯缺点: 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是 如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际.

qq_53582111的博客 2439

NLP系列(3)_用朴素贝叶斯进行文本分类(下)

上一篇文章我们主要从理论上梳理了朴素贝叶斯方法进行文本分类的基本思路。这篇文章我们主要从实践上探讨一些应用过程中的tricks,并进一步分析贝叶斯方法,最后以情绪褒贬分析和拼写纠错为例展示这种简单强大的方法在自然语言处理问题上的具体应用。

寒小阳 3万+

朴素贝叶斯文本分类

文章目录朴素贝叶斯模型:简易文本分类朴素贝叶斯的学习和分类基本方法后验概率最大化的含义朴素贝叶斯法的参数估计极大似然估计学习与分类算法朴素贝叶斯----文本分类(应用过滤恶意留言等)参考资料 朴素贝叶斯模型:简易文本分类 朴素贝叶斯的学习和分类 基本方法 后验概率最大化的含义 朴素贝叶斯法的参数估计 极大似然估计 学习与分类算法 朴素贝叶斯----文本分类(应用过滤恶意留言等) 本问题...

张酒肉的博客 945

文本主题分类(TFIDF-朴素贝叶斯分类)

** 文本主题分类(TFIDF-朴素贝叶斯分类) ** 大纲 List item 背景介绍: 贝叶斯讲的是一种”逆向概率“,当我们没有上帝视角时,无法准确的预知一个事物本质的时候,可以依靠和事物本质相关的事件来进行推断。一个典型的问题:检测试剂呈阳性时,该患者真的患该病的几率有多大? 一些常见的术语: 先验概率:如基于历史数据得出的某疾病的发病率 条件概率(P(B|A)):A条件下,B发生的概率 后验概率:根据结果推测原因的概率 全概率公式:P(A)=P(B1)*P(A|B1)+P(B2)*P(A|B

wenkang2261的博客 9093

NLP入门实战之——基于词频和TF-IDF,利用朴素贝叶斯机器学习方法新闻分类

NLP入门实战之——基于词频和TF-IDF,利用朴素贝叶斯机器学习方法对搜狗实验室文本分类 本人是零基础的小白,现在从零开始学习NLP,这是学习的一些简单的笔记,如有错误请指正。 编译环境:Jupyter Notebook Windows x64 本文主要分为两个板块: 一是对搜狗实验室的新闻数据进行预处理(Data Preparation)从而获得所需要的特征(feature),如将数据层层处理...

popofzk的博客 3489

朴素贝叶斯分类实战:对文档进行分类

朴素贝叶斯分类最适合的场景就是文本分类、情感分析和垃圾邮件识别。其中情感分析和垃圾邮件识别都是通过文本来进行判断。所以朴素贝叶斯也常用于自然语言处理 NLP 的工具。 sklearn 机器学习包 sklearn 的全称叫 Scikit-learn,它给我们提供了 3 个朴素贝叶斯分类算法,分别是高斯朴素贝叶斯(GaussianNB)、多项式朴素贝叶斯MultinomialNB)和伯努利朴素贝叶斯(...

qiu_zhi_liao的博客 1553

(三)朴素贝叶斯运用——文本分类

1、贝叶斯理论 当我们有样本(包含特征和类别)的时候,我们非常容易通过p(x)p(y|x)=p(y)p(x|y)p(x)p(y|x)=p(y)p(x|y)p(x)p(y|x) = p(y)p(x|y)统计得到 p(特征|类别) .即p(特征)p(类别|特征)=p(类别)p(特征|类别)p(特征)p(类别|特征)=p(类别)p(特征|类别)p(特征)p(类别|特征) = p(类别)p(特征|类别...

Haward 2万+

朴素贝叶斯原理分析及文本分类实战

朴素贝叶斯原理分析及文本分类实战1.什么是贝叶斯2.什么是朴素贝叶斯3.如何用朴素贝叶斯来进行文本分类问题1 数据精度问题问题2 log(0)得到负无穷问题 1.什么是贝叶斯 贝叶斯本质上就是条件概率分布,(通俗来讲,条件概率分布就是当我们知道了某一条件之后,所得出的用该条件所能推测得它属于的各个类别的概率)。 (1式) w是我们的条件或者称为已知信息,c为对应的类别或者结果,那么(1)式所表达的含义就是由w推测得到c的概率大小。(我还是喜欢大白话,贝叶斯就像是破案一样,我们现在已经掌握了证据w,由证

qiaowu898的博客 4354

【机器学习实验】使用朴素贝叶斯进行文本的分类

引言朴素贝叶斯由贝叶斯定理延伸而来的简单而强大的概率模型,它根据每个特征的概率确定一个对象属于某一类别的概率。该方法基于一个假设,所有特征需要相互独立,即任一特征的值和其他特征的值没有关联关系。 虽然这种条件独立的假设在许多应用领域未必能很好满足,甚至是不成立的。但这种简化的贝叶斯分类器在许多实际应用中还是得到了较好的分类精度。训练模型的过程可以看作是对相关条件概率的计算,它可以用统计对应某一类别

Jason Ding的专栏 1万+

机器学习-朴素贝叶斯分类算法

还被用于推荐系统,根据用户行为数据提供个性化推荐,以及在图像识别中对物体进行分类,尽管其假设特征独立这一条件在实际中往往不完全成立,但其简单高效的特性使其在许多场景下仍然表现出色,为各领域提供了有效的解决方案。它通过训练样本计算各类别的先验概率及特征的条件概率,分类时依据贝叶斯公式求得后验概率并依此判断类别,算法简单高效,对小规模数据表现良好,适合文本分类、垃圾邮件过滤等多分类任务,但其“特征独立”假设在实际中往往难以完全满足。在类别 c k 下,所有特征 X (j) 的条件概率的乘积。

2301_78012605的博客 2322

【自然语言处理】补充:文本分类及朴素贝叶斯分类器

多元贝努利模型,它等价于二值独立模型,对于词汇表中的每个词项都对应一个二值变量,1和0分别表示词项在文档中出现和不出现。例如:对于UK类别中的一篇文档,在第一个位置上生成QUEEN的概率和在最后一个位置上生成它的概率一样。贝努利模型只考虑词项的出现或不出现(即二值),并不考虑出现的次数,而多项式模型则要考虑出现次数。以该类为条件,(在各自位置上)基于概率P(tk|c)产生每个词语,这些词语之间相互独立。但是,训练集的规模总是有限的。上式中存在过多的参数,每个参数都是一个类别和一个词语序列的组合。

Ausgelebt的博客 1259

自然语言处理:朴素贝叶斯

在自然语言处理(NLP)领域,文本分类、情感分析等任务至关重要,而朴素贝叶斯算法作为一种经典的机器学习方法,在这些任务中占据着重要地位。它基于贝叶斯定理和特征条件独立假设,具有原理简单、计算效率高的特点,能快速处理大规模文本数据。

老赵爱学习的博客 1220

自然语言处理之文本分类:朴素贝叶斯算法

朴素贝叶斯(Naive Bayes)算法是一种基于概率论的分类方法,它利用贝叶斯定理并假设特征之间相互独立。在文本分类中,朴素贝叶斯算法通常用于基于词频的分类,即假设文档中的每个词出现的概率是独立的。这种算法简单高效,尤其在处理高维特征空间时表现良好,如文本数据。朴素贝叶斯分类器在自然语言处理(NLP)的文本分类任务中,尽管因其简单性和效率而被广泛采用,但其局限性也不容忽视。特征独立性假设:朴素贝叶斯假设所有特征之间相互独立,但在自然语言中,词与词之间往往存在依赖关系,这一假设在实际应用中往往不成立。

zhubeibei168的博客 1519

算法笔记(胡凡)学习笔记@Kaysen

本文旨在记录算法笔记学习过程中的收获和一些知识点,部分易错知识点只针对个人而言,CCF-CSP考试冲鸭!!! Chapter 2 C/C++快速入门(易错知识点) 2.1 基本数据类型 变量定义注意区分大小写。 一、整型 整型int,32bit(4Byte),取值范围是,绝对值在范围内的整数都可以定义成int。 长整型long long,64bit(8Byte),取值范围是,绝对值超过的整数就需要用long long存储。 ...

Kaysen_Zhao的博客 2899

文本分类(朴素贝叶斯分类)介绍

什么是文本分类 文本分类是现代机器学习应用中的一大模块,更是自然语言处理的基础之一。 我们可以通过将文字数据处理成数字数据,然后使用贝叶斯来帮助我们判断一段话,或者一篇文章中的主题分类,感情倾向,甚至文章体裁。 现在,绝大多数社交媒体数据的自动化采集,都是依靠首先将文本编码成数字,然后按分类结果采集需要的信息。虽然现在自然语言处理领域大部分由深度学习所控制,贝叶斯分类器依然是文本分类中的一颗明珠。现在,我们就来学习一下,贝叶斯分类器是怎样实现文本分类的。 文本分类的基本步骤 文本有效信息的提取 文本预处理

积一时之步,臻千里之遥程 6845

不用Root也能抓包?Android高版本HTTPS抓包的3种替代方案(含Charles技巧)

本文针对Android高版本HTTPS抓包难题,提供了三种无需Root权限的实战解决方案:利用VirtualXposed等虚拟沙盒环境、配置Postern等系统级代理工具,以及通过修改应用源码或网络安全配置。文章还详细解析了Charles抓包工具在非Root环境下的高级配置与排错技巧,帮助开发者在遵守安全规范的前提下,有效进行网络调试与监控。

http9protocoller的博客 648
上一篇: 【每周CV论文推荐】 初学深度学习人脸关键点检测必读文章
下一篇: 【NLP-ChatBot】能干活的聊天机器人-对话系统概述
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值