自然语言处理系列四十九》文本分类算法》朴素贝叶斯算法原理

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】

自然语言处理系列四十九

朴素贝叶斯》算法原理

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法,在文本分类任务应用非常普遍,我们下面详细介绍一下。
1. 朴素贝叶斯算法介绍
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。简单来说,朴素贝叶斯分类器假设样本每个特征与其他特征都不相关。举个例子,如果一种水果具有红,圆,直径大概4英寸等特征,该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的。尽管是带着这些朴素思想和过于简单化的假设,但朴素贝叶斯分类器在很多复杂的现实情形中仍能够取得相当好的效果。朴素贝叶斯分类器的一个优势在于只需要根据少量的训练数据估计出必要的参数(离散型变量是先验概率和类条件概率,连续型变量是变量的均值和方差)。朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我们会选择条件概率最大的类别作为此待分类项应属的类别。
2. 朴素贝叶斯中文文本分类特征工程处理
文本分类是指将一篇文章归到事先定义好的某一类或者某几类,在数据平台的一个典型的应用场景是,通过爬取用户浏览过的页面内容,识别出用户的浏览偏好,从而丰富该用户的画像。我们现在使用Spark MLlib提供的朴素贝叶斯(Naive Bayes)算法,完成对中文文本的分类过程。主要包括中文分词、文本表示(TF-IDF)、模型训练、分类预测等。
中文分词
对于中文文本分类而言,需要先对文章进行分词,我使用中文分析工具IKAnalyzer,HanLP,ansj分词都可以。
中文词语特征值转换(TF-IDF)
分好词后,我们需要把文本转换成算法可理解的数字,一般我们用TF-IDF的值作为特征值,也可以用简单的词频TF作为特征值,每一个词都作为一个特征,但需要将中文词语转换成Double型来表示,通常使用该词语的TF-IDF值作为特征值,Spark提供了全面的特征抽取及转换的API,非常方便,详见http://spark.apache.org/docs/latest/ml-features.html,这里介绍下TF-IDF的API:
比如,训练语料/tmp/lxw1234/1.txt:
0,苹果官网苹果宣布
1,苹果梨香蕉
逗号分隔的第一列为分类编号,0为科技,1为水果,代码如下所示。
case class RawDataRecord(category: String, text: String)
val conf = new SparkConf().setMaster(“yarn-client”)
val sc = new SparkContext(conf)
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._

//将原始数据映射到DataFrame中,字段category为分类编号,字段text为分好的词,以空格分隔,代码如下所示。
var srcDF = sc.textFile(“/tmp/lxw1234/1.txt”).map {
x =>
var data = x.split(“,”)
RawDataRecord(data(0),data(1))
}.toDF()
srcDF.select(“category”, “text”).take(2).foreach(println)
[0,苹果官网苹果宣布]
[1,苹果梨香蕉]
//将分好的词转换为数组,代码如下所示。
var tokenizer = new Tokenizer().setInputCol(“text”).setOutputCol(“words”)
var wordsData = tokenizer.transform(srcDF)
wordsData.select( " c a t e g o r y " , "category", "category",“text”, " w o r d s " ) . t a k e ( 2 ) . f o r e a c h ( p r i n t l n ) [ 0 , 苹果官网苹果宣布 , W r a p p e d A r r a y ( 苹果 , 官网 , 苹果 , 宣布 ) ] [ 1 , 苹果梨香蕉 , W r a p p e d A r r a y ( 苹果 , 梨 , 香蕉 ) ] / / 将每个词转换成 I n t 型,并计算其在文档中的词频( T F ),代码如下所示。 v a r h a s h i n g T F = n e w H a s h i n g T F ( ) . s e t I n p u t C o l ( " w o r d s " ) . s e t O u t p u t C o l ( " r a w F e a t u r e s " ) . s e t N u m F e a t u r e s ( 100 ) v a r f e a t u r i z e d D a t a = h a s h i n g T F . t r a n s f o r m ( w o r d s D a t a ) 这里将中文词语转换成 I N T 型的 H a s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陈敬雷-充电了么-CEO兼CTO

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值