基于 spark ml NaiveBayes实现中文文本分类

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/yumingzhu1/article/details/85064047

思路:

  1  准备数据

  2,代码编写

准备数据   

   这里数据我将它分为两类, 1 军事,2 nba   , 我将文件数据放在下面  

代码编写:

  这里面我用的是spark  ml  进行代码的实现的, spark 版本用的是2.2(spark 2.0 和 1.6 对spark ml  影响挺大的, 1.6的  ml 中的  LabeledPoint  可以转化为spark  mllib 的 ,  2.0 以后 就不能进行转化)

 代码的实现过程: 

  1  首先用spark core 读取数据,将读取的数据进行分词,( 这里我用分词ansj  ,要用这个分词器,需要引入相应的maven 依赖,我把它放下面了)

 2   为每个分类的数据分好类,   之后再将数据join 起来, 形成一个DataSet 

 3  使用Tokenizer 对数据进行分词, 再用hashingTF 对单词进行词频的统计, 再使用IDF 对每个单纯进行特征话, 最后将数据转化为 朴素贝叶斯 分类算法所需要的数据类型, 

4   最后调用 NaiveBayes 的fit 方法  形成 model ,     接着用nba的数据 做模型的测试, 查看结果

import org.apache.spark.ml.Pipeline
import org.apache.spark.ml.feature.HashingTF
import org.apache.spark.ml.feature.IDF
import org.apache.spark.ml.feature.LabeledPoint
import org.apache.spark.ml.feature.Tokenizer
import org.apache.spark.ml.linalg.{Vector, Vectors}
import org.apache.spark.ml.classification.NaiveBayes
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
import org.apache.spark.sql.{Row, SparkSession}
object ChineseClassify {
  def main(args: Array[String]): Unit = {
    val sparkSession = SparkSession.builder().appName("LogisticRegressionWithSGDDemo").master("local").getOrCreate()
    val sc = sparkSession.sparkContext;
    import sparkSession.implicits._
    //将原始数据映射到DataFrame中,字段category为分类编号,字段text为分好的词,以空格分隔
    var training = sc.textFile("G:\\test\\1.txt").map {
      x =>
        var data = x.split(",")
        RawDataRecord(data(0),data(1))
    }.toDF("category","text")


    //将分好的词转换为数组
    var tokenizer = new Tokenizer().setInputCol("text").setOutputCol("words")
    //将每个词转换成Int型,并计算其在文档中的词频(TF)
    var hashingTF =
      new HashingTF().setInputCol("words").setOutputCol("rawFeatures").setNumFeatures(100)
    var idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")

    var srcDF2 = sc.textFile("G:\\test\\2.txt").map(RawDataRecord2(_)).toDF("text")

    val pipeline = new  Pipeline().setStages(Array(tokenizer,hashingTF,idf))
    var idfModel = pipeline.fit(training)
    var rescaledData = idfModel.transform(training)
    // rescaledData.show(false)
    //
    rescaledData.select($"category", $"words", $"features").show(false)
    var trainDataRdd = rescaledData.select($"category",$"features").map {
      case Row(label: String, features: Vector) =>
        LabeledPoint(label.toDouble, Vectors.dense(features.toArray))
    }
    //训练模型
    val model =new NaiveBayes().fit(trainDataRdd)

    //    //测试数据集,做同样的特征表示及格式转换


    val testrescaledData = idfModel.transform(srcDF2)
    var testDataRdd = testrescaledData.select("features").map {
      case Row( features: Vector) =>
        LabeledPoint(0.0, Vectors.dense(features.toArray))
    }
    val testpredictionAndLabel = model.transform(testDataRdd)
    testpredictionAndLabel.show(false)
   

  }
  case class RawDataRecord(category: String, text: String)
  case class RawDataRecord2( text: String)
}

最后的结果:  数据总共为27 条, 其中25条是正确的, 你的结果不一定和我一样,最后补充一下 模型的好坏跟数据的有很大的关系, 每个类型的数据的比例,多少,都会对模型起到影响,  

ansj maven 依赖:

 <!--引入分词器-->
        <dependency>
            <groupId>org.ansj</groupId>
            <artifactId>ansj_seg</artifactId>
            <version>5.1.3</version>
        </dependency>

