基於 spark ml NaiveBayes實現中文文本分類

思路:

  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%。困頓的開局令休斯頓球迷無比懷念阿里扎,也曾有傳言稱火箭希望阿里扎“回巢”,但最終未能如願。而美媒在此時爆出保羅曾想會面阿里扎的消息,說明火箭上下並非沒有意識到阿里扎的重要作用,只是無法再續前緣。(魑魅)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章