船舶安检员

时间:2024-08-18 13:22 人气:0 编辑:招聘街

一、船舶安检员

船舶安检员的重要性与责任

船舶安检员是船舶安全管理体系中至关重要的一环,在保障船舶安全和顺利航行方面发挥着不可替代的作用。船舶安检员要求具备丰富的船舶安全知识和严谨的工作态度,以确保船舶及其船员的安全。

船舶安检员的责任包括但不限于:

  • 检查船舶设备和系统的运行状况,确保其符合安全要求;
  • 监督船员进行安全操作,规范行为,避免事故发生;
  • 应对突发事件,保障船员生命安全和船舶财产安全;
  • 配合船舶管理团队进行安全演习和应急预案的制定;
  • 定期检查船舶安全设备和消防设施的完好性和有效性。

船舶安检员的技能要求

为胜任船舶安检员这一职位,专业知识、技能和素养都至关重要。以下是船舶安检员需要具备的技能要求:

  1. 熟悉船舶安全管理规定,具备相关证书和执业资格;
  2. 具备良好的沟通能力和应变能力,能够处理突发事件;
  3. 具备较强的组织协调能力和团队合作精神;
  4. 具备较强的学习能力和问题解决能力;
  5. 具备全面的船舶安全知识和实践经验。

船舶安检员的职业发展路径

船舶安检员这一职业有着明确的晋升和发展通道,具体包括但不限于:

  1. 培训成为高级船舶安检员,负责更复杂的安全管理工作;
  2. 参与船舶安全管理体系的建设和完善,担任管理层职位;
  3. 成为船舶安检员培训师,传授经验和知识;
  4. 在国际船舶安全领域积累经验,担任国际船舶安全顾问等职务。

船舶安检员这一职业在全球范围内具有广阔的发展前景,对于有志于从事船舶安全管理工作的人来说,是一个充满挑战和机遇的职业。

结语

船舶安检员作为船舶安全管理中不可或缺的一环,其重要性不可低估。只有具备优秀的技能和专业知识,才能胜任这一职位,确保船舶和船员的安全。随着全球航运行业的发展和安全意识的提高,船舶安检员的职业前景将更加广阔,也为行业提供了更多的发展空间和机遇。

二、谁知道重庆轨道交通公司安检员的工资及待遇如何?

工资很低,待遇很差,不要来了,我就是这个公司的员工,不怕打击你,安检员和站务员应该算是最低的

三、机场安检员工资

机场安检员工资:专业与责任并重的职业收入

机场安检员是承担着重要任务的职业,他们不仅要确保机场的安全,还要确保旅客的顺利通行。机场安检员的工作要求严格,但这份工作也为他们提供了一个相对稳定和可观的收入。

机场安检员的工资是根据多个因素来确定的,包括地理位置、工作经验和职位。以下是关于机场安检员工资的一些相关信息。

地理位置

机场安检员的工资在不同地区可能会有所不同。通常来说,发达地区的工资较高,因为成本生活相对较高,而经济欠发达地区的工资可能相对较低。所以,如果你在经济发达的大城市工作,你的工资可能会比在小城市或偏远地区的同行更高。

此外,国家的经济状况也会影响到机场安检员的工资水平。一些国家可能会提供较高的薪水,以吸引和留住有才能的安检员。

工作经验

机场安检员的工作经验对他们的工资水平也有很大的影响。通常来说,有更多经验的安检员可以期望获得更高的薪水。这是因为他们在工作中积累了更多的技能和知识,并能够更好地应对各种安全挑战。

一些机场安检部门也可能会提供一些额外的激励措施,以鼓励安检员继续提升自己的技能和知识。这些额外的激励可以包括提供培训机会、晋升机会和奖金制度。

职位

机场安检员的职位也会对他们的工资有所影响。在这个行业中,安检员的职位分为不同的级别,包括初级安检员、高级安检员和主管。通常来说,随着职位级别的提升,安检员的工资也会相应增加。

更高级别的职位通常要求更多的责任和技能,因此雇主会给予更高的薪水作为回报。

其他福利待遇

除了基本工资外,机场安检员还可能享受其他福利待遇。这些福利待遇可以包括医疗保险、养老金、带薪休假等。这些福利可以为安检员提供额外的收入和保障。

此外,机场安检员在工作过程中可能会获得一些额外的津贴或津贴,以应对特殊的工作要求或工作时间。这些额外津贴可以帮助安检员获得更高的总收入。

总结

机场安检员是一个要求专业和责任心的职业,他们的工资水平在地理位置、工作经验和职位等多个因素的影响下确定。虽然工资有一定的差异,但机场安检员的工资一般都是相对稳定和可观的。

如果你对航空业和安全工作感兴趣,并且愿意为保护乘客和机场安全做出贡献,那么成为一名机场安检员可能是一个不错的职业选择。