本文主要参考的博客:http://lxw1234.com/archives/2016/01/605.htm   这个人写的挺不错的, 好多概念性的内容,可以参照一下它的,

js文件的内容为

[文/观察者网 堵开源]12月17日中央电视台军事农业频道《军事报道》栏目“自主创新,铸就国之重器”报道中,出现一个核潜艇携带微型渗透潜艇航行的镜头。这个镜头迅速引起了国外媒体的关注,并认为画面中出现的是我国093A型核潜艇。
不过,经过比对画面,观察者网军事评论员发现,这段几秒钟的镜头,是出自美国电影《勇者行动》中的美国海军“俄亥俄”级核潜艇携带SDV渗透潜艇。当然,在央视节目中出现这个镜头,可能暗示解放军已经拥有了类似的装备。
昨天央视报道中出现的核潜艇携带渗透潜艇画面截图昨天央视报道中出现的核潜艇携带渗透潜艇画面截图
法国《东方钟摆》网站创始人亨利·肯尼曼随后在社交媒体发文称认为这可能是一艘携带渗透潜艇的093A型核潜艇
实际上这段镜头出自美国2012年公映的电影《勇者行动》实际上这段镜头出自美国2012年公映的电影《勇者行动》
在这部电影中,首次使用航拍技术展示了携带SDV渗透潜艇的“俄亥俄”级核潜艇在这部电影中,首次使用航拍技术展示了携带SDV渗透潜艇的“俄亥俄”级核潜艇
由于俄亥俄级的围壳舵外形与中国海军核潜艇相似,在我国的官宣视频中,经常会用它来“扮演”我国海军的核潜艇……
SDV渗透潜艇是一种微型潜艇,美军现役MK.8型SDV能够以4节航速航行15-18海里,能够让核潜艇在安全距离上放出蛙人部队,实施渗透作战
俄亥俄级核潜艇可以在围壳后方可以携带两艘SDV,因此电影镜头里明显可以看到SDV停靠位置偏向一侧
美军的SDV潜艇具有微型声呐用于跟踪海底地形,能够半自主水下航行,SDV可以携带蛙人在水下待机潜伏8-12小时,对其水下潜伏时间的限制不是潜艇的电池或氧气,而是乘员可能因体温过低失去行动能力
针对现役湿式SDV的弱点,美军正在研制新一代微型渗透潜艇,该艇采用“干式”设计,有小型耐压壳,乘员在艇内不与海水接触,这样可以进一步延长水下活动时间
虽然新闻画面中出现的并非我海军渗透潜艇,但随着我海军特种部队的作战任务发展,对于类似SDV的微型渗透艇也有需求,这次在表现我军新质作战能力的画面中出现SDV画面,可能表明我军也已经拥有了类似的装备,毕竟这种微型潜艇的技术难度也并不高
近日央视节目采访中国电科反隐身雷达总师时称,中国已是目前世界上唯一一个拥有反隐身先进米波雷达的国家。自从科索沃战争中美军F-117隐身战机被击落之后,反隐身雷达技术就开始被各国广泛重视,甚至已被部分军迷神话到可让现代隐身战机无所遁形的地步。在东亚周边各国纷纷加快装备隐身战机的当下,中国反隐身雷达是否真能“一夫当关”,未来中国反隐身作战又如何进一步加强,本期出鞘带您关注。(查看完整内容搜索微信公众号:sinamilnews)
原标题:苦心研制四年后,美国终于造出和中国同款的米波反隐身雷达
[环球网军事报道]12月13日,美国洛克希德·马丁公司公开展示一款其最新研制的TPY-X陆基远程多任务雷达系统原型,无论是雷达天线外形,还是技术体制、功能用途描述,和2014年11月的第十届珠海航展上,中国军工展示的JY-26型米波反隐身相控阵雷达系统同出一辙!
四年之后,美国人终于无奈的走上这条路——随着中俄空军也陆续进入隐身时代,现在轮到美国人绞尽脑汁去侦测、防御对手的隐身战机了。这也在侧面印证,我们国家歼-20战机的技术性能,我们的米波反隐身雷达技术,确实是世界顶尖之列!
TPY-X全尺寸原型系统在微波暗室内测试,和中国的JY-26雷达极其神似。TPY-X全尺寸原型系统在微波暗室内测试,和中国的JY-26雷达极其神似。
据简氏防务网站12月13日消息,洛·马公司已经完成了TPY-X雷达系统的最终全尺寸原型,目前正准备开始生产。该雷达最初在2016年中期推出,至今经历了多个版本的改进,以期最终版本能够大规模生产。为加速研发和生产,将直接使用现有AN/TPQ-53反炮兵雷达系统的某些组件。
报道称,TPY-X是一种 L波段有源相控阵雷达,主要用于防空警戒监视。随着“新型威胁”的演变,该雷达解决了性能过时的问题,可以在强电磁攻击环境下“探测非常小的目标”。目前已经有固定型和移动型两个版本,可用C-130、C-17运输机以及直升机空运,或者用卡车、铁路在地面机动输送。
TPY-X雷达防空作战示意图,明显针对隐身战机类低可探测目标。TPY-X雷达防空作战示意图,明显针对隐身战机类低可探测目标
报道没有披露TPY-X雷达的性能数据,但提到该雷达采用氮化镓(GaN)芯片和最新的数字化软件,具有高水平的性能、可靠性和拓展性。而且从报道中可以看到,美国方面对这款新雷达的性能要求高,需求相当迫切。可以说,尽管外媒的很多评论报道都竭尽贬低中俄的歼-20、苏-57,但是美军的压力其实相当大。
目前洛·马公司还在利用TPY-X原型系统对雷达的硬件设计进行验证和鉴定,确定生产版本。最终软件系统定型后,整个雷达系统才能成为可使用的军事资产。真正进入美军服役,恐怕还要等上不短的时间!
而中国的JY-26雷达系统早在2014年就已经公开展示,美国人现在展示的同款雷达其实还处在不完全成熟的原型阶段,在时间上至少落后中方四年。
早些年曾有报道称,中国军方2014年曾在山东部署JY-26雷达,成功监测到在韩国活动的美军F-22隐身战机。而到了2016年2月,在东海防空识别区出现可疑目标,中国海军航空兵战机迅速升空应对。但是海外媒体盛传,这个可疑目标可能就是F-22,而探测雷达可能是最新的JY-26雷达。
这些情况可能永远都不会得到证实,但是中国有关雷达的领先优势是不争的事实。
自从2005年F-22正式服役以来的10多年里,美国空军拥有全世界唯一的“隐身空战”力量,成为被想方设法探测、对抗的头号目标。如今剧情反转,随着中俄空军也陆续进入隐身时代,轮到美国人绞尽脑汁去侦测、防御先进隐身战机了。
11月11日,正值中国空军成立69周年纪念日,中国空军四架歼-20战机飞抵在珠海举办的中国国际航空航天博览会(简称珠海航展)现场上空进行了特别飞行表演,为中国空军的生日献礼。在飞行表演中,歼-20战机首次面向公众开启弹舱,展示其挂载的霹雳-15中距空空导弹和霹雳-10近距格斗弹,这种自信的风范标志中国空军正式走向了一个新时代。无独有偶,就在珠海航展期间,俄罗斯红星电视台也首次上映了俄空军第五代战机苏-57的纪录片《从T-50到苏-57》,片中也出现了四架苏57编队飞行的画面,无意中与中国歼-20战机的亮相形成一种“你方唱罢我登场”的局面。那么本期《出鞘》我们就来通过此次珠海航展来对中俄航空工业进行一次横向对比。(查看完整内容搜索微信公众号:sinamilnews)
从今年的珠海航展开始,国内的军迷就知道了中国几款在研的军用矢量推力发动机。无论是已经在歼-10B战斗机上实机装备使用的,还是在地面展台上展示的几款矢量推力发动机,都证明了中国航空工业在矢量推力发动机方面解决了有无问题。
其中一款矢量推力发动机其中一款矢量推力发动机
但是,从近期解放军向社会公布的新一期军用装备的招标信息来看,解放军目前似乎并不满足于现在已经有的几款矢量推力发动机,而是要研制和美军F-22“猛禽”战斗机相同的二元矢量推力发动机。
可以看到招标书中的明确要求可以看到招标书中的明确要求
在此之前,包括珠海航展上展出的最新型号,中国公布的现有的矢量推力发动机和俄罗斯一样,都是轴对称矢量推力发动机。
轴对称矢量推力发动机的优点是结构相对简单,能够相对的精简一部分矢量控制装置的结构重量,充分利用发动机的功率。这点对于单发战斗机来说尤为重要,因为单发战斗机能够使用的功率本来就比较有限,如果在矢量推力方面浪费过多的动力,很可能导致动力不足。
轴对称矢量推力发动机喷口一般外露轴对称矢量推力发动机喷口一般外露
但是其缺点也很明显,就是为了照顾三元转向的发动机喷口,没有办法对发动机的喷口进行遮蔽。因此轴对称矢量推力发动机的雷达特征和红外特征都比较明显,对于将隐身性能放在首位的第五代战斗机来说,就有点因小失大了。
而美军F-22“猛禽”战斗机的二元矢量推力发动机虽然造成了一部分发动机功率损失,但是能够将发动机喷口整个隐藏在矢量挡板之中,红外和雷达特征相对较小,隐身性能更加出色。加上美制发动机的超大功率,因此“猛禽”战斗机的总功率还处于堪用的状态。
“猛禽”的发动机喷口就隐藏的比较好“猛禽”的发动机喷口就隐藏的比较好
而歼-20战斗机如果使用目前国产的轴对称矢量推力发动机,虽然能够充分在现有发动机的功率水平下获得最大的超机动能力,但相对的,就要削减歼-20战斗机的隐身作战能力。
从歼-20战斗机在珠海航展上展示侧面弹仓时,其侧面弹仓都采用可收放式设计,可以看出中国空军对于歼-20战斗机最为看重的还是其隐身作战性能。因此,即使歼-20现在已经用上了部分国产轴对称矢量推力发动机,估计也是过渡时期的权衡之计。
隐身性能一直是歼-20的首要考量隐身性能一直是歼-20的首要考量
而二元矢量推力发动机,除了要做好二元矢量推力发动机喷管的设计之外,最需要做的,就是充分提升发动机的功率了。通过大马力航空发动机的功率补偿,来弥补因二元矢量设计而损失的发动机做工。
发动机功率大,真的能够为所欲为的发动机功率大,真的能够为所欲为的

