品牌策劃主管的面試題
作為一名品牌策劃主管,擁有豐富的經(jīng)驗(yàn)和專業(yè)知識(shí)是非常重要的。而一個(gè)成功的面試就是展示自己在這個(gè)領(lǐng)域的能力和潛力的機(jī)會(huì)。那么,在面試過(guò)程中,應(yīng)該準(zhǔn)備哪些問(wèn)題呢?本篇博客將介紹一些常見(jiàn)的品牌策劃主管面試題,幫助您更好地準(zhǔn)備和應(yīng)對(duì)面試。
作為一個(gè)品牌策劃主管,您需要展示自己在這個(gè)領(lǐng)域的專業(yè)能力和經(jīng)驗(yàn)。回答這個(gè)問(wèn)題時(shí),可以從自己的學(xué)歷、工作經(jīng)歷和專業(yè)技能等方面進(jìn)行介紹。強(qiáng)調(diào)自己在品牌定位、市場(chǎng)調(diào)研、品牌推廣等方面的能力,并結(jié)合具體案例進(jìn)行說(shuō)明。
市場(chǎng)調(diào)研是品牌策劃的重要環(huán)節(jié),如何進(jìn)行有效的市場(chǎng)調(diào)研對(duì)于制定品牌策略至關(guān)重要。在回答這個(gè)問(wèn)題時(shí),可以介紹自己的市場(chǎng)調(diào)研方法和工具。可以提及一些常用的市場(chǎng)調(diào)研手段,如問(wèn)卷調(diào)查、訪談、競(jìng)爭(zhēng)對(duì)手分析等,并強(qiáng)調(diào)自己如何從中獲取有價(jià)值的信息來(lái)指導(dǎo)品牌策劃工作。
品牌推廣是品牌策劃主管工作中的核心任務(wù)之一。在回答這個(gè)問(wèn)題時(shí),可以分享自己在品牌推廣方面的具體經(jīng)驗(yàn)。可以提及自己參與過(guò)的品牌推廣活動(dòng)和項(xiàng)目,以及通過(guò)什么方式和渠道進(jìn)行推廣。可以著重強(qiáng)調(diào)自己的創(chuàng)新能力、溝通能力和團(tuán)隊(duì)協(xié)作能力,以及在推廣過(guò)程中所取得的成果。
品牌定位和策略規(guī)劃是品牌策劃主管的核心工作之一。在回答這個(gè)問(wèn)題時(shí),可以闡述自己的品牌定位和策略規(guī)劃的方法和思路。可以提及自己對(duì)目標(biāo)市場(chǎng)的深入了解和分析,以及如何針對(duì)不同市場(chǎng)制定相應(yīng)的品牌定位和策略。同時(shí),可以分享一些成功的品牌定位案例,并解釋其背后的原理和策略。
在品牌策劃的過(guò)程中,可能會(huì)面臨各種挑戰(zhàn),如市場(chǎng)變化、競(jìng)爭(zhēng)激烈等。在回答這個(gè)問(wèn)題時(shí),可以強(qiáng)調(diào)自己的應(yīng)變能力和解決問(wèn)題的能力。可以分享一個(gè)具體的挑戰(zhàn)案例,以及自己是如何應(yīng)對(duì)并取得成功的。同時(shí),可以提及一些自己在工作中遇到的常見(jiàn)挑戰(zhàn),并分享一些解決方法。
作為品牌策劃主管,有很多重要的能力,如創(chuàng)新能力、領(lǐng)導(dǎo)力、溝通能力等。在回答這個(gè)問(wèn)題時(shí),可以根據(jù)自己的實(shí)際情況進(jìn)行回答。可以強(qiáng)調(diào)自己的領(lǐng)導(dǎo)能力和團(tuán)隊(duì)管理能力,并結(jié)合具體案例進(jìn)行說(shuō)明。同時(shí),可以提及自己在品牌策劃工作中所積累的其他重要能力,如市場(chǎng)分析能力、項(xiàng)目管理能力等。
品牌策劃是一個(gè)不斷發(fā)展和變化的領(lǐng)域,了解未來(lái)的發(fā)展趨勢(shì)對(duì)于品牌策劃主管來(lái)說(shuō)非常重要。在回答這個(gè)問(wèn)題時(shí),可以分享自己對(duì)未來(lái)品牌策劃的一些看法和觀點(diǎn)。可以談?wù)摦?dāng)前的熱點(diǎn)話題和趨勢(shì),如數(shù)據(jù)驅(qū)動(dòng)的品牌策劃、數(shù)字化營(yíng)銷等,并分享自己對(duì)于這些趨勢(shì)的理解和應(yīng)對(duì)方法。
面試過(guò)程中,準(zhǔn)備好針對(duì)品牌策劃主管職位的面試題是非常重要的。希望本篇博客介紹的常見(jiàn)問(wèn)題和相關(guān)回答可以幫助您更好地準(zhǔn)備和應(yīng)對(duì)面試。祝您面試成功!
就是針對(duì)產(chǎn)品主管的面試題目,一般會(huì)涉及產(chǎn)品營(yíng)銷策略、產(chǎn)品屬性等問(wèn)題。
質(zhì)檢主管是企業(yè)中負(fù)責(zé)管理和指導(dǎo)質(zhì)檢工作的重要職位之一。以下是質(zhì)檢主管的崗位職責(zé)和可能會(huì)被問(wèn)到的面試題:
崗位職責(zé):
1. 負(fù)責(zé)制定和執(zhí)行企業(yè)的質(zhì)量管理體系;
2. 負(fù)責(zé)制定和實(shí)施質(zhì)量控制標(biāo)準(zhǔn)和流程;
3. 管理和指導(dǎo)質(zhì)檢員的工作,確保質(zhì)檢工作的準(zhǔn)確性和高效性;
4. 負(fù)責(zé)質(zhì)量問(wèn)題的處理和解決;
5. 負(fù)責(zé)統(tǒng)計(jì)和分析質(zhì)量數(shù)據(jù),提出改進(jìn)建議;
6. 協(xié)調(diào)各部門之間的質(zhì)量管理工作,確保產(chǎn)品或服務(wù)的質(zhì)量符合企業(yè)要求。
面試題:
1. 你是如何管理和指導(dǎo)質(zhì)檢員的工作的?
2. 你如何處理和解決質(zhì)量問(wèn)題?
3. 你如何制定和實(shí)施質(zhì)量控制標(biāo)準(zhǔn)和流程?
4. 你如何統(tǒng)計(jì)和分析質(zhì)量數(shù)據(jù),提出改進(jìn)建議?
5. 你如何協(xié)調(diào)各部門之間的質(zhì)量管理工作?
6. 你對(duì)質(zhì)量管理體系有哪些了解?你如何制定和執(zhí)行企業(yè)的質(zhì)量管理體系?
7. 你如何保證質(zhì)檢工作的準(zhǔn)確性和高效性?
8. 你在質(zhì)檢工作中遇到過(guò)哪些困難,你是如何解決的?
9. 你如何提高質(zhì)檢員的工作效率和質(zhì)量?
10. 你對(duì)質(zhì)檢工作中的技術(shù)和方法有哪些了解?
銀行運(yùn)營(yíng)主管面試題目
面試是每個(gè)求職者都必須面對(duì)的一道關(guān)卡。特別是對(duì)于那些渴望在銀行業(yè)務(wù)領(lǐng)域發(fā)展的人來(lái)說(shuō),他們需要通過(guò)面試向面試官展示自己的能力和潛力。
本文將為您提供一些針對(duì)銀行運(yùn)營(yíng)主管職位的面試題目,幫助您在面試過(guò)程中更好地準(zhǔn)備和展示自己的專業(yè)知識(shí)和技能。
這個(gè)問(wèn)題旨在了解您是否具備豐富的銀行運(yùn)營(yíng)經(jīng)驗(yàn)以及您對(duì)銀行業(yè)務(wù)的了解程度。在回答該問(wèn)題時(shí),您可以提及您過(guò)去的工作經(jīng)歷,以及在銀行運(yùn)營(yíng)方面取得的成功。
作為一名銀行運(yùn)營(yíng)主管,您將負(fù)責(zé)管理團(tuán)隊(duì),確保他們的工作高效順利。在回答這個(gè)問(wèn)題時(shí),您可以強(qiáng)調(diào)您的領(lǐng)導(dǎo)能力、溝通技巧、以及如何激勵(lì)團(tuán)隊(duì)成員以達(dá)到共同的目標(biāo)。
這個(gè)問(wèn)題旨在了解您如何發(fā)現(xiàn)并解決銀行運(yùn)營(yíng)過(guò)程中的問(wèn)題以提高效率。您可以提及您之前所采取的方法和措施,以及最終取得的成果。
作為銀行運(yùn)營(yíng)主管,處理客戶投訴是必不可少的工作之一。在回答該問(wèn)題時(shí),您可以提到您曾面對(duì)的具體情況,以及您處理客戶投訴的步驟和策略。
銀行業(yè)務(wù)需要嚴(yán)格遵守各類法規(guī)和合規(guī)要求。在回答這個(gè)問(wèn)題時(shí),您可以強(qiáng)調(diào)您對(duì)相關(guān)法規(guī)的了解,以及您如何確保銀行運(yùn)營(yíng)的合規(guī)性。
在工作中,緊急情況和突發(fā)事件可能經(jīng)常發(fā)生。在回答該問(wèn)題時(shí),您可以提到您過(guò)去面對(duì)的具體情況,以及您如何應(yīng)對(duì)和解決問(wèn)題的能力。
作為一名銀行運(yùn)營(yíng)主管,領(lǐng)導(dǎo)能力和技能是非常重要的。在回答該問(wèn)題時(shí),您可以提到您的決策能力、人際關(guān)系技巧、以及如何組織和協(xié)調(diào)團(tuán)隊(duì)的能力。
這個(gè)問(wèn)題旨在了解您在過(guò)去的項(xiàng)目中的角色和成就。在回答該問(wèn)題時(shí),您可以提到您參與的具體項(xiàng)目,以及您在項(xiàng)目中所扮演的角色以及您的貢獻(xiàn)。
這個(gè)問(wèn)題旨在了解您對(duì)銀行業(yè)務(wù)的發(fā)展趨勢(shì)和前景的了解程度。在回答該問(wèn)題時(shí),您可以提到您對(duì)行業(yè)的觀察和分析,以及您對(duì)未來(lái)發(fā)展的看法。
銀行運(yùn)營(yíng)主管面試是一個(gè)展示您專業(yè)知識(shí)和技能的機(jī)會(huì)。通過(guò)準(zhǔn)備和回答以上問(wèn)題,您可以向面試官展示您在銀行運(yùn)營(yíng)方面的經(jīng)驗(yàn)和能力。此外,在面試中展示良好的溝通能力和積極的態(tài)度也是非常重要的。
希望本文能夠幫助您更好地準(zhǔn)備銀行運(yùn)營(yíng)主管面試,取得成功!祝您好運(yùn)!
儲(chǔ)備主管就是后備的隊(duì)伍中一員,表現(xiàn)好,且主管崗位有空缺時(shí),考慮從后備隊(duì)伍中選擇上崗。比起一般員工,顯然屬于重點(diǎn)培養(yǎng)對(duì)象,有意識(shí)培養(yǎng)管理方面的。但也引入競(jìng)爭(zhēng),后備干部中表現(xiàn)不佳的,自然就淘汰了。其實(shí)這是一種激勵(lì)員工向上的一種手段而已。待遇自然是優(yōu)于一般員工,低于主管。
1、分工不同
主管負(fù)責(zé)管理,專職管理一項(xiàng)工作或事務(wù),主要用于經(jīng)濟(jì)組織(企業(yè))。分管是按照分工的原則對(duì)某一領(lǐng)域的工作進(jìn)行管理,并負(fù)責(zé)管理。
2、不同的職業(yè)需求
一個(gè)部門最多有一個(gè)領(lǐng)導(dǎo)負(fù)責(zé)。最多只有一個(gè)領(lǐng)導(dǎo)負(fù)責(zé)。一個(gè)部門可以有一個(gè)或多個(gè)助理領(lǐng)導(dǎo)。
職責(zé)分工:按分工負(fù)責(zé)管理。比如,沈宇是紀(jì)委書記,分管黨風(fēng)廉政建設(shè),分管領(lǐng)導(dǎo)。作為紀(jì)委副書記,黃志剛是分管領(lǐng)導(dǎo)。即負(fù)責(zé)黨風(fēng)廉政建設(shè)各項(xiàng)任務(wù)的具體落實(shí)。
主管:這個(gè)動(dòng)詞的意思是“管理”。這個(gè)名字是“負(fù)責(zé)某些特殊事務(wù)的官員;管家”。比如說(shuō),舒忠生是分管財(cái)務(wù)和物流的副手。
3、范圍有所不同
主任主要負(fù)責(zé)大型事務(wù),而管理范圍相對(duì)較小。
1、考試云題庫(kù)支持按知識(shí)點(diǎn)進(jìn)行分類,支持多級(jí)樹(shù)狀子分類;支持批量修改、刪除、導(dǎo)出。支持可視化添加試題,支持Word、Excel、TXT模板批量導(dǎo)入試題。有單選題、多選題、不定項(xiàng)選擇題、填空題、判斷題、問(wèn)答題六種基本題型,還可以變通設(shè)置復(fù)雜組合題型,如材料題、完型填空、閱讀理解、聽(tīng)力、視頻等題型。
面試中被問(wèn)到抗壓力的問(wèn)題時(shí),可以針對(duì)以下問(wèn)題進(jìn)行回答:
1. 你對(duì)壓力的看法是什么?你認(rèn)為良好的壓力管理對(duì)于工作與生活的重要性是什么?
2. 你曾經(jīng)遇到過(guò)最大的壓力是什么?你是如何處理的?取得了什么成果?
3. 你如何預(yù)防壓力的堆積?平時(shí)都有哪些方法舒緩壓力?
4. 你在工作中是如何處理緊急事件的?在緊急事件發(fā)生時(shí),你又是如何平靜處理的?
5. 當(dāng)你感到應(yīng)對(duì)不了困難時(shí),你是如何處理自己的情緒的?是否有過(guò)跟同事或領(lǐng)導(dǎo)尋求幫助的經(jīng)驗(yàn)?
以上問(wèn)題的回答需要切實(shí)體現(xiàn)出應(yīng)聘者的應(yīng)對(duì)壓力的能力、態(tài)度和方法。需要注意的是,壓力是一種正常的工作與生活狀態(tài),壓力管理不是要消除壓力,而是要學(xué)會(huì)合理地面對(duì)與處理壓力,以達(dá)到更好的工作和生活效果。
應(yīng)該是校醫(yī)的工作范疇,急救處理,傳染病知識(shí)和健康教育,除專業(yè)知識(shí)外還會(huì)問(wèn)一些開(kāi)放性的題目,好好準(zhǔ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
檢測(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);
}
// 利用貝葉斯算法開(kāi)始分類,并提取得分最好的分類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());
}
}