四、黄花机场安检员

黄花机场安检员的工作职责和技能要求

黄花机场作为一个繁忙的国际机场,拥有庞大的旅客流量。安全是机场工作的首要任务,而安检员作为机场安全的第一道防线,承担着重要的工作职责。本文将为大家介绍黄花机场安检员的工作职责和所需的技能要求。

黄花机场安检员的工作职责主要包括:

  • 安全检查:安检员负责对所有乘客、行李和货物进行安全检查,确保机场的安全和秩序。
  • 使用安检设备:安检员需要熟练运用各种安全检查设备,如金属探测仪、X射线机等,对乘客和行李进行全面检查。
  • 识别危险品:安检员需要具备识别危险品的能力,及时发现和处理任何潜在的威胁。
  • 处理紧急情况:在紧急情况下,安检员需要冷静应对,并采取适当的措施保护乘客和机场安全。
  • 提供协助:安检员需要为乘客提供各种帮助,如指导乘客通过安检流程、协助行李过检等。

除了以上的工作职责,黄花机场安检员还需要具备以下的技能要求:

  • 专业知识:安检员需要通过相关培训,掌握安全检查的专业知识,了解安全检查的操作规程和流程。
  • 身体素质:作为一种高强度的工作,安检员需要具备良好的体能和抗压能力,能够长时间站立和工作。
  • 观察能力:安检员需要具备敏锐的观察能力,能够迅速发现乘客或行李中的异常情况。
  • 团队合作:安检员通常是以团队的形式进行工作,他们需要良好的团队合作能力,与其他同事高效配合。
  • 语言沟通:安检员需要良好的沟通能力,能够与各种乘客进行有效的交流,解决问题和提供帮助。

黄花机场安检员的工作是一项充满责任和挑战的职业。只有具备专业知识和必备的技能,才能胜任这份工作。此外,安检员还需要时刻保持高度的警惕性和责任心,确保机场的安全和畅通。

希望通过本文的介绍,大家对黄花机场安检员的工作职责和技能要求有了更深入的了解。

五、安检员培训心得

安检员培训心得

作为一名安检员,经过长期的培训和实践,我积累了许多宝贵的经验和心得。安检员是维护人们生命财产安全的守护者,我们的职责是确保航空安全和公共场所的平安。在这篇博文中,我将分享一些我在培训过程中学到的技能与体会,希望能对即将成为安检员的人们有所帮助。

良好的职业素养

作为一名安检员,良好的职业素养是非常重要的。我们需要以专业的态度对待工作,始终保持职业操守。首先,我们应该时刻保持良好的形象,穿戴整洁,工作服要整齐干净。此外,我们还需要注重语言表达和沟通技巧,与旅客和同事保持良好的关系。我们要时刻保持冷静和耐心,不论遇到什么情况,都要以专业的态度解决问题。

严格的安全检查

安检员的主要任务是进行严格的安全检查,确保旅客和乘客的安全。在培训过程中,我们学会了使用各种安检设备,包括金属探测器、X光机等。我们需要熟练掌握这些设备的使用方法,并在实际操作中保持高度警惕。在安全检查过程中,我们要注重细节,耐心而又认真地检查每一个行李和旅客。我们要学会辨别可疑物品,并采取相应的措施,以确保场所的安全。

应急处置能力

作为一名安检员,我们要经常面对各种突发状况。在培训过程中,我们学习了应急处置的技巧和方法。我们需要具备分析和判断的能力,并能够在紧急情况下迅速反应。我们要学会与其他安检员和相关部门进行紧密合作,共同制定应对方案。我们要经常进行模拟演练,提升自己的反应和处置能力,以保证在实际工作中能够应对各种突发情况。

人际关系管理

在安检工作中,与旅客和同事保持良好的人际关系是非常重要的。我们要学会倾听和理解旅客的需求和意见,并及时解决他们的问题。我们要学会与同事团结合作,互相支持,形成良好的工作氛围。人际关系的良好管理不仅可以提高工作效率,还能够减少工作中的摩擦和矛盾,为工作的顺利开展提供良好的环境。

持续学习与提升

作为一名安检员,我们不能停止学习和提升自己。航空安全技术和设备都在不断更新和发展,我们需要与时俱进。我们要持续学习新的安检技术和操作方法,积极参加培训和研讨会,不断提高自己的专业水平。此外,我们还要关注国际安全标准和最新的安全动态,保持对航空安全领域的了解和洞察。

总结起来,成为一名优秀的安检员需要具备良好的职业素养、严格的安全检查能力、应急处置能力、人际关系管理能力和持续学习与提升的精神。通过不断学习和实践,我相信每个人都能够成为一名出色的安检员,在工作中发挥自己的价值,为保障航空安全和公共安全作出贡献。

