是他?是他!小哪吒 - 小寶pengpeng
詞:陳偉灝
曲:陳乜寶
編曲:陳乜寶
珠入塵
三年六月誕魔童
怒發(fā)沖冠提紅焰
金剛咒
陳塘關(guān)內(nèi)脫真神
奈何人間偏見推
腳踏金霞風(fēng)火輪
混天綾中福世民
我命由我不由天
靈珠二世出凡塵
三收三放乾坤圈
為親未懼萬雷誅
蓮花身上真元神
君神嘆 爹娘憐
來世再追逐
晴日無憂少童年
珠入塵
三年六月誕魔童
怒發(fā)沖冠提紅焰
金剛咒
陳塘關(guān)內(nèi)脫真神
奈何人間偏見推
腳踏金霞風(fēng)火輪
混天綾中福世民
我命由我不由天
靈珠二世出凡塵
三收三放乾坤圈
為親未懼萬雷誅
蓮花身上真元神
君神嘆 爹娘憐
來世再追逐
晴日無憂
我命不由天
來世再出凡生為親為懼
蓮花身上真元神
君神嘆 爹娘憐
來世再追逐
晴日無憂少童年
《哪吒傳奇》的片尾曲是《少年英雄小哪吒》,主題曲是《小哪吒》。
《哪吒傳奇》動畫片音樂:
《小哪吒》作詞:張黎 作曲:肖白 演唱:孫楠 片頭主題曲
《少年英雄小哪吒》作詞:喬羽 作曲:李海鷹 演唱:楊采鈺 片尾主題曲
歌曲介紹:
1、小哪吒
歌名:小哪吒
(《哪吒傳奇》的主題曲)
作詞:張黎
作曲:肖白
演唱:孫楠
歌詞:
說一段神話
話說那么一家
這家夫妻倆
生了個(gè)怪娃娃
扎倆個(gè)沖天鬏
光著倆小腳丫
踩著倆風(fēng)火輪
乾坤圈手中拿
混天綾護(hù)著他
軒轅箭滿弓拉
兩眼是照妖鏡
雙腿是追風(fēng)馬
乾坤圈伴著他
上天下海本事大
三頭六臂顯威力
千征百戰(zhàn)斗魔法
要問他名字叫什么
哪吒 哪吒 小哪吒
說一段神話
話說那么一家
這家夫妻倆
生了個(gè)怪娃娃
扎倆個(gè)沖天鬏
光著倆小腳丫
踩著倆風(fēng)火輪
乾坤圈手中拿
混天綾護(hù)著他
軒轅箭滿弓拉
兩眼是照妖鏡
雙腿是追風(fēng)馬
乾坤圈伴著他
上天下海本事大
三頭六臂顯威力
千征百戰(zhàn)斗魔法
要問他名字叫什么
哪吒 哪吒 小哪吒
2、少年英雄小哪吒
歌名:少年英雄小哪吒
(《哪吒傳奇》的片尾曲)
歌曲原唱:楊采鈺
填 詞:喬羽
譜 曲:李海鷹
歌詞:
是他,是他,是他,就是他.
我們的朋友小哪吒.
是他,就是他,是他,就是他.
少年英雄,小哪吒.
上天他比~(稍長音),天要高~(同上).
下海他比~(同上),海更大啊~啊~(同上).
智斗妖魔~,勇降鬼怪.
少年英雄,就是小哪吒.
有時(shí),他很聰明.
有時(shí),他也犯傻.
他的個(gè)頭跟我一般高.
有時(shí),他很努力.
有時(shí),他也貪玩.
他的年紀(jì)和我一般大~~(長音).
上天他比~(稍長音),天要高~(同上).
下海他比~(同上),海更大啊~啊~(同上).
智斗妖魔~,勇降鬼怪.
少年英雄,就是小哪吒~~(長音)
《哪吒之魔童降世》是一部中國動畫電影,講述了中國傳統(tǒng)神話故事中的神話角色哪吒的故事。在電影中,有一首著名的歌曲稱為《小哪吒》。這首歌曲是電影中的主題曲,由華語流行歌手趙雷演唱。該歌曲以活潑、陽光的旋律,表達(dá)了哪吒少年時(shí)代的頑皮和天真,相當(dāng)受到觀眾喜愛。
電動汽車市場的崛起為環(huán)保出行提供了全新的選擇。中國作為全球最大的汽車市場之一,一直致力于推動電動汽車技術(shù)和創(chuàng)新。在這個(gè)快節(jié)奏的市場中,一個(gè)備受關(guān)注的品牌脫穎而出,那就是哪吒汽車。
作為中國新興的電動汽車品牌,哪吒汽車以其鮮明的個(gè)性、卓越的性能和引人注目的設(shè)計(jì)而聞名。其獨(dú)特的品牌名稱“哪吒”源于中國古代神話故事,寓意著通過科技和創(chuàng)新來喚醒人們對環(huán)境保護(hù)的意識。
哪吒汽車的使命是推動可持續(xù)出行的未來,為消費(fèi)者提供高品質(zhì)、高性能的電動汽車。
哪吒u是哪吒汽車最受歡迎的車型之一。它是一款全電動SUV,融合了先進(jìn)的科技和創(chuàng)新的設(shè)計(jì)。哪吒u的電池采用了最新的鋰離子技術(shù),具有出色的續(xù)航能力和快速充電功能,為用戶提供便捷的充電體驗(yàn)。
哪吒u還配備了先進(jìn)的駕駛輔助系統(tǒng),包括自動緊急制動、車道保持輔助和自適應(yīng)巡航控制等功能,提供了安全可靠的駕駛體驗(yàn)。同時(shí),哪吒u的智能互聯(lián)功能使得駕駛變得更加智能方便,通過手機(jī)應(yīng)用可以遠(yuǎn)程控制車輛,了解車輛的狀態(tài)并進(jìn)行預(yù)約充電等操作。
哪吒u的外觀設(shè)計(jì)簡約而富有動感,前臉采用了哪吒汽車標(biāo)志性的“地球進(jìn)化”設(shè)計(jì)元素,給人一種科技感和未來感。內(nèi)飾采用了高級材料和精致工藝,營造出舒適而豪華的駕駛空間。
哪吒u不僅在性能和技術(shù)上出眾,其堅(jiān)持可持續(xù)發(fā)展的理念也得到了廣泛認(rèn)可。哪吒汽車致力于推動電動汽車的發(fā)展,降低車輛對環(huán)境的影響,為綠色出行貢獻(xiàn)力量。
哪吒汽車是中國電動汽車市場的新秀,但它以其獨(dú)特的個(gè)性和出色的性能逐漸在競爭激烈的市場中嶄露頭角。隨著對環(huán)保和可持續(xù)出行需求的不斷增加,電動汽車市場正在迎來發(fā)展的黃金時(shí)期,而哪吒汽車正是這個(gè)機(jī)遇下的受益者。
作為一家年輕的品牌,哪吒汽車不斷推出創(chuàng)新的產(chǎn)品和服務(wù),滿足消費(fèi)者對高品質(zhì)電動汽車的需求。它不僅注重技術(shù)和性能的提升,還致力于提供舒適、智能的駕駛體驗(yàn)。
與此同時(shí),哪吒汽車還注重可持續(xù)發(fā)展的理念,在產(chǎn)品設(shè)計(jì)和生產(chǎn)過程中采用環(huán)保材料和技術(shù),減少對環(huán)境的負(fù)擔(dān)。哪吒汽車積極推廣綠色出行,呼吁人們關(guān)注環(huán)境保護(hù),共同構(gòu)建可持續(xù)發(fā)展的未來。
哪吒汽車的前景非常可觀。隨著電動汽車市場的不斷發(fā)展,消費(fèi)者對高品質(zhì)、高性能電動汽車的需求將進(jìn)一步增長。同時(shí),政府對環(huán)保出行的支持和鼓勵(lì)也將提供更多機(jī)會給電動汽車企業(yè)。
中國作為全球最大的汽車市場之一,對電動汽車的需求量巨大。哪吒汽車憑借其卓越的性能、鮮明的品牌形象和綠色發(fā)展理念,將在電動汽車市場中占據(jù)重要地位。
哪吒汽車作為中國新興的電動汽車品牌,以其獨(dú)特的個(gè)性和出色的性能贏得了消費(fèi)者的青睞。哪吒u作為哪吒汽車的明星產(chǎn)品,以其卓越的駕駛體驗(yàn)和綠色發(fā)展理念成為了電動汽車市場的焦點(diǎn)。
隨著電動汽車市場的不斷壯大和需求的不斷增長,哪吒汽車有著巨大的發(fā)展?jié)摿ΑKe極推動環(huán)保出行,為消費(fèi)者提供高品質(zhì)、高性能的電動汽車,不斷滿足人們對智能、舒適駕駛體驗(yàn)的需求。
哪吒汽車的未來可期,我們有理由相信,在不久的將來,哪吒汽車將成為中國電動汽車市場的佼佼者,為綠色出行事業(yè)貢獻(xiàn)更多力量。
哪吒汽車是一家新興的汽車制造公司,近年來備受關(guān)注。哪吒汽車哪吒v是該公司旗下的一款電動汽車,備受消費(fèi)者喜愛。本文將對哪吒汽車哪吒v進(jìn)行深入的分析和評價(jià)。
哪吒汽車哪吒v的外觀設(shè)計(jì)可謂獨(dú)具匠心,融入了許多未來感的元素。車身線條流暢,外觀犀利,給人一種時(shí)尚、科技感極強(qiáng)的視覺沖擊。前格柵設(shè)計(jì)獨(dú)特,搭配LED大燈,賦予了這款車獨(dú)特的個(gè)性。
作為一款電動汽車,哪吒汽車哪吒v在性能方面表現(xiàn)優(yōu)異。動力強(qiáng)勁,加速迅猛,給駕駛者帶來極佳的駕駛體驗(yàn)。電池續(xù)航里程長,充電便捷,滿足日常使用需求。
哪吒汽車哪吒v的內(nèi)飾設(shè)計(jì)簡潔大氣,采用了高品質(zhì)的材質(zhì),舒適度和實(shí)用性兼具。中控臺采用了大尺寸觸控屏幕,操作便捷,界面友好。座椅舒適支撐力度適中,長途駕駛也不覺得疲勞。
在安全方面,哪吒汽車哪吒v配備了多項(xiàng)智能安全系統(tǒng),如自動緊急剎車、車道保持輔助等,有效提升了駕駛安全系數(shù)。車輛結(jié)構(gòu)穩(wěn)固,通過了多項(xiàng)安全測試,為駕駛者和乘客提供了全方位的安全保障。
哪吒汽車哪吒v的售價(jià)相對合理,性價(jià)比較高,吸引了不少消費(fèi)者的關(guān)注。在競爭對手方面,哪吒v與其他電動汽車品牌競爭激烈,但憑借出色的性能和設(shè)計(jì),依然具有一定的市場競爭力。
綜合來看,哪吒汽車哪吒v作為一款新興的電動汽車,擁有優(yōu)良的外觀設(shè)計(jì)、強(qiáng)勁的性能表現(xiàn)和優(yōu)秀的安全性能,給人留下了深刻的印象。相信隨著哪吒汽車在市場上的不斷發(fā)展壯大,哪吒v將會在電動汽車領(lǐng)域發(fā)光發(fā)熱,為消費(fèi)者帶來更多驚喜。
李靖
李靖,中國古代神話人物,道教神仙,出自于明代古典神話小說名著《封神演義》、《西游記》、《南游記》等諸多文學(xué)作品以及民間傳說。乃殷夫人之夫,金吒、木吒、哪吒三太子、李貞英之父;地涌夫人(金鼻白老鼠精)的義父。
在小說《封神演義》之中是商朝人,家住陳塘關(guān)李府,在凡間曾任陳塘關(guān)的鎮(zhèn)關(guān)總兵,本是商朝紂王部下的關(guān)口守將之一,后反商伐紂,參與殷周大戰(zhàn),原為西昆侖度厄真人的弟子,后另拜燃燈道人為師,是闡教的老三代弟子。修道成圣后,晉升仙班成為靈山護(hù)法神。府邸居于天庭的云樓宮
我覺得演小范閑的“老戲骨”韓昊霖好適合解封之前的小哪吒!
太可愛啦
笑起來特別像,聲音也像,而且他的牙齒跟動漫里哪吒那種圓圓的一模一樣,哪吒的煙熏妝一上完全沒問題!
演起來風(fēng)格能動能靜,在看慶余年戲里面一開始拍師傅那一磚面部動作都能表演狠勁兒,要有打戲能hold住,在戲外花絮里,孩子也挺挺活絡(luò)的,也已經(jīng)出演了不少的電視劇,就像《我和我的祖國》里演冬冬就很精彩,當(dāng)時(shí)在電影院里演到緊張的就是那個(gè)女排關(guān)鍵時(shí)刻他要扶電線桿的部分,把一眾阿姨逗笑了。
如果真的能演真人版,我覺得孩子完全演的出哪吒所需要的那種張力。
要拍可趕早啊,否則適合的演的小朋友可都要長大啦!
在中國汽車行業(yè)的競爭激烈背景下,哪吒汽車成為了一顆耀眼的新星。作為中國本土汽車制造商,哪吒汽車憑借其獨(dú)特的設(shè)計(jì)理念和創(chuàng)新科技,成功地重新定義了中國汽車行業(yè)的未來。
哪吒汽車以其獨(dú)特的外觀設(shè)計(jì)吸引了全球的目光。哪吒u白色,作為哪吒汽車旗下的一款經(jīng)典車型,將中國傳統(tǒng)文化與現(xiàn)代科技相結(jié)合,形成了一種獨(dú)特的審美風(fēng)格。這款車型采用了全新的造型設(shè)計(jì),融合了中國傳統(tǒng)雕塑的元素,賦予了車身一種流暢而有力的曲線。而純白色的車身,則象征著純凈和未來。
在科技方面,哪吒汽車同樣秉持著創(chuàng)新的理念。哪吒u白色搭載了最新一代的電動驅(qū)動系統(tǒng),為用戶帶來了更加綠色和環(huán)保的出行方式。同時(shí),哪吒汽車注重與互聯(lián)網(wǎng)技術(shù)的結(jié)合,為用戶提供了智能駕駛等一系列先進(jìn)的功能,進(jìn)一步提升了駕駛體驗(yàn)。
哪吒汽車始終將用戶體驗(yàn)放在首位。在哪吒u白色中,用戶可以感受到前所未有的舒適與便利。車內(nèi)采用了高級材質(zhì)和人性化設(shè)計(jì),打造了一個(gè)寬敞而溫馨的駕駛空間。同時(shí),哪吒汽車還在車聯(lián)網(wǎng)和智能服務(wù)領(lǐng)域做出了積極的探索,為用戶提供了更加個(gè)性化和便捷的服務(wù)。
哪吒汽車還注重與用戶的互動與溝通。通過社交媒體和智能手機(jī)應(yīng)用,哪吒汽車與用戶建立了緊密的聯(lián)系。用戶可以隨時(shí)獲得品牌的最新動態(tài)和優(yōu)惠信息,同時(shí)還可以參與到哪吒汽車的產(chǎn)品設(shè)計(jì)和改進(jìn)中來。這種用戶參與的模式,不僅增強(qiáng)了用戶的忠誠度,也為哪吒汽車提供了寶貴的市場反饋。
哪吒汽車積極響應(yīng)國家綠色發(fā)展的號召,致力于推動綠色出行的發(fā)展。哪吒u白色作為電動汽車,零排放的特性使其成為城市環(huán)境友好型車輛的代表。哪吒汽車還積極參與社會公益事業(yè),通過贊助環(huán)保活動和推廣節(jié)能理念,為社會的可持續(xù)發(fā)展做出了積極的貢獻(xiàn)。
哪吒汽車以其獨(dú)特的品牌價(jià)值取得了巨大的市場成功。哪吒u白色作為其旗艦產(chǎn)品,不僅在設(shè)計(jì)與科技上具備獨(dú)特的競爭優(yōu)勢,同時(shí)也贏得了廣大用戶的認(rèn)可和喜愛。
未來,哪吒汽車將繼續(xù)保持對創(chuàng)新的追求,不斷提升產(chǎn)品的品質(zhì)和用戶的體驗(yàn)。隨著中國汽車市場的進(jìn)一步發(fā)展和對綠色出行需求的增加,哪吒汽車有著更廣闊的發(fā)展前景。哪吒u白色作為哪吒汽車的一張名片,將繼續(xù)引領(lǐng)中國汽車行業(yè)的潮流,為用戶帶來更加出色的出行體驗(yàn)。
在哪吒汽車的努力下,中國汽車行業(yè)正逐漸走向創(chuàng)新與綠色發(fā)展的道路,為中國和全球的可持續(xù)發(fā)展做出了積極的貢獻(xiàn)。
Disclaimer: 本文為機(jī)器生成內(nèi)容,不代表任何觀點(diǎn)和立場。因?yàn)榻裉焯溆匈徿囆枨螅谝粋€(gè)考慮的是五菱宏光mini,頂配170km,落地4.5。全車沒有安全氣囊和等車一個(gè)月,續(xù)航問題最后pass。通過朋友介紹看車1天直接選擇哪吒v
同價(jià)位車型性價(jià)比最高,外形是suv,內(nèi)飾造型簡介,符合年輕人審美。
操作精準(zhǔn),適合女生操作。男生當(dāng)然也可以
3電質(zhì)保,有國資背書,更值得信賴
已提車一個(gè)月,1000km有余,沖了大概5-6次電,基本都是百分之20充電。總而言之感覺很值,用車成本低,停車半價(jià),基本現(xiàn)在也會給有需求的朋友推薦。
顏色最終選的白色,耐臟!
之前看了Mahout官方示例 20news 的調(diào)用實(shí)現(xiàn);于是想根據(jù)示例的流程實(shí)現(xiàn)其他例子。網(wǎng)上看到了一個(gè)關(guān)于天氣適不適合打羽毛球的例子。
訓(xùn)練數(shù)據(jù):
Day Outlook Temperature Humidity Wind PlayTennis
D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Strong Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Weak Yes
D11 Sunny Mild Normal Strong Yes
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes
D14 Rain Mild High Strong No
檢測數(shù)據(jù):
sunny,hot,high,weak
結(jié)果:
Yes=》 0.007039
No=》 0.027418
于是使用Java代碼調(diào)用Mahout的工具類實(shí)現(xiàn)分類。
基本思想:
1. 構(gòu)造分類數(shù)據(jù)。
2. 使用Mahout工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。
3。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對vector數(shù)據(jù)進(jìn)行分類。
接下來貼下我的代碼實(shí)現(xiàn)=》
1. 構(gòu)造分類數(shù)據(jù):
在hdfs主要創(chuàng)建一個(gè)文件夾路徑 /zhoujainfeng/playtennis/input 并將分類文件夾 no 和 yes 的數(shù)據(jù)傳到hdfs上面。
數(shù)據(jù)文件格式,如D1文件內(nèi)容: Sunny Hot High Weak
2. 使用Mahout工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。
3。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對vector數(shù)據(jù)進(jìn)行分類。
這三步,代碼我就一次全貼出來;主要是兩個(gè)類 PlayTennis1 和 BayesCheckData = =》
package myTesting.bayes;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;
import org.apache.mahout.text.SequenceFilesFromDirectory;
import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;
public class PlayTennis1 {
private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";
/*
* 測試代碼
*/
public static void main(String[] args) {
//將訓(xùn)練數(shù)據(jù)轉(zhuǎn)換成 vector數(shù)據(jù)
makeTrainVector();
//產(chǎn)生訓(xùn)練模型
makeModel(false);
//測試檢測數(shù)據(jù)
BayesCheckData.printResult();
}
public static void makeCheckVector(){
//將測試數(shù)據(jù)轉(zhuǎn)換成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"testinput";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失敗!");
System.exit(1);
}
//將序列化文件轉(zhuǎn)換成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件轉(zhuǎn)換成向量失敗!");
System.out.println(2);
}
}
public static void makeTrainVector(){
//將測試數(shù)據(jù)轉(zhuǎn)換成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"input";
String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失敗!");
System.exit(1);
}
//將序列化文件轉(zhuǎn)換成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件轉(zhuǎn)換成向量失敗!");
System.out.println(2);
}
}
public static void makeModel(boolean completelyNB){
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";
String model = WORK_DIR+Path.SEPARATOR+"model";
String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";
Path in = new Path(input);
Path out = new Path(model);
Path label = new Path(labelindex);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
if(fs.exists(label)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(label, true);
}
TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();
String[] params =null;
if(completelyNB){
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};
}else{
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};
}
ToolRunner.run(tnbj, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("生成訓(xùn)練模型失敗!");
System.exit(3);
}
}
}
package myTesting.bayes;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.mahout.classifier.naivebayes.BayesUtils;
import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;
import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;
import org.apache.mahout.common.Pair;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.Vector.Element;
import org.apache.mahout.vectorizer.TFIDF;
import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Multiset;
public class BayesCheckData {
private static StandardNaiveBayesClassifier classifier;
private static Map<String, Integer> dictionary;
private static Map<Integer, Long> documentFrequency;
private static Map<Integer, String> labelIndex;
public void init(Configuration conf){
try {
String modelPath = "/zhoujianfeng/playtennis/model";
String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";
String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";
String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";
dictionary = readDictionnary(conf, new Path(dictionaryPath));
documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));
labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));
NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);
classifier = new StandardNaiveBayesClassifier(model);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("檢測數(shù)據(jù)構(gòu)造成vectors初始化時(shí)報(bào)錯(cuò)。。。。");
System.exit(4);
}
}
/**
* 加載字典文件,Key: TermValue; Value:TermID
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {
Map<String, Integer> dictionnary = new HashMap<String, Integer>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
String name = path.getName();
return name.startsWith("dictionary.file");
}
};
for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {
dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());
}
return dictionnary;
}
/**
* 加載df-count目錄下TermDoc頻率文件,Key: TermID; Value:DocFreq
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {
Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
return path.getName().startsWith("part-r");
}
};
for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {
documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());
}
return documentFrequency;
}
public static String getCheckResult(){
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String classify = "NaN";
BayesCheckData cdv = new BayesCheckData();
cdv.init(conf);
System.out.println("init done...............");
Vector vector = new RandomAccessSparseVector(10000);
TFIDF tfidf = new TFIDF();
//sunny,hot,high,weak
Multiset<String> words = ConcurrentHashMultiset.create();
words.add("sunny",1);
words.add("hot",1);
words.add("high",1);
words.add("weak",1);
int documentCount = documentFrequency.get(-1).intValue(); // key=-1時(shí)表示總文檔數(shù)
for (Multiset.Entry<String> entry : words.entrySet()) {
String word = entry.getElement();
int count = entry.getCount();
Integer wordId = dictionary.get(word); // 需要從dictionary.file-0文件(tf-vector)下得到wordID,
if (StringUtils.isEmpty(wordId.toString())){
continue;
}
if (documentFrequency.get(wordId) == null){
continue;
}
Long freq = documentFrequency.get(wordId);
double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);
vector.setQuick(wordId, tfIdfValue);
}
// 利用貝葉斯算法開始分類,并提取得分最好的分類label
Vector resultVector = classifier.classifyFull(vector);
double bestScore = -Double.MAX_VALUE;
int bestCategoryId = -1;
for(Element element: resultVector.all()) {
int categoryId = element.index();
double score = element.get();
System.out.println("categoryId:"+categoryId+" score:"+score);
if (score > bestScore) {
bestScore = score;
bestCategoryId = categoryId;
}
}
classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";
return classify;
}
public static void printResult(){
System.out.println("檢測所屬類別是:"+getCheckResult());
}
}