1.你為什么想做銷售工作? 這個(gè)問題對(duì)于工業(yè)專業(yè)出身的人來(lái)說(shuō)有些不好回答,但是更重要的是你的實(shí)習(xí)經(jīng)驗(yàn),公司其實(shí)也沒有必要回到學(xué)校請(qǐng)mba來(lái)做這個(gè)職位。盡量讓你的回答具體,最好用舉例子的方法列舉你以前的成功經(jīng)驗(yàn)。并且讓招聘方認(rèn)為你具有做好這個(gè)工作的潛質(zhì)。
2.你認(rèn)為本身最大的長(zhǎng)處是什么? 這里你需要回答你如何與同伴合作,你是一個(gè)銷售人員,需要有動(dòng)力爆發(fā)力和前進(jìn)的精神。這些都是這個(gè)工作所必不成少的基本技能。如果你有別的方面銷售天賦,那只能說(shuō)你就天生是用來(lái)做銷售的。
3.你認(rèn)為本身最大的弱點(diǎn)是什么? 在這種面試的情況下,請(qǐng)你不要說(shuō)出本身有特別明顯的缺點(diǎn),或者說(shuō)不要說(shuō)出你應(yīng)聘的職位最需要的缺點(diǎn),可以談一些不足,或者本身做不好的一些例子,但是不要因?yàn)橹t虛,讓招聘方認(rèn)為你是一無(wú)可取的。這是最最重要的一點(diǎn)。
4.如何評(píng)價(jià)你本身? 這個(gè)問題是招聘方考察你的個(gè)人表達(dá)能力和認(rèn)識(shí)能力的問題。你可以突出本身的一些優(yōu)點(diǎn),但是不要說(shuō)得過(guò)于直白,同時(shí)要強(qiáng)調(diào)本身的能力比力適合做銷售工作,這里技巧很重要。同時(shí)說(shuō)話要機(jī)智,也可以適當(dāng)加些小幽默,顯示你天生有與人交際的能力,這對(duì)于銷售工作來(lái)說(shuō)是很重要的。
5.你認(rèn)為你具備什么樣的技能適應(yīng)這份工作? 其實(shí)這個(gè)問題和上一個(gè)問題很相似,但是你回答不能雷同,雖然要表達(dá)的可能是同一個(gè)意思,但是決不能一模一樣,要適當(dāng)?shù)挠凶兓?,?lái)表現(xiàn)你的應(yīng)變能力。能應(yīng)付好招聘方的人對(duì)于銷售工作也能做得不錯(cuò)。同時(shí),這也在考查你的耐心,因?yàn)榭赡茴櫩偷囊笠闊┑枚?,多次解釋或者換一個(gè)角度解釋也是必備能力之一。
6.工資對(duì)你有多重要? 不要說(shuō)得很重要,因?yàn)槿绻龅奖厝坏姆蓊~,工資自然會(huì)很高,但是也不要完全不在乎,因?yàn)殇N售是做生意,必然程度上有錢的意識(shí)也是必要的??梢韵葐栆幌鹿究梢蕴峁┑?,本身只要看能否接受就可以,或者說(shuō)適量就可以。
7.請(qǐng)你講一個(gè)好笑的笑話? 這是一個(gè)看似很簡(jiǎn)單的問題,但是你會(huì)發(fā)現(xiàn)關(guān)鍵時(shí)刻能講一個(gè)好笑的笑話也是一件很難的事情。這個(gè)問題,其實(shí)也是在考察你與人交際的能力。良好的客戶意識(shí)和滿足客戶需要的能力,是這個(gè)問題的回答要點(diǎn)。講不達(dá)時(shí)宜的冷笑話和又不好色彩的笑話是這個(gè)問題的大忌,不管它們有多好笑,都會(huì)使他們對(duì)你的品行產(chǎn)生不好的影響。所以千萬(wàn)要小心的講看似輕松的笑話。
8.為什么你對(duì)銷售工作比其他職位更有興趣? 這個(gè)問題需要從兩方面回答。一個(gè)是從銷售本身來(lái)說(shuō),你認(rèn)為它有什么優(yōu)勢(shì)或者令你著迷的地方,你會(huì)專心致志的投入這個(gè)工作,但是切忌不能說(shuō)別的職位就不好,這會(huì)讓招聘方表情步愉快,并且你有可能會(huì)被調(diào)配,所以謂了不喪失工作機(jī)會(huì),要三思而后言。另一個(gè)方面就是你個(gè)人的特點(diǎn),因?yàn)閭€(gè)人能力和興趣,更適合銷售工作,這樣會(huì)給招聘方留下相當(dāng)良好的印象,收到事半功倍的效果。
9.如果每天讓你給客戶突然打銷售電話你會(huì)怎么辦? 沒有人愿意每天給客戶突然打銷售電話,因?yàn)檫@樣收到冷遇的情況很多。
什么瑕疵?這個(gè)瑕疵是因?yàn)闃悠返恼叟f導(dǎo)致的,還是產(chǎn)品本身的問題?如果是產(chǎn)品本身有瑕疵,那你就給客戶介紹另外一款產(chǎn)品沒有瑕疵的產(chǎn)品。做銷售的本質(zhì)是幫客戶解決問題,不是做一錘子買賣。如果是樣品的折舊問題,你告訴客戶,這個(gè)樣品有這個(gè)瑕疵是折舊問題,全新的產(chǎn)品絕對(duì)不會(huì)這樣,你可以在給客戶的收款收據(jù)注明,如果新產(chǎn)品出現(xiàn)這種瑕疵,全額退款,還免費(fèi)送他一個(gè)新的,然后讓他趕緊去交錢。發(fā)貨前自己檢查一次,再拍個(gè)美美的照片給客戶,下次客戶還會(huì)找你
你好!只要遇到這樣的面試,我建議你扭頭就走,原因如下:
1、銷售辨證力是長(zhǎng)期鍛煉的過(guò)程,這個(gè)能力是基于產(chǎn)品功能或服務(wù)價(jià)值的基礎(chǔ),如果太刻意追求這個(gè),只能說(shuō)明這個(gè)企業(yè)的產(chǎn)品很惡心,或者說(shuō)這個(gè)企業(yè)的營(yíng)銷布局很低能!
2、類似風(fēng)格是直接把外國(guó)的思想帶進(jìn)中國(guó)市場(chǎng)的做法,和上面一樣,問題本身缺乏變通,這樣面試出來(lái)的人,能說(shuō)不會(huì)做。銷售思想和銷售實(shí)戰(zhàn)是兩回事。這個(gè)面試官是外行!
3、如果想練練腦子,不防可以從花的主要特征來(lái)反映。不同的花對(duì)應(yīng)不同的群體,花本身反映的是人的修養(yǎng)、心態(tài)、愛好;同時(shí),花也是風(fēng)水?dāng)[件的重要組成部分。
讓面試官先喝了,再問他收錢,不然打死他.反正售500元/瓶和搭劫?zèng)]區(qū)別.先劫個(gè)千百塊,有時(shí)間再劫個(gè)色.
針對(duì)招聘銷售人員,面試者可以根據(jù)所應(yīng)聘的具體職位準(zhǔn)備相應(yīng)的表現(xiàn)題,如:
1. 你何時(shí)開始擔(dān)任銷售工作?
2. 你是如何保持銷售業(yè)績(jī)的?
3. 在客戶提出投訴時(shí),你會(huì)怎么做?
4. 你有何特色服務(wù)和技能?
5. 你在工作中有何不同的拓展方法來(lái)增加銷售業(yè)績(jī)?等等。
首先我們需要了解面試者銷售能力,如果是做過(guò)銷售的人,這個(gè)時(shí)候可以通過(guò)了解他們的過(guò)往業(yè)績(jī),去判斷他們的銷售能力,也能夠從而判斷出是否符合公司需求。銷售的溝通能力、語(yǔ)言能力是不可缺的,HR在面試過(guò)程中,可以多給他們?cè)O(shè)置一些問題,通過(guò)這些問題的回答,可以判斷出這個(gè)面試者的溝通能力。
銷售人員須具備較強(qiáng)的客戶服務(wù)意識(shí)、靈活的溝通技巧、較強(qiáng)的銷售能力和工作積極主動(dòng)等素質(zhì),
1.請(qǐng)舉例說(shuō)明一下你的最好銷售業(yè)績(jī)。
2.你認(rèn)為帶領(lǐng)一個(gè)銷售團(tuán)隊(duì)進(jìn)步的最重要事情是什么?
3.請(qǐng)舉例說(shuō)明什么是有效的客戶渠道?
4.你手機(jī)通訊錄和微信有多少客戶?
5.如果客戶拒絕你的推銷,怎么辦?
6.請(qǐng)說(shuō)說(shuō)五一促銷計(jì)劃如何實(shí)施達(dá)到最佳業(yè)績(jī)?
在如今競(jìng)爭(zhēng)激烈的房地產(chǎn)市場(chǎng),作為一名房產(chǎn)銷售人員,要想在面試中脫穎而出,除了對(duì)于基本的銷售技巧和房地產(chǎn)相關(guān)知識(shí)的掌握外,應(yīng)變能力也是一個(gè)非常重要的因素。在這篇文章中,我們將為您介紹一些常見的房產(chǎn)銷售應(yīng)變類面試題,并給出解答的建議,幫助您在面試中更好地展示自己的能力。
面對(duì)客戶對(duì)于房產(chǎn)價(jià)格的質(zhì)疑,作為銷售人員,我們需要以專業(yè)的態(tài)度和知識(shí)給出合理的解答。首先,我們可以通過(guò)介紹房屋的優(yōu)勢(shì)和價(jià)值來(lái)為價(jià)格辯解,比如房屋的地理位置、社區(qū)配套設(shè)施、裝修品質(zhì)等。同時(shí),我們還可以提供市場(chǎng)的比價(jià)分析,將房屋的價(jià)格與周邊相似房屋的價(jià)格進(jìn)行比較,從而讓客戶更加了解市場(chǎng)行情和房屋的實(shí)際價(jià)值。
在房地產(chǎn)銷售中,客戶對(duì)于房屋環(huán)境的擔(dān)憂是一個(gè)非常常見的問題,作為銷售人員,我們需要給予客戶足夠的信任和安全感。首先,我們可以通過(guò)介紹小區(qū)的環(huán)境、綠化率、周邊設(shè)施等來(lái)消除客戶的顧慮。此外,如果可能的話,我們還可以帶上客戶實(shí)地參觀房屋,讓他們親自感受房屋的環(huán)境和周邊的生活氛圍,進(jìn)一步增強(qiáng)他們的信任和滿意度。
面對(duì)客戶對(duì)于房屋問題的詢問,我們需要坦誠(chéng)以對(duì)并且提供專業(yè)的解決方案。首先,我們可以對(duì)客戶提出的問題進(jìn)行認(rèn)真的分析和研究,明確問題的原因和解決方法。然后,結(jié)合我們自身的經(jīng)驗(yàn)和專業(yè)知識(shí),給出客戶一個(gè)滿意的答復(fù),并且提供解決問題的方案。同時(shí),我們還可以向客戶介紹一些成功的案例,讓他們了解到我們的專業(yè)能力和解決問題的經(jīng)驗(yàn)。
在房產(chǎn)銷售中,客戶情緒的波動(dòng)是一個(gè)非常普遍的現(xiàn)象,作為銷售人員,我們需要以冷靜和耐心的態(tài)度來(lái)應(yīng)對(duì)。首先,我們要做到全程傾聽,讓客戶充分發(fā)泄情緒,同時(shí)保持冷靜和理智。然后,我們需要正確理解客戶的需求和關(guān)注點(diǎn),通過(guò)積極溝通和解釋,幫助他們理性地分析問題,并找到合適的解決方案。最后,我們要給予客戶足夠的關(guān)懷和支持,讓他們感受到我們的誠(chéng)意和真誠(chéng),從而緩解他們的情緒波動(dòng)。
在房地產(chǎn)銷售過(guò)程中,客戶可能會(huì)對(duì)于簽訂合同有所猶豫,這時(shí)作為銷售人員,我們需要引導(dǎo)客戶做出決策。首先,我們可以針對(duì)客戶的疑慮和擔(dān)憂進(jìn)行解答,讓他們了解到簽訂合同的重要性和優(yōu)勢(shì)。同時(shí),我們還可以提供一些相關(guān)的證據(jù)和數(shù)據(jù),讓客戶明確房屋的價(jià)值和潛在的收益。此外,我們還可以引用一些客戶的成功案例,讓他們看到簽訂合同的好處和成功的可能性,從而鼓勵(lì)他們做出決策。
房產(chǎn)銷售應(yīng)變類面試題是一個(gè)考驗(yàn)銷售人員綜合能力的重要環(huán)節(jié)。在面試中,我們需要展現(xiàn)出自己的專業(yè)知識(shí)和銷售技巧,同時(shí)也要體現(xiàn)出自己良好的應(yīng)變能力和溝通能力。通過(guò)合理的解答和有效的溝通,我們可以給面試官留下深刻的印象并提高自己的競(jìng)爭(zhēng)力。希望以上內(nèi)容對(duì)于您在房產(chǎn)銷售面試中有所幫助。
我覺得銷售是一個(gè)可以鍛煉人的工作,可以把自己的優(yōu)勢(shì)充分發(fā)揮出來(lái),很有挑戰(zhàn)的工作,銷售可以幫公司以及自己實(shí)現(xiàn)人生目標(biāo)的價(jià)值,為公司直接帶來(lái)經(jīng)濟(jì)利益,也為我?guī)?lái)對(duì)等的回報(bào),現(xiàn)在銷售行業(yè)競(jìng)爭(zhēng)激烈,現(xiàn)在做銷售也是在做服務(wù),服務(wù)做好了就有了人脈,人脈才是銷售的關(guān)鍵!所以,做銷售一定要先學(xué)會(huì)做人,只有這樣才能是一個(gè)成功的銷售!有前途的銷售!
之前看了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)行分類。
接下來(lái)貼下我的代碼實(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)行分類。
這三步,代碼我就一次全貼出來(lái);主要是兩個(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());
}
}