六、智慧城市安检员

随着社会的发展和科技的进步,智慧城市的概念逐渐走进人们的视野。作为智慧城市中不可或缺的一部分,安检员的作用日益凸显。

智慧城市中的安检员角色

智慧城市中的安检员不再是简单执行安检任务的人员,他们更像是智慧城市的守护者和管理者。通过科技手段的运用,安检员可以更加高效地监控城市中的安全情况,及时发现并应对各类安全隐患。

智慧城市安检员的技能要求

智慧城市安检员需要具备一定的科技技能,能够熟练操作各类安检设备和监控系统。此外,他们还需要具备较强的应变能力和危机处理能力,能够在紧急情况下冷静应对,有效维护城市的安全稳定。

智慧城市安检员的发展前景

随着智慧城市建设的不断推进,智慧城市安检员的需求也将持续增加。未来,智慧城市安检员将成为城市管理中不可或缺的一支力量,为城市的发展和居民的安全保驾护航。

七、地铁安检员面试技巧 | 如何成功通过地铁安检员面试

地铁安检员面试技巧

地铁安检员是地铁安全管理的重要一环,其工作需要高度的责任感和专业技能。而作为应聘者,如何成功通过地铁安检员面试,是关乎个人职业发展的重要一步。以下是一些地铁安检员面试的技巧和注意事项,希望能对您有所帮助。

关于地铁安检员的工作职责

在准备地铁安检员面试前,首先要了解地铁安检员的工作职责。地铁安检员主要负责对乘客携带的行李和物品进行安全检查,以确保乘客和地铁设施的安全。因此,在应聘地铁安检员岗位时,应聘者需要清楚地了解这项工作的专业性和责任感,以便在面试中展现出应有的素质。

技巧一:充分准备面试常见问题

在面试中,常见的问题可能涉及到应聘者的个人背景、安检工作的相关经验及技能、应对突发情况的能力等。因此,应聘者需要提前准备充分,对可能会被问到的问题进行思考并给予恰当的回答,展现出自己的专业素养和工作能力。

技巧二:展现团队合作精神

作为地铁安检员,团队合作是非常重要的。在面试中,应聘者可以通过举例说明自己在以往工作中与同事合作完成任务的经验,或者阐述个人的团队合作态度和看法,以突出自己的团队合作意识。

技巧三:展现应对紧急情况的能力

地铁安检员在工作中可能会面临各种紧急情况,因此应聘者需要在面试中展现出自己对于突发情况的处理能力和应变能力。这可以通过举例说明过往经验,或者描述自己的紧急情况处理思路和方法来展现。

通过以上几点技巧和注意事项,相信您能更有把握地准备和应对地铁安检员的面试。祝您面试顺利,成功获得这份工作!

感谢您阅读本文,希望这些技巧能够帮助您成功通过地铁安检员面试,开启您的地铁安检员职业生涯。

八、安检员证怎么考?

你好:

安检员证每年两次五月份一次,十月份一次。

初级是当年就可以考,中级是初级满两年大专以上学历可以考,高级是中级考完满三年大专以上学历可以考。技师现在只是全国大比武前几名才是,现在鉴定站还不可以考。技师上面还有高级技师。技师全国就很少

理论 你把民航安全员的五级安全员内容看好验证 人身检查 开包检查 这些也是很简单的 多做几次就好了验证 2分钟验40张最多错4张 然后回答问题 很简单人身 就是从一个人身上 3分钟 按相应的检查顺序 查出违禁品 然后回答问题开包 就是给4分钟查危险物品(多件)放在相应的筐里 然后也是回答问题 理论 你把民航安全员的五级安全员内容看好验证 人身检查 开包检查 这些也是很简单的 多做几次就好了验证 2分钟验40张最多错4张 然后回答问题 很简单人身 就是从一个人身上 3分钟 按相应的检查顺序 查出违禁品 然后回答问题开包 就是给4分钟查危险物品(多件)放在相应的筐里 然后也是回答问题

安检员是国家统一考试,和自考本科是一样的,有政府统办,考试地点不定,到考试时间,就会知道。如果你是在学校是由学校安排,不清楚的的到考试时间政府的考试信息上会有的。复习的时候,难免会遇到学习困难,优题宝APP可以帮搜题找答案。

以上回答希望对你有用。

九、安检员服务礼仪规范

安检员服务礼仪规范

随着社会的进步和发展,人们对于公共安全的重视程度也越来越高。作为维护旅客安全的重要一环,安检员的服务礼仪至关重要。安检员是保障航空、铁路、地铁等公共交通系统安全运行的关键性岗位,他们不仅需要具备专业的技巧,还需要娴熟的服务礼仪来提供周到的服务。

