多媒體編輯需要掌握采、編、播等各種媒體應(yīng)用,而網(wǎng)編則只需掌握一兩個(gè)技能就能工作。
媒體記者編輯面試題一直是備受關(guān)注的話題,無論是從媒體行業(yè)內(nèi)部還是外部,對于這一崗位的面試一直備受關(guān)注。媒體記者編輯是一項(xiàng)高度專業(yè)性的工作,需要具備扎實(shí)的寫作能力、豐富的新聞敏感度以及較強(qiáng)的溝通能力和團(tuán)隊(duì)合作精神。在這篇文章中,我們將討論一些常見的媒體記者編輯面試題,幫助準(zhǔn)備應(yīng)聘者更好地準(zhǔn)備面試。
這是一道常見的開放性問題,通過應(yīng)聘者的回答可以了解其對媒體記者編輯這一職業(yè)的認(rèn)知程度以及個(gè)人背景情況。應(yīng)聘者可以從自己的教育經(jīng)歷、工作經(jīng)驗(yàn)和興趣愛好等方面進(jìn)行介紹,同時(shí)要突出自己對新聞行業(yè)的熱愛和認(rèn)識。
一個(gè)優(yōu)秀的媒體記者編輯應(yīng)該具備較強(qiáng)的寫作能力、極高的新聞敏感度、良好的溝通能力和卓越的團(tuán)隊(duì)合作精神。此外,他們還應(yīng)該具備廣泛的知識面、快速學(xué)習(xí)的能力和扎實(shí)的調(diào)研技巧,能夠迅速準(zhǔn)確地獲取信息并撰寫出高質(zhì)量的新聞稿件。
在處理新聞報(bào)道時(shí),最重要的原則是客觀、公正、真實(shí)和準(zhǔn)確。媒體記者編輯在進(jìn)行報(bào)道時(shí)應(yīng)該堅(jiān)守事實(shí)真相,避免主觀色彩和誤導(dǎo)性言論,確保新聞報(bào)道的公正性和客觀性,以此來維護(hù)新聞傳播的專業(yè)性和道德規(guī)范。
新聞報(bào)道的公信力是通過媒體的信譽(yù)、報(bào)道的準(zhǔn)確性和客觀性來建立和維護(hù)的。媒體記者編輯應(yīng)該保持敬業(yè)精神,嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度和高質(zhì)量的編輯能力,嚴(yán)格遵守報(bào)道規(guī)范和職業(yè)倫理,確保新聞報(bào)道的真實(shí)可信,從而贏得公眾的信任和尊重。
應(yīng)聘者可以通過舉例說明自己在以往工作中遇到的一些困難新聞報(bào)道,如何應(yīng)對和處理這些挑戰(zhàn),以及最終取得的成果。能夠展示自己的應(yīng)變能力、解決問題的能力和團(tuán)隊(duì)合作精神,讓面試官對自己的能力有更深入的了解。
在當(dāng)今數(shù)字化時(shí)代,新聞行業(yè)也隨之發(fā)生了翻天覆地的變化。全媒體編輯記者面試題正日益受到關(guān)注,成為評判一個(gè)求職者是否具備綜合能力和專業(yè)素養(yǎng)的重要標(biāo)準(zhǔn)。全媒體編輯記者面試題不僅考察了應(yīng)聘者對新聞行業(yè)的了解程度,還能夠測試其在數(shù)字化媒體環(huán)境下的適應(yīng)能力。
一般情況下,全媒體編輯記者面試題可以分為多個(gè)方面,包括但不限于:
下面是一些常見的全媒體編輯記者面試題示例,供應(yīng)聘者參考:
通過以上的例題,應(yīng)聘者不僅可以準(zhǔn)備充分應(yīng)對全媒體編輯記者面試,還能夠在面試中展現(xiàn)出自己的優(yōu)勢和特長,從而提升成功的機(jī)會。
在當(dāng)今新聞業(yè)競爭激烈的環(huán)境下,全媒體編輯記者的角色變得愈發(fā)關(guān)鍵。他們不僅需要具備傳統(tǒng)編輯記者的專業(yè)素養(yǎng),還需要具備數(shù)字化媒體操作能力和創(chuàng)新思維。因此,全媒體編輯記者面試成為了雇主篩選優(yōu)秀人才的重要環(huán)節(jié)。
通過全媒體編輯記者面試,能夠有效評估應(yīng)聘者的綜合能力和專業(yè)素養(yǎng),篩選出最適合數(shù)字化媒體環(huán)境的人才。同時(shí),對于應(yīng)聘者而言,通過面試也能夠更加深入地了解未來工作的挑戰(zhàn)和機(jī)遇,為自己的職業(yè)發(fā)展做好準(zhǔn)備。
因此,全媒體編輯記者面試不僅僅是一次簡單的面試過程,更是一次雙向選擇的機(jī)會,能夠讓企業(yè)找到最適合自己的人才,也能讓應(yīng)聘者找到最適合自己發(fā)展的平臺。
全媒體編輯記者面試題的重要性不言而喻,它代表了一個(gè)人在新聞行業(yè)中的未來發(fā)展?jié)摿蜋C(jī)會。應(yīng)聘者應(yīng)當(dāng)充分準(zhǔn)備,展現(xiàn)出自己的專業(yè)素養(yǎng)和優(yōu)勢,從而在激烈的競爭中脫穎而出,贏得理想的工作機(jī)會。
全媒體記者編輯面試題
在當(dāng)今數(shù)字化時(shí)代,全媒體記者編輯扮演著至關(guān)重要的角色,他們負(fù)責(zé)撰寫新聞內(nèi)容、編輯視頻素材、管理社交媒體賬號等諸多任務(wù)。由于這一職業(yè)的多樣性和挑戰(zhàn)性,面試成為了評估候選人能力和技能的重要環(huán)節(jié)。
在回答這些面試題時(shí),記得突出你的獨(dú)特經(jīng)驗(yàn)和技能,強(qiáng)調(diào)與全媒體工作相關(guān)的成就和挑戰(zhàn)。同時(shí),展現(xiàn)你對新聞行業(yè)發(fā)展的理解和對未來發(fā)展的思考,這將給面試官留下深刻印象。
全媒體記者編輯是一個(gè)需要綜合能力的職業(yè),不僅需要具備新聞敏感性和寫作能力,還需要熟悉多種數(shù)字工具和社交媒體平臺。通過準(zhǔn)備和思考上述面試題,可以幫助你更好地展現(xiàn)自己的優(yōu)勢,贏得心儀工作的機(jī)會。
融媒體編輯記者面試題是許多求職者在進(jìn)入媒體行業(yè)時(shí)都會面對的挑戰(zhàn)性考驗(yàn)。在競爭激烈的行業(yè)當(dāng)中,如何應(yīng)對這些面試題目,展現(xiàn)自己的專業(yè)素養(yǎng)和能力,成為每位求職者都需要認(rèn)真準(zhǔn)備的重要環(huán)節(jié)。
對于這個(gè)問題,應(yīng)聘者可以從融媒體編輯的定義、工作內(nèi)容、以及自身在相關(guān)領(lǐng)域的經(jīng)驗(yàn)等方面入手,展現(xiàn)自己對于這個(gè)職位的熟悉程度和自信心。
這個(gè)問題可以考察應(yīng)聘者對于新聞敏感度和策劃能力。可以結(jié)合實(shí)際案例,闡述自己在發(fā)掘新聞價(jià)值、策劃內(nèi)容方面的經(jīng)驗(yàn)和理念,展示自己的專業(yè)素養(yǎng)。
這個(gè)問題考察了應(yīng)聘者的工作效率和應(yīng)變能力。可以結(jié)合時(shí)間管理方法、工作優(yōu)先級的設(shè)定以及應(yīng)對多任務(wù)處理的經(jīng)驗(yàn),展示自己面對挑戰(zhàn)時(shí)的沉著與應(yīng)對能力。
應(yīng)聘者可以結(jié)合具體案例,描述自己在采訪過程中遇到的困難,以及如何應(yīng)對和解決這些挑戰(zhàn),展現(xiàn)自己的應(yīng)變能力和處理問題的能力。
這個(gè)問題考察了應(yīng)聘者對于行業(yè)未來發(fā)展的了解和思考。應(yīng)聘者可以從內(nèi)容營銷和媒體融合的發(fā)展趨勢、自身在這個(gè)領(lǐng)域的實(shí)踐經(jīng)驗(yàn)以及融媒體編輯在其中的作用等方面入手,展示自己對行業(yè)發(fā)展的洞察力和前瞻性。
在應(yīng)對融媒體編輯記者面試題時(shí),應(yīng)聘者需要充分準(zhǔn)備,結(jié)合自身的經(jīng)驗(yàn)和能力,展示出對職位的理解與熱情,同時(shí)展現(xiàn)出自己的專業(yè)素養(yǎng)和應(yīng)變能力。通過深入思考和實(shí)際案例的舉證,可以讓面試官更好地了解應(yīng)聘者的能力和潛力,從而增加成功應(yīng)聘的機(jī)會。
這個(gè)是第一屏控制軟件,打開軟件,先要設(shè)置參數(shù),然后就可以使用了
對,都是文本編輯器。為過后者的功能更強(qiáng)大。打開一個(gè)3M大小的TXT格式小說,用記事本需要幾秒10來秒鐘,而寫字板幾乎是瞬間;打開后,把主角的名字全部替換成別的,用記事本會造成系統(tǒng)假死,CPU差不多100%,而且N分鐘后都沒有完成。而寫字板里面同樣的操作卻是秒秒鐘就搞定了。“寫字板”是一個(gè)使用簡單,但卻功能強(qiáng)大的文字處理程序,用戶可以利用它進(jìn)行日常工作中文件的編輯。
它不僅可以進(jìn)行中英文文檔的編輯,而且還可以圖文混排,插入圖片、聲音、視頻剪輯等多媒體資料。
記事本用于純文本文檔的編輯,功能沒有寫字板強(qiáng)大,適于編寫一些篇幅短小的文件,由于它使用方便、快捷,應(yīng)用也是比較多的,比如一些程序的README文件通常是以記事本的形式打開的。
如何做好一個(gè)新媒體編輯,其實(shí)熱點(diǎn)時(shí)事的敏感度和文章的質(zhì)量都很重要,因?yàn)橹挥形恼碌拈喿x量上來了,粉絲漲了,你運(yùn)營的公眾號才能賺錢。現(xiàn)在很多人會選擇用一些公眾號輔助工具,來幫助公眾號運(yùn)營。我親測過幾個(gè),感覺總體來說西瓜助手會相對好一些,素材也會比較多,還能根據(jù)公眾號定位推薦專享素材,這是我比較喜歡地方。
如今,多媒體在我們的生活中扮演著越來越重要的角色。我們希望能夠觀看高清視頻、收聽高音質(zhì)音樂,并且具備強(qiáng)大的編輯功能,以滿足自身的個(gè)性化需求。PE影音軟件正是以這樣的目標(biāo)而誕生,為用戶提供了一站式解決方案,讓您暢享高品質(zhì)的多媒體體驗(yàn)。
PE影音軟件憑借其卓越的性能和出色的功能一直備受用戶喜愛。無論是從播放質(zhì)量還是編輯功能方面來看,PE影音軟件都能輕松滿足您的要求。
PE影音軟件提供了強(qiáng)大的多媒體播放功能,兼容幾乎所有常見的音視頻格式。不管是高清視頻還是無損音頻,PE影音軟件都能以出色的畫質(zhì)和音質(zhì)呈現(xiàn),帶給您身臨其境的觀影和音樂體驗(yàn)。
此外,PE影音軟件還支持4K、8K超高清內(nèi)容播放,讓您可以盡情享受細(xì)膩逼真的影像效果。無論是在家中的大屏幕電視上,還是在移動設(shè)備上觀看,PE影音軟件都能為您呈現(xiàn)最優(yōu)質(zhì)的多媒體內(nèi)容。
PE影音軟件不僅提供了卓越的播放功能,還擁有強(qiáng)大的編輯能力,讓您能夠定制化您的多媒體作品。您可以剪輯視頻、調(diào)整畫面效果、添加字幕和特效,以及調(diào)音等等。不論您是專業(yè)的視頻制作人員還是普通用戶,PE影音軟件都能滿足您的編輯需求。
除此之外,PE影音軟件還提供了豐富的音頻特效,如均衡器、混響和時(shí)鐘等功能,以及視頻特效,如馬賽克、顛倒和快慢放等。這些功能的存在,使得您的多媒體作品更加生動豐富,充滿個(gè)性。
除了強(qiáng)大的功能,PE影音軟件還注重用戶體驗(yàn),通過簡潔直觀的界面設(shè)計(jì)和易于操作的功能布局,讓用戶能夠輕松上手。無論您是初學(xué)者還是資深用戶,都能夠快速上手使用PE影音軟件,并發(fā)揮其最大潛力。
此外,PE影音軟件還提供了多語言界面選擇,以滿足用戶的地域和語言需求。無論您身在何處,PE影音軟件都能夠?yàn)槟峁┦孢m的使用體驗(yàn)。
PE影音軟件通過其出色的多媒體播放和編輯功能,為用戶提供了全方位、高品質(zhì)的多媒體體驗(yàn)。不論您是追求高清視頻、高音質(zhì)音頻,還是希望將多媒體作品進(jìn)行個(gè)性化定制,PE影音軟件都能滿足您的需求。它的用戶友好界面和操作方式,使得使用起來更加簡單快捷。無論是聆聽音樂還是觀看視頻,PE影音軟件都將給您帶來非凡的享受。
感謝您閱讀本文,希望通過本文您能夠了解到PE影音軟件所提供的優(yōu)異功能和特點(diǎn),并且能夠?yàn)槟亩嗝襟w體驗(yà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());
}
}