多數(shù)大學(xué)生把“自身人格的完美”和“生計(jì)的需要”作為就業(yè)的主要目的,而少數(shù)人選擇了“為社會(huì)做貢獻(xiàn)”。
選擇“為社會(huì)做貢獻(xiàn)”的人數(shù)雖少,但也是很可喜的現(xiàn)象,他們會(huì)帶動(dòng)和影響很多人為國家和社會(huì)做貢獻(xiàn)。
在這方面,青年馬克思為我們做出了榜樣。
馬克思認(rèn)為,青年人選擇職業(yè)應(yīng)該遵循的主要指針是“人類的幸福和我們自身的完美”。
這二者不是對(duì)立的,人們只有為他人的幸福和人格的完美而工作,才有自己的幸福和人格的完美。
一個(gè)人如果只想著自己,只為自己的幸福而勞動(dòng),那么這個(gè)人或許會(huì)在某一領(lǐng)域有所貢獻(xiàn),但是“他永遠(yuǎn)不能成為一個(gè)完美無疵的偉大人物”。
第一:正確的擇業(yè)觀指的是:世界觀、人生觀、價(jià)值觀、社會(huì)觀。所謂擇業(yè),就是擇業(yè)者根據(jù)自己的職業(yè)理想和能力,從社會(huì)上各種職業(yè)中選擇其中的一種作為自己從事的職業(yè)過程。
第二:職業(yè)是人類在勞動(dòng)過程中的分工現(xiàn)象,它體現(xiàn)的是勞動(dòng)力與勞動(dòng)資料之間的結(jié)合關(guān)系,其實(shí)也體現(xiàn)出勞動(dòng)者之間的關(guān)系,勞動(dòng)產(chǎn)品的交換體現(xiàn)的是不同職業(yè)之間的勞動(dòng)交換關(guān)系。這種勞動(dòng)過程中結(jié)成的人與人的關(guān)系無疑是社會(huì)性的,他們之間的勞動(dòng)交換反映的是不同職業(yè)之間的等價(jià)關(guān)系,這反映了職業(yè)活動(dòng)職業(yè)勞動(dòng)成果的社會(huì)屬性。
科學(xué)就業(yè)觀是指求職者以正確認(rèn)識(shí)個(gè)人與社會(huì)關(guān)系為前提,在客觀評(píng)價(jià)自我,理性認(rèn)識(shí)就業(yè)環(huán)境的基礎(chǔ)上,指導(dǎo)求職者職業(yè)發(fā)展,并最終實(shí)現(xiàn)自身需要與社會(huì)發(fā)展相和諧的就業(yè)觀念.
科學(xué)就業(yè)觀具備以下四個(gè)特征:
首先,科學(xué)就業(yè)觀具有導(dǎo)向性,可以引領(lǐng)大學(xué)生理性地思考個(gè)人的職業(yè)生涯發(fā)展,從而自我激勵(lì),發(fā)揮主觀能動(dòng)性,有意識(shí)地發(fā)展自己.
其次,科學(xué)就業(yè)觀具有目的性,是一種目標(biāo)和歸宿,可以使大學(xué)生理性擇業(yè),實(shí)現(xiàn)自我與社會(huì)的和諧發(fā)展.
第三,科學(xué)就業(yè)觀具有過程性,是一個(gè)潛移默化的形成過程,需要經(jīng)過較長時(shí)間的教育、引導(dǎo)和影響.
第四,科學(xué)就業(yè)觀具有可發(fā)展性,在大學(xué)生職業(yè)生涯發(fā)展的同時(shí)就業(yè)觀也在不斷的發(fā)展和完善.
1.希望是本無所謂有,無所謂無的。這正如地上本沒有路,走的人多了也就成了路。
2.不恥最后。即使慢,馳而不息,縱會(huì)落后,縱會(huì)失敗,但一定可以達(dá)到他所向的目標(biāo)。
3.沒有風(fēng)浪,便沒有勇敢的弄潮兒,沒有荊棘,便沒有不屈的開拓者。
4.言行一致是成功的開拓者。
5.君子謀道不謀食,君子憂道不憂貧。
6.達(dá)則兼濟(jì)天下,窮則獨(dú)善其身。
第一:正確的擇業(yè)觀指的是:世界觀、人生觀、價(jià)值觀、社會(huì)觀。所謂擇業(yè),就是擇業(yè)者根據(jù)自己的職業(yè)理想和能力,從社會(huì)上各種職業(yè)中選擇其中的一種作為自己從事的職業(yè)過程。
第二:職業(yè)是人類在勞動(dòng)過程中的分工現(xiàn)象,它體現(xiàn)的是勞動(dòng)力與勞動(dòng)資料之間的結(jié)合關(guān)系,其實(shí)也體現(xiàn)出勞動(dòng)者之間的關(guān)系,勞動(dòng)產(chǎn)品的交換體現(xiàn)的是不同職業(yè)之間的勞動(dòng)交換關(guān)系。這種勞動(dòng)過程中結(jié)成的人與人的關(guān)系無疑是社會(huì)性的,他們之間的勞動(dòng)交換反映的是不同職業(yè)之間的等價(jià)關(guān)系,這反映了職業(yè)活動(dòng)職業(yè)勞動(dòng)成果的社會(huì)屬性。
個(gè)人因素
個(gè)人因素是指大學(xué)生在進(jìn)行決策時(shí)受到自身內(nèi)部心理特征影響,與自我認(rèn)識(shí)密切相關(guān),包括個(gè)人的興趣、職業(yè)價(jià)值觀、能力等,它們往往是大學(xué)生就業(yè)決策中的主要因素。
家庭因素
大學(xué)生在進(jìn)行就業(yè)決策時(shí)深受家長的影響。就業(yè)決策的前提是專業(yè)的選擇,許多大學(xué)生在高考專業(yè)選擇時(shí)就已經(jīng)服從了家長的意志,而在大學(xué)畢業(yè)進(jìn)行就業(yè)決策時(shí),也同樣會(huì)受到家長意識(shí)的影響,尤其是大學(xué)生在進(jìn)行就業(yè)決策時(shí)會(huì)有意志薄弱和行動(dòng)猶豫的阻力,這時(shí)家庭的作用便會(huì)放大,對(duì)大學(xué)生的就業(yè)決策產(chǎn)生重要影響。
社會(huì)因素
1、工作地域:地區(qū)因素是大學(xué)生就業(yè)決策的一個(gè)重要因素。
2、職業(yè)聲望:大學(xué)生身處校園,并沒有完全地進(jìn)入社會(huì)生活和職業(yè)生活。
3、經(jīng)濟(jì)利益:經(jīng)濟(jì)利益在當(dāng)今大學(xué)生職業(yè)選擇中扮演著愈加重要的角色。
國家因素
從國家的角度來看主要是政治和政策因素的影響。政治制度和氛圍與經(jīng)濟(jì)是相互影響的,政治響到一國的經(jīng)濟(jì)體制,而且影響著企業(yè)的組織體制,從而直接影響到個(gè)人的職業(yè)發(fā)展;政治制度和氛圍還會(huì)潛移默化地影響個(gè)人的追求,從而對(duì)職業(yè)生涯產(chǎn)生影響。
正確有如下幾條:
一、樹立自主擇業(yè)觀。根據(jù)個(gè)人的興趣、專長和條件,自主選擇職業(yè)。
二、 樹立職業(yè)平等觀。各種正當(dāng)職業(yè)的勞動(dòng)者,都是創(chuàng)造財(cái)富所必須的,沒有高低貴賤之分。
三、樹立競(jìng)爭(zhēng)就業(yè)觀。通過勞動(dòng)力市場(chǎng)競(jìng)爭(zhēng),實(shí)現(xiàn)自主擇業(yè)。
四、樹立多種方式就業(yè)觀。如自由職業(yè)、彈性工作、臨時(shí)工、家政服務(wù)等就業(yè)方式可更加靈活地選擇。
.風(fēng)華正茂----風(fēng)華:風(fēng)采、才華;茂:旺盛。正是青春煥發(fā)、風(fēng)采動(dòng)人和才華橫溢的時(shí)候。形容青年朝氣蓬勃、奮發(fā)有為的精神面貌。
2.豆蔻年華----豆蒄:多年生草本植物,比喻處女。指女子十三四歲時(shí)。
3.含苞待放----形容花朵將要開放時(shí)的形態(tài)。也比喻將成年的少女。
4.瓜字初分----舊時(shí)文人拆“瓜”字為兩個(gè)八字以紀(jì)年,即十六歲。多用于女子。
5.花信年華----花信:開花時(shí)期,花期。指女子的年齡到了二十四歲。也泛指女子正處年輕貌美之時(shí)。
6.風(fēng)信年華----指女子二十四歲時(shí)。
7.芳年華月----芳年:妙齡。指美好的年華。
8.后生可畏----后生:年輕人,后輩;畏:敬畏。年輕人是可敬畏的。形容青年人能超過前輩。
9.晚生后學(xué)----泛指學(xué)習(xí)同一技藝或同一學(xué)問的后生晚輩。
10.錦瑟華年----比喻青春時(shí)代
11.小子后生----泛指少年后輩。
12.初生之犢----剛出生的小牛,比喻單純或勇猛的青年人
隨著我國高校的連年擴(kuò)招,每年大學(xué)生畢業(yè)人數(shù)也愈來愈多,大學(xué)生就業(yè)難這一問題已成為我國社會(huì)普遍關(guān)心和有待解決的問題。XX年是高校擴(kuò)招后本科畢業(yè)生的第一年,畢業(yè)人數(shù)比上一年增加了44.6%;XX年畢業(yè)生280萬人,比上一年增長32.1%;XX年畢業(yè)生達(dá)到了338萬人;而XX年年全國普通高校畢業(yè)生達(dá)到五百多萬人,畢業(yè)生人數(shù)再創(chuàng)新高。因此大學(xué)生就業(yè)正面臨著嚴(yán)峻的考驗(yàn)。而大學(xué)生就業(yè)作為大學(xué)生人生一個(gè)重要的關(guān)口,初次就業(yè)和第一份工作對(duì)一個(gè)人一生的影響至關(guān)重要,它直接關(guān)系到一個(gè)人的成才和成長,因此,選擇工作務(wù)必要慎重。
作為一名剛步入社會(huì)的我認(rèn)識(shí)到這一嚴(yán)重的問題后,進(jìn)行調(diào)查。讓我對(duì)目前的就業(yè)形勢(shì)有了一定的了解,以下便是我總結(jié)出來的對(duì)目前大學(xué)生就業(yè)觀的分析。
首先,大學(xué)生在擇業(yè)時(shí)會(huì)考慮報(bào)酬問題。雖然薪水不是大學(xué)生選擇企業(yè)最重要的因素,但是薪水無疑是人們對(duì)一份工作最基本的要求?!胺?500元或3000元不干”,這曾經(jīng)是媒體廣泛報(bào)道的大學(xué)生找工作時(shí)定下的月薪數(shù)。如今,大學(xué)生的就業(yè)壓力一年比一年大,大學(xué)生就業(yè)的工資底線也越來越低,隨著大學(xué)畢業(yè)生薪水的下降,很多用人單位在薪金制度上也有了很大轉(zhuǎn)變:不再以人定薪,而是以崗定薪,更強(qiáng)調(diào)員工為用人單位帶來的實(shí)際利潤。職場(chǎng)中的機(jī)會(huì)永遠(yuǎn)不是遇到的,而是爭(zhēng)取到的。同時(shí)很多大學(xué)生認(rèn)為他所選擇的第一份工作只是作為他今后發(fā)展的一個(gè)過度口,積存經(jīng)驗(yàn)。除了薪酬是學(xué)生考慮的重要因素之外,工作環(huán)境、企業(yè)聲譽(yù)與企業(yè)文化、工作富有挑戰(zhàn)性、工作的穩(wěn)定性、戶口和住房、社會(huì)保障體系等因素也是學(xué)生們重點(diǎn)考慮的因素。
大學(xué)生對(duì)于選擇工作時(shí)因素的看重,與他們認(rèn)為的工作意義是直接相關(guān)的。在大學(xué)生看來,最重要的工作意義是自我實(shí)現(xiàn),其次是生存的必須條件以及個(gè)人興趣所在。而“學(xué)以致用”在找工作中似乎沒有得到太多體現(xiàn)。有很多大學(xué)生對(duì)“專業(yè)對(duì)口”的看法是,找工作盡量專業(yè)對(duì)口,但不必強(qiáng)求”。還有小部分的人認(rèn)為“專業(yè)并不重要,只要工作合適就行”,也就是說有大半的人并不強(qiáng)求專業(yè)要對(duì)口,在工作中發(fā)展自己學(xué)了4年的專業(yè)知識(shí)。而認(rèn)為“應(yīng)該專業(yè)對(duì)口,在工作中發(fā)展自己的專業(yè)知識(shí)”的人只有少數(shù)。經(jīng)常在那里聽到正在找工作的大學(xué)生說,最重要的是能找到工作,混口飯吃,先養(yǎng)活自己。
然而,有很多企業(yè)在人才招聘上,也遇到了不少難題。很多企業(yè)認(rèn)為目前有很多大學(xué)生就業(yè)眼高手低,或者嫌工資低。很多學(xué)生著重選擇國有企業(yè)、大中型企業(yè)、外資企業(yè),而相對(duì)一些中小型企業(yè)情況不是很好,他們認(rèn)為某些大學(xué)生只是抱著學(xué)經(jīng)驗(yàn)的態(tài)度,把小公司作為自己進(jìn)軍大公司的跳板,發(fā)展不長,對(duì)他們公司的長久發(fā)展不利。這也是個(gè)非?,F(xiàn)實(shí)的觀點(diǎn),抱有這種思想的人應(yīng)當(dāng)慎重的考慮。
此外,大部分人都熱衷于名牌企業(yè)或者外企,認(rèn)為比較有面子。其實(shí)我認(rèn)為很多中國本土的中小企業(yè)也很有發(fā)展?jié)摿Γ灰欢ㄒ窒抻谒^的外企,給別的國家的人打工,這樣才更有利于我國的經(jīng)濟(jì)發(fā)展。
之前看了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)換成向量失?。?#34;);
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)練模型失?。?#34;);
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());
}
}