作为一名合格的安检员,服务礼仪规范是必备的素质之一。下面将介绍几点安检员需遵守的服务礼仪规范。

1.亲切友好的问候

安检员是旅客出行的第一道关口,他们需要以亲切友好的态度迎接旅客。在接待旅客时,安检员应该面带微笑,平和自然地与旅客打招呼,使用文明用语与旅客进行沟通,让旅客感受到如家一般的温暖。

2.规范专业的工作流程

安检员在工作中需要牢记专业的工作流程,确保每个环节都按照规定进行。他们应该准确判断旅客的行李物品是否符合安全规定,严格执行安检程序,对于违禁物品进行及时查处和处理。遵守规范的工作流程能够提高工作效率,确保安全运行。

3.注重隐私保护

安检过程中,旅客的个人隐私是需要得到保护的。安检员需要严格遵守相关隐私保护法规,不得将旅客的个人隐私信息外泄,确保旅客的隐私权益。在处理涉及个人隐私的问题时,安检员应该保持谨慎和敬业的态度。

4.耐心细致的解答

旅客在安检过程中可能会有各种问题和疑虑,安检员需要耐心细致地解答。无论是关于安检流程,还是关于行李物品是否符合安全规定等问题,安检员应该给予明确的解答和指导。通过耐心回答旅客的问题,能够增强旅客对安检工作的信任感。

5.文明待人的态度

安检员作为服务行业的一员,需要具备良好的职业素养和文明待人的态度。无论面对旅客的情绪变化,还是处理突发事件,安检员都要保持冷静和理性,不得妄语恐吓旅客。在服务过程中,安检员应该用礼貌的语言与旅客交流,展现职业魅力。

6.安全意识和紧急处理能力

安全是安检工作的首要任务,安检员需要具备丰富的安全知识和紧急处理能力。他们需要对潜在的安全风险保持高度警惕,并能够迅速做出正确的判断和处理。只有具备敏锐的安全意识和高效的紧急处理能力,才能更好地完成安检任务。

7.自我修养与形象塑造

安检员作为服务行业的从业者,需要注重自我修养和形象塑造。他们应该保持良好的仪表仪态,穿戴整洁干净的工作服,严格按照要求佩戴工作证件。通过良好的形象塑造和自我修养,能够给旅客留下良好的印象,提升安检工作的专业度。

总之,安检员的服务礼仪规范是提高服务质量、维护公共安全的重要保障。安检员在工作中要注意自身形象,注重与旅客的沟通交流,并保持专业态度和良好的工作流程。只有这样,才能让旅客感受到舒心的服务,确保公众的出行安全顺畅。

十、mahout面试题?

之前看了Mahout官方示例 20news 的调用实现;于是想根据示例的流程实现其他例子。网上看到了一个关于天气适不适合打羽毛球的例子。

训练数据:

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

检测数据:

sunny,hot,high,weak

结果:

Yes=》 0.007039

No=》 0.027418

于是使用Java代码调用Mahout的工具类实现分类。

基本思想:

1. 构造分类数据。

2. 使用Mahout工具类进行训练,得到训练模型。

3。将要检测数据转换成vector数据。

4. 分类器对vector数据进行分类。

接下来贴下我的代码实现=》

1. 构造分类数据:

在hdfs主要创建一个文件夹路径 /zhoujainfeng/playtennis/input 并将分类文件夹 no 和 yes 的数据传到hdfs上面。

数据文件格式,如D1文件内容: Sunny Hot High Weak

2. 使用Mahout工具类进行训练,得到训练模型。

3。将要检测数据转换成vector数据。

4. 分类器对vector数据进行分类。

这三步,代码我就一次全贴出来;主要是两个类 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) {

//将训练数据转换成 vector数据

makeTrainVector();

//产生训练模型

makeModel(false);

//测试检测数据

BayesCheckData.printResult();

}

public static void makeCheckVector(){

//将测试数据转换成序列化文件

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参数是,是否递归删除的意思

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);

}

//将序列化文件转换成向量文件

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参数是,是否递归删除的意思

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("序列化文件转换成向量失败!");

System.out.println(2);

}

}

public static void makeTrainVector(){

//将测试数据转换成序列化文件

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参数是,是否递归删除的意思

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);

}

//将序列化文件转换成向量文件

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参数是,是否递归删除的意思

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("序列化文件转换成向量失败!");

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参数是,是否递归删除的意思

fs.delete(out, true);

}

if(fs.exists(label)){

//boolean参数是,是否递归删除的意思

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("生成训练模型失败!");

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("检测数据构造成vectors初始化时报错。。。。");

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时表示总文档数

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());

}

}

相关资讯
热门频道

Copyright © 2024 招聘街 滇ICP备2024020316号-38