1.自动文本分类是对大量的非结构化的文字信息(文本文档、网页等)按照给定的分类体系,根据文字信息内容分到指定的类别中去,是一种有指导的学习过程。
分类过程采用基于统计的方法和向量空间模型可以对常见的文本网页信息进行分类,分类的准确率可以达到85%以上。分类速度50篇/秒。
2.要想分类必须先分词,进行文本分词的文章链接常见的四种文本自动分词详解及IK Analyze的代码实现

3.废话不多说直接贴代码,原理链接https://www.cnblogs.com/pinard/p/6069267.html
4.代码
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.ml.feature.HashingTF
import org.apache.spark.ml.feature.IDF
import org.apache.spark.ml.feature.Tokenizer
import org.apache.spark.mllib.classification.NaiveBayes
import org.apache.spark.mllib.linalg.Vector
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.sql.Row
import scala.reflect.api.materializeTypeTag object TestNaiveBayes { case class RawDataRecord(category: String, text: String) def main(args : Array[String]) { /*val conf = new SparkConf().setMaster("yarn-client")
val sc = new SparkContext(conf)*/
val conf = new SparkConf().setMaster("local").setAppName("reduce")
val sc = new SparkContext(conf) val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._ var srcRDD = sc.textFile("C:/Users/dell/Desktop/大数据/分类细胞词库").map {
x =>
var data = x.split(",")
RawDataRecord(data(),data())
} var trainingDF = srcRDD.toDF() //将词语转换成数组
var tokenizer = new Tokenizer().setInputCol("text").setOutputCol("words")
var wordsData = tokenizer.transform(trainingDF)
println("output1:")
wordsData.select($"category",$"text",$"words").take().foreach(println) //计算每个词在文档中的词频
var hashingTF = new HashingTF().setNumFeatures().setInputCol("words").setOutputCol("rawFeatures")
var featurizedData = hashingTF.transform(wordsData)
println("output2:")
featurizedData.select($"category", $"words", $"rawFeatures").take().foreach(println) //计算每个词的TF-IDF
var idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")
var idfModel = idf.fit(featurizedData)
var rescaledData = idfModel.transform(featurizedData)
println("output3:")
rescaledData.select($"category", $"features").take().foreach(println) //转换成Bayes的输入格式
var trainDataRdd = rescaledData.select($"category",$"features").map {
case Row(label: String, features: Vector) =>
LabeledPoint(label.toDouble, Vectors.dense(features.toArray))
}
println("output4:")
trainDataRdd.take() //训练热词数据
val model = NaiveBayes.train(trainDataRdd, lambda = 1.0, modelType = "multinomial") var srcRDD1 = sc.textFile("C:/Users/dell/Desktop/大数据/热词细胞词库/热词数据1.txt").map {
x =>
var data = x.split(",")
RawDataRecord(data(),data())
} var testDF = srcRDD1.toDF() //将热词数据做同样的特征表示及格式转换
var testwordsData = tokenizer.transform(testDF)
var testfeaturizedData = hashingTF.transform(testwordsData)
var testrescaledData = idfModel.transform(testfeaturizedData)
var testDataRdd = testrescaledData.select($"category",$"features").map {
case Row(label: String, features: Vector) =>
LabeledPoint(label.toDouble, Vectors.dense(features.toArray))
} //对热词数据数据集使用训练模型进行分类预测 训练模型就是提前弄好的分类数据细胞集
val testpredictionAndLabel = testDataRdd.map(p => (model.predict(p.features), p.label))
println("output5:")
testpredictionAndLabel.foreach(println) }
}

代码网上找的好几天前的了,找不到出处了,侵删

找到了。https://blog.csdn.net/yumingzhu1/article/details/85064047

5.jar包依赖

可能不需要这么多,自己甄别吧

需要什么没补充或者不懂得可以评论,因为太晚了,就写到这样吧