nba数据的内容为

雄鹿(20-9)二连胜。“字母哥”吉安尼斯-安特托孔波和米德尔顿合砍55分,其中字母哥得了32分、12个篮板和5次助攻。克里斯-米德尔顿22分2篮板6次助攻,埃里克-布雷德索17分9次助攻,托尼-斯内尔12分6个篮板。[技术统计]
活塞(14-14)过去8场输了7场。布雷克-格里芬打出尴尬的四双,他得了19分、11次助攻和10个篮板,而失误也达到10次。而这也是本赛季NBA第二个“四双”,此前威少曾经在12月8日对阵公牛的比赛中,拿到24分17篮板13助攻10失误。
雷吉-巴洛克24分,安德烈-德拉蒙德10分14个篮板,雷吉-杰克逊11分。替补出场的斯坦利-约翰逊20分6个篮板。
上一场击败凯尔特人,活塞好不容易结束了6连败。虽然经历一波连败,但在连败前他们击败的是勇士,而又是在凯尔特人身上结束的连败,证明了活塞还是有与强队抗衡的资本,之所以连败,只是对比赛的控制能力欠缺。
格里芬助攻庄神格里芬助攻庄神
今天活塞仍坐镇主场,但面对活力十足的雄鹿,活塞占不到便宜。
安特托孔波上一场拿下了44分,面对活塞的“双塔”,他也能自如地得分。雄鹿一度取得两位数的优势,但遭到活塞顽强的反击,双方拼到最后时刻。
开场后巴洛克两度命中三分,活塞打出10-2,而巴洛克一人就得了8分。米德尔顿在27秒内连续投中两记三分,雄鹿迅速缩小差距。两队陷入激战,双方战成23-23后,本节最后2分32秒雄鹿只得2分,本节过后以25-27落后。
格里芬撤步三分格里芬撤步三分
第二节风云突变。本节还有8分28秒时,活塞还以33-32领先,但接下来4分钟他们一分未得,雄鹿连续攻击篮下,连得8分后以39-33反超。雄鹿越战越勇,本节拿下了30分,而活塞只有16分。半场结束时,活塞以43-55落后。
第三节还有3分24秒时,威尔森投中一球,雄鹿以79-64领先15分。格里芬还以三分,活塞发动攻击潮,以一波13-2结束本节,三节过后只以77-81落后。本节最后3分钟,雄鹿只投中一球。
活塞以一波12-5开始第四节,一举以89-86超出,双方终于回到同一起跑线,本节的争夺更加激烈。
大洛三分大洛三分
比赛还有3分46秒时,约翰逊命中三分,活塞只以99-100落后。布雷德索连续三次罚球不中,给了活塞反超的良机,但格里芬遭到抢断。约翰逊送出封盖,活塞成功防守后,无球的格里芬被吹进攻犯规,他摊开双手向裁判喊冤也没用。
活塞连续错失良机,而格里芬此后又一次失误,个人的失误达到了10次。安特托孔波连续两次突破得手,还有一个加罚,一人连得5分,雄鹿以105-99领先。
格里芬走上罚球线,但两罚仅一中,安特托孔波则又一次突破上篮。最后2分钟,当安特托孔波加强攻击后,活塞对他的防守形同虚设。
活塞仍不放弃。比赛还有38.5秒时,巴洛克中投命中,将比分追成104-107。雄鹿关键一投不够谨慎,米德尔顿顶着人出手,未能命中三分。
活塞还有14.4秒。格里芬三分不中,活塞抢下进攻篮板,在最后时刻他再度出手,三分仍未能命中,活塞功亏一篑。(吴哥)
北京时间12月18日,据《The Ringer》报道,就在阿里扎重回华盛顿奇才队之后,曾经有关交易的一些细节也逐渐被曝光了出来。其中,林书豪曾经差一点被交易到太阳。
来自名记凯文-奥康纳的消息显示,在奇才跟太阳和灰熊的三方交易告吹之后,太阳方面跟湖人进行了新一轮的谈判,其中,有一个四方交易的方案险些达成,这其中,有湖人和火箭。
消息称,在太阳和奇才第二次正式达成交易前,太阳和湖人还讨论过一个四方交易:太阳将阿里扎送往湖人,湖人将波普送往火箭,老鹰将林书豪送到太阳,火箭将布兰登-奈特送到老鹰,同时太阳还将得到其他的一些资产,而老鹰将得到一个首轮签。
不过最终,这笔交易还是没能达成,林书豪也没有离开老鹰。
北京时间12月18日,据美媒透露,在今年7月自由球员市场开启第一天,克里斯-保罗就曾想面见特雷沃-阿里扎并挽留他,但未能成功。
今天休斯顿火箭跟队记者Alykhan Bijani发推,援引知名记者Shams Charania的访谈称:
“关于火箭和阿里扎透露出更多细节,今年自由球员市场开启第一天,保罗和火箭管理层就想面见阿里扎,但这次会面最终还是泡汤了。“那一天保罗在自由市场开启后的第一时间就与火箭签下了4年1.6亿美元的合同,而在半个小时后,阿里扎1年1500万美元与太阳签约。
生涯迄今,阿里扎曾2次效力火箭,第二次是从2014-15赛季开始,到今夏结束。在今年7月初,阿里扎以1年1500万美元合同签约太阳,但太阳本季在西区垫底,却使双方选择分手。在太阳、奇才和灰熊的三方交易意外告吹后,太阳直接和奇才达成交易,送走阿里扎,换来凯利-乌布雷和奥斯丁-里弗斯。而这也将是阿里扎生涯第2次效力奇才。
另一方面,挥别了阿里扎和卢克-巴莫特的火箭本季开局磕磕绊绊,一度滑落到西区倒数第二,近日胜率才重回50%。困顿的开局令休斯顿球迷无比怀念阿里扎,也曾有传言称火箭希望阿里扎“回巢”,但最终未能如愿。而美媒在此时爆出保罗曾想会面阿里扎的消息,说明火箭上下并非没有意识到阿里扎的重要作用,只是无法再续前缘。(魑魅)

猜你喜欢

转载自blog.csdn.net/yumingzhu1/article/details/85064047