進(jìn)取心是指不滿足于現(xiàn)狀,堅(jiān)持不懈地向新的目標(biāo)追求的蓬勃向上的心理狀態(tài)。人類如果沒有進(jìn)取心,社會(huì)就會(huì)永遠(yuǎn)停留在一個(gè)水平上,正如魯迅先生所說:“不滿是向上的車輪”。社會(huì)之所以能夠不斷發(fā)展進(jìn)步,一個(gè)重要推動(dòng)力量,就是我們擁有這只“向上的車輪”,即我們常說的進(jìn)取之心。
具有進(jìn)取心的人,渴望有所建樹,爭(zhēng)取更大更好的發(fā)展;為自己設(shè)定較高的工作目標(biāo),勇于迎接挑戰(zhàn),要求自己工作成績(jī)出色。
進(jìn)取心的個(gè)人特質(zhì):
1、好勝心。有強(qiáng)烈的好勝心,不甘落后,勇于向未知領(lǐng)域挑戰(zhàn),以成功的事實(shí)去證明自己的能力和才華。
2、主動(dòng)學(xué)習(xí)。有旺盛的求知欲和強(qiáng)烈的好奇心,從而能不斷接受新事物的出現(xiàn),及時(shí)學(xué)習(xí),更新自己的知識(shí),提高自己的個(gè)人能力。
3、自我發(fā)展。根據(jù)組織總的目標(biāo),制定個(gè)人的發(fā)展目標(biāo),并為之努力奮斗。
進(jìn)取心的等級(jí):
A-1級(jí):沒有強(qiáng)烈的好勝心,對(duì)事業(yè)沒有追求;沒有強(qiáng)烈的求知欲與好奇心,對(duì)于新事物的興趣不高;沒有明確的個(gè)人目標(biāo)。
A-0級(jí):有較強(qiáng)烈的好勝心,對(duì)事業(yè)有一定的追求,敢于向未知領(lǐng)域挑戰(zhàn);有比較強(qiáng)烈的求知欲與好奇心,會(huì)及時(shí)學(xué)習(xí),更新自己的知識(shí)提高職業(yè)素養(yǎng);有較明確的個(gè)人目標(biāo),并為之奮斗。
A+1級(jí):能夠虛心求教,主動(dòng)從多種渠道吸收信息;能夠迅速提高業(yè)務(wù)素質(zhì),并成為骨干;有好勝心,有必勝的信心,主動(dòng)去學(xué)習(xí)各方面知識(shí),加強(qiáng)自身素質(zhì)的提高;對(duì)新事物有強(qiáng)烈的好奇心并能很快地吸收新知識(shí),新技能。
A+2級(jí):工作中爭(zhēng)強(qiáng)好勝,制訂高目標(biāo),為之奮斗;不斷地追求完美;具有旺盛的精神,對(duì)待任何事物都有良好的工作面貌,謙虛、主動(dòng)、積極進(jìn)取、主動(dòng)好學(xué);勇于接受挑戰(zhàn),要求自己工作成績(jī)出色;對(duì)新事物有強(qiáng)烈的求知欲,并學(xué)以致用。
在心理學(xué)上來說進(jìn)取心就是不滿現(xiàn)狀。事情做的盡善盡美的一個(gè)心態(tài),那這個(gè)心態(tài)是通過每天的溝通去培養(yǎng)的。除了我們可以當(dāng)眾的表揚(yáng)孩子,不去當(dāng)眾的數(shù)落我們的小孩。還有很多方法慢慢的培養(yǎng)孩子的進(jìn)取心。
1
比如說,我們可以讓孩子去接觸他們喜歡的這些領(lǐng)域最優(yōu)秀的一些人。
在兒童的一些故事書當(dāng)中有很多名人的傳記。比如說他喜歡畫畫,我們可以給他看看梵高或者其他的一些不同的畫家成功的故事,讓孩子慢慢的在他喜歡的領(lǐng)域找到他心目中的楷模。通過他們的故事去激勵(lì)他們,讓他們知道做好的方式是什么樣的。這個(gè)是培養(yǎng)進(jìn)取心的其中的一種。
2
另外一個(gè)呢就是在孩子失敗的時(shí)候,我們應(yīng)該抱著一個(gè)什么樣的溝通方法。
比如說,孩子在一次的考試成績(jī)中失誤或者他在很喜歡的比賽中受到了挫折,這個(gè)時(shí)候我們家長(zhǎng)應(yīng)該從鼓勵(lì)的角度出發(fā)。比如說:“你很棒,你下次是可以的”。或者我們可以和孩子一起分析他失敗的原因。
不要說“哎呀我早就說過你這樣是不行的,我早就說過你這個(gè)沒有天分”。這個(gè)會(huì)嚴(yán)重的影響到孩子的自信和他完成一些事情的進(jìn)取心的表現(xiàn)。
3
第三點(diǎn)。當(dāng)孩子提出了一些比較理想化,比較充滿幻想的言論時(shí),我們不要潑他的冷水。
比如說有的孩子說將來我要帶人類上月球,這個(gè)時(shí)候其實(shí)孩子是很天真的。或者他把他心中最想做的東西給表達(dá)了出來。這個(gè)時(shí)候他們想要得到的是大人的鼓勵(lì)。
比如說我們可以把這個(gè)愿望具體化,說你這個(gè)愿望是非常好的,但是我們可不可以一步一步的往前怎么做,把他的夢(mèng)想或目標(biāo)細(xì)化,讓他每天可以從他說出來的話當(dāng)中去和他日常的活動(dòng)日常的行為相結(jié)合。
這個(gè)樣子孩子慢慢的就知道自己的夢(mèng)想是什么。然后我可以通過什么一步步達(dá)到我的夢(mèng)想。而不是我說了一個(gè)理想,大家是嘲笑的或者一盆冷水澆下來。
進(jìn)取心能夠激發(fā)起責(zé)任心的。一個(gè)人人有進(jìn)取心,有上進(jìn)心,那他就會(huì)積極努力,奮發(fā)有為,在自己的工作崗位,善于思考,努力學(xué)習(xí),樂于奉獻(xiàn),做事有動(dòng)力,那也就極度負(fù)責(zé),會(huì)有很強(qiáng)的責(zé)任心。
因?yàn)椋e極地努力工作,是要把這事做好,要做好,就要負(fù)責(zé)任,不負(fù)責(zé)任的話,是不可能做好的。所以說,一個(gè)有進(jìn)取心的人,肯定有責(zé)任心,也就是說,進(jìn)取心能夠激發(fā)起責(zé)任心的。
安于現(xiàn)狀和進(jìn)取心不強(qiáng)表現(xiàn)主要有以下幾點(diǎn):
1. 缺乏追求挑戰(zhàn)和成長(zhǎng)的動(dòng)力,對(duì)待工作和生活比較消極,缺乏目標(biāo)和計(jì)劃。
2. 對(duì)于職業(yè)的發(fā)展缺乏清晰的規(guī)劃和計(jì)劃,不愿意接受新的任務(wù)或項(xiàng)目,對(duì)新的技能或
以下是關(guān)于求學(xué)有進(jìn)取心不懈怠的詩詞:
“少壯不努力,老大徒傷悲。”——《長(zhǎng)歌行》
“學(xué)如逆水行舟,不進(jìn)則退。”——清代梁章鉅《退庵隨筆》
“學(xué)無止境,自強(qiáng)不息。”——戰(zhàn)國(guó)莊子《莊子·養(yǎng)生主》
“路漫漫其修遠(yuǎn)兮,吾將上下而求索。”——戰(zhàn)國(guó)屈原《離騷》
“學(xué)而不厭,誨人不倦。”——《論語·述而》
“書山有路勤為徑,學(xué)海無涯苦作舟。”——唐代韓愈《贈(zèng)汪倫》
“勤能補(bǔ)拙,笨鳥先飛。”——清代陳元靚《事林廣記·卷九》
“志存高遠(yuǎn),腳踏實(shí)地。”——清代紀(jì)昀《閱微草堂筆記·如是我聞三》
“讀萬卷書,行萬里路。”——清代梁章鉅《浪跡叢談·卷七》
“知之為知之,不知為不知,是知也。”——《論語·為政》
企業(yè)家需要有一顆奮斗,進(jìn)取的品質(zhì),進(jìn)取心是企業(yè)家必須具備的品質(zhì)。
1、沒有目的與規(guī)劃
一件事、一段感情,要想雜亂無章、比擬順利地停止,就得事前做好良好的目的與規(guī)劃。生活就像游覽一樣,想要玩得開心又經(jīng)濟(jì)實(shí)惠就得提早做攻略,不然只會(huì)像無頭蒼蠅一樣四處亂竄。
兩個(gè)人在一同,男人要是沒有幻想,沒有本人想做的事情,對(duì)本人的將來沒有任何規(guī)劃,整天渾渾噩噩、得過且過,那么他是無法給予你幸福的。這樣的男人,從心態(tài)上就沒有擺正本人的想法,事實(shí)上他這不只是對(duì)本人的不擔(dān)任,也是對(duì)愛他的人不擔(dān)任。
和這樣的男人在一同,都看不到將來的一絲光輝,所以別太天真,再愛也要學(xué)會(huì)放下。
2、從不付出實(shí)踐行動(dòng)
當(dāng)然,理論是檢驗(yàn)謬誤的獨(dú)一規(guī)范,沒有哪件事是說說就能完成的,也沒有誰的勝利是坐著就能等來的,一切的關(guān)鍵都在于“做”這個(gè)字。一個(gè)男人只要巨大的目的是不行的,他得實(shí)在地落在行動(dòng)上。假如,一個(gè)男人每天都在念叨著我要掙大錢,我要買大房子,要給你好的生活。
但是,他卻整天窩在出租屋里玩游戲、吃快餐,讓他去找個(gè)工作,他總是說找過了,找不到。假如他真心想去做,那么就算是最苦最累的工作,他也會(huì)去嘗試、去堅(jiān)持,又怎樣會(huì)找不到呢?一切不過都是不想付出汗水與行動(dòng)、沒有膽量和勇氣的借口而已。
和這樣的男人在一同,女人真的會(huì)很累,由于他總是在給予你希望,卻又讓你絕望,所以,當(dāng)你發(fā)現(xiàn)他有這樣沒有上進(jìn)心的表現(xiàn)時(shí),就該放下了!
3、受不了波折與打擊
縱觀古今,沒有誰能一舉勝利,也沒有誰的勝利是易如反掌、輕松容易的。一個(gè)有上進(jìn)心的男人,他可能并不比他人聰明,但他卻比他人更能堅(jiān)持,能不怕失敗,所以假如男人和你在一同,總是表現(xiàn)得很剛強(qiáng),勇于去面對(duì)和承當(dāng),就闡明他是一個(gè)有上進(jìn)心的男人。
相反,假如男人在和你相處的過程中,受不了波折與打擊,以至在遇到艱難的時(shí)分,習(xí)氣性的躲在你身后,等著你去處理或者直接選擇逃避,那就闡明他是一個(gè)沒有上進(jìn)心的男人。
生命的輝煌在于不斷地進(jìn)取,不斷地超越。 過去屬于歷史。所以,不管你的過去是痛苦不堪,還是燦爛無比。請(qǐng)不要沉迷于過去,緬懷過去。 一時(shí)的失敗并不等于永遠(yuǎn)的失敗,一時(shí)的失敗并不扼殺希望。同樣,一時(shí)的成功并不意味著永遠(yuǎn)的成功,不能整天躺在功勞簿上。人生有逆境,也有順境。身處順境時(shí),不要忘了居安思危;身處逆境時(shí),不要忘了自強(qiáng)不息。只有這樣,我們才能立于不敗之地。 人生有“四氣“,奮發(fā)向上、百折不撓的志氣;鐵面無私、令人敬畏的正氣;披荊斬棘、舍生取義的勇氣;求新求好,能做善做的才氣。是的,誰要想成為一個(gè)贏家就必須具有人生“四氣”。然而,我認(rèn)為進(jìn)取心是“四氣”的關(guān)鍵。有了進(jìn)取心,你才會(huì)奮發(fā)向上、百折不撓;有了進(jìn)取心,你才會(huì)披荊斬棘;有了進(jìn)取心,你才會(huì)求新求好。所以生命的輝煌在于不斷地進(jìn)取。 “有志者,事竟成。”就是告訴我們有志氣,有進(jìn)取心的人,才能夠成功。“世之奇?zhèn)ァ⒐骞帧⒎浅V^,常在于險(xiǎn)遠(yuǎn)。”所以,要觀賞世間“奇?zhèn)ァ薄ⅰ肮骞帧薄ⅰ胺浅V^”要有進(jìn)取心的人才可能觀賞得到。人生不如意十有八九,所以我們要時(shí)時(shí)保持進(jìn)取心,無論是順境,還是逆境。我們不能像李隆基一樣,在他統(tǒng)治的后期,不思進(jìn)取,不懂得居安思危,只懂得躺在自己以前的功勞薄上,終成遺憾。我們要引以為戒,要知道“憂勞可以興國(guó),逸豫可以亡身”啊!所以,無論何時(shí)何地,我們都要不斷地進(jìn)取,不斷超越。只有這樣,我們才可能達(dá)到成功的彼岸。 無論做什么事,我們要有進(jìn)取心,因?yàn)橹挥羞M(jìn)取,才能使我們前進(jìn);只有進(jìn)取,才能使我們不斷發(fā)現(xiàn)自身的不足并加以改正;只有進(jìn)取才能使我們更加完美…… 總之,如果沒有一顆勇于進(jìn)取的心,那么你只能生活在失敗的陰影中~~~
一、信念,堅(jiān)信成功屬于勤奮的人。
二、充電,多看勵(lì)志書籍,名人傳記,找到崇拜的人。
三、與家人溝通,獲得親人的支持。
之前看了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
檢測(cè)數(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。將要檢測(cè)數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對(duì)vector數(shù)據(jù)進(jìn)行分類。
接下來貼下我的代碼實(shí)現(xiàn)=》
1. 構(gòu)造分類數(shù)據(jù):
在hdfs主要?jiǎng)?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。將要檢測(cè)數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對(duì)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";
/*
* 測(cè)試代碼
*/
public static void main(String[] args) {
//將訓(xùn)練數(shù)據(jù)轉(zhuǎn)換成 vector數(shù)據(jù)
makeTrainVector();
//產(chǎn)生訓(xùn)練模型
makeModel(false);
//測(cè)試檢測(cè)數(shù)據(jù)
BayesCheckData.printResult();
}
public static void makeCheckVector(){
//將測(cè)試數(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(){
//將測(cè)試數(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("檢測(cè)數(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("檢測(cè)所屬類別是:"+getCheckResult());
}
}