spark MLlib实现的基于朴素贝叶斯(NaiveBayes)的中文文本自动分类的更多相关文章

  1. 详解基于朴素贝叶斯的情感分析及 Python 实现

    相对于「 基于词典的分析 」,「 基于机器学习 」的就不需要大量标注的词典,但是需要大量标记的数据,比如: 还是下面这句话,如果它的标签是: 服务质量 - 中 (共有三个级别,好.中.差) ╮(╯-╰ ...

  2. Java实现基于朴素贝叶斯的情感词分析

    朴素贝叶斯(Naive Bayesian)是一种基于贝叶斯定理和特征条件独立假设的分类方法,它是基于概率论的一种有监督学习方法,被广泛应用于自然语言处理,并在机器学习领域中占据了非常重要的地位.在之前 ...

  3. Spark朴素贝叶斯(naiveBayes)

    朴素贝叶斯(Naïve Bayes) 介绍 Byesian算法是统计学的分类方法,它是一种利用概率统计知识进行分类的算法.在许多场合,朴素贝叶斯分类算法可以与决策树和神经网络分类算法想媲美,该算法能运 ...

  4. 【Coursera】基于朴素贝叶斯的中文多分类器

    一.算法说明 为了便于计算类条件概率\(P(x|c)\),朴素贝叶斯算法作了一个关键的假设:对已知类别,假设所有属性相互独立. 当使用训练完的特征向量对新样本进行测试时,由于概率是多个很小的相乘所得, ...

  5. 数据算法 --hadoop/spark数据处理技巧 --(13.朴素贝叶斯 14.情感分析)

    十三.朴素贝叶斯 朴素贝叶斯是一个线性分类器.处理数值数据时,最好使用聚类技术(eg:K均值)和k-近邻方法,不过对于名字.符号.电子邮件和文本的分类,则最好使用概率方法,朴素贝叶斯就可以.在某些情况 ...

  6. 机器学习朴素贝叶斯 SVC对新闻文本进行分类

    朴素贝叶斯分类器模型(Naive Bayles) Model basic introduction: 朴素贝叶斯分类器是通过数学家贝叶斯的贝叶斯理论构造的,下面先简单介绍贝叶斯的几个公式: 先验概率: ...

  7. [分类算法] :朴素贝叶斯 NaiveBayes

    1. 原理和理论基础(参考) 2. Spark代码实例: 1)windows 单机 import org.apache.spark.mllib.classification.NaiveBayes im ...

  8. R 基于朴素贝叶斯模型实现手机垃圾短信过滤

    # 读取数数据, 查看数据结构 df_raw <- read.csv("sms_spam.csv", stringsAsFactors=F) str(df_raw) leng ...

  9. 朴素贝叶斯算法下的情感分析——C#编程实现

    这篇文章做了什么 朴素贝叶斯算法是机器学习中非常重要的分类算法,用途十分广泛,如垃圾邮件处理等.而情感分析(Sentiment Analysis)是自然语言处理(Natural Language Pr ...

随机推荐

  1. 为什么Dotnet Core的DI默认是在控制器中注入

    转载请注明出处: https://www.cnblogs.com/zhiyong-ITNote/ DI的大概过程抽象成如下:接口对象 <-- 实现对象 <-- 抽象对象 在抽象对象中引入接 ...

  2. windows应用程序框架及实例

    应用程序框架:同一类型应用程序的结构大致相同,并有很多相同的源代码,因此可以通过一个应用程序框架AFX(Application FrameWorks)编写同一类型应用程序的通用源代码. 主要向导: D ...

  3. linux抓包工具tcpdump使用总结

    tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上 1.格式 # tcpdump --help tcpdump version 4.1-PRE-CVS_2012_0 ...

  4. JS对象2

    1.Date对象 创建对象 //方法1:不指定参数 var nowd1=new Date(); alert(nowd1.toLocaleString( )); //方法2:参数为日期字符串 var n ...

  5. __x__(35)0908第五天__opacity 透明度

    opacity 透明度 设置一个  0 - 1 之间的值. opacity: 0;    完全透明 opacity: 0.5    半透明 opacity: 1;    完全不透明 缺点: IE8及以 ...

  6. transient关键字的使用

    实例说明 在保存对象时,会将对象的状态也一并保存,然而有些状态是不应该被保存的,如表示密码的属性.此时可以使用transient关键字来修饰不想保存的属性. 关键技术 transient关键字用来防止 ...

  7. 如何使用post请求下载文件

    使用get请求下载文件非常简便,但是get请求的url有长度和大小的限制,所以当请求参数非常多时无法满足需求,所以改成post请求const res = await fetch('xxxxxxxxx' ...

  8. Linux下批量修改后缀名

    1.用find和xargs添加后缀名 [root@node99 yum.repos.d]# ls -ltr total 32 -rw-r--r--. 1 root root 5701 Nov 23 2 ...

  9. Lambda查询

    使用EF查询数据库,之前使用Linq表达式,现在改成另一个种方法查询:Lambda表达式 TestEntities db=new TestEntities(); ).FirstOrDefault(); ...

  10. Python 学习笔记9 循环语句 For in

    For in 循环主要适用于遍历一个对象中的所有元素.我们可以使用它遍历列表,元组和字典等等. 其主要的流程如下:(图片来源于: https://www.yiibai.com/python/pytho ...