企业创新能力的基本要素为了正确评价企业的创新能力,首先必须弄清楚获取创新成功的决定因素。也就是说到底哪些因素对企业创新具有重要的影响作用。通过总结分析创新的成功经验,对合理评价企业的创新能力有较大的借鉴意义。一般来说,成功的企业创新,是科学发明、技术创新、管理创新、企业家精神和市场需求等诸多要素结合的产物,创新成功还需要一定的社会、政治和经济环境的支持。英国经济学家兰格力士等指出创新是一个综合的系统创新,它不但受到了系统规划、“艺术状态”,而且还受到个体动力、组织压力和外界政治、社会、经济的影响。企业创新要取得成功究竞涉及哪些具体的因素,国内外的研究者已逐步总结出了一些对创新成功来说最重要的因素。兰格力士等调查了20世纪60年代英国企业创新成功的经验。调查表明有7个因素对创新成功很重要:1、创新组织中有一个处于权威地位的杰出人物2、创新组织中有其他类型的杰出人物3、对某种市场需要有清楚的认识4、对一项科学技术发现的潜在价值和用途的认识5、创新组织内的良好合作6、资源可获得性7、来自政府方面的帮助由英国Sussex大学科学政策研究所发起的,在创新理论方面的几位著名专家(R.C.Curnow, R·Rrothwell和 C.Freeman)领导下完成的SAPPHO工程,对英国企业创新进行了系统研究。SAPPHO工程是世界上创新方面的首个权威性研究项目。该工程详细分析了英国许多创新上成功和失败的经验。研究结果表明成功的创新具有以下共同特征:1、对用户需有有较好的关注2、对市场给予更多的关注3、开发工作效率较高4、能更有效地利用外部技术和外部建议5、成功创新项目的负责人比失败项目的负责人有更高的职位和更大的权威弗里曼等对企业创新作了系统研究,总结得出20世纪全球产业创新上成功的企业具有以下十个共同特征,并认为下面10个因素是企业创新成功的基本条件。1、较强的组织内部专门性的R&D投入2、良好的基础研究能力或与在基础研究方面领先机构的密切交流3、利用专利获得保护和获取与对手讨价的能力4、公司规模足够大,有能力长期支持高强度的R&D活动5、缩短与领先竞争对手的时间差6、承受高风险的预期7、尽早构思或识别有潜力的市场8、密切关注潜在市场并全力以赴培育和扶持用户9、企业家能有效协调企业的R&D生产和销售等活动10、与外部学术界和顾客良好的沟通能力罗森韦尔(Rothwell)于七、八十年代对企业创新作了大量的实证研究。他把企业创新的成功因素分为项目执行因素(Project execution factors)和公司层次因素(Corporate level factors)两个层次,两个层次的具体因素见下表。他强调指出,公司高层管理人员和长期计划是创新成功的关键因素。Rothwell重点分析了信息和通讯技术(ICT)产业创新,发现了系统要素或网络要素在创新中的重要作用,尽管这一要素对纺织业、化学工业、电子工程和汽车产业等创新也很重要,但在ICT产业中系统要素的作用显著增强了。罗森韦尔把80年代未ICT产业创新称为“第五代创新”,第五代创新的要素见下表。产业创新的成功因素工程执行因素良好的内部和外部沟通;外部技能进入通道视创新为公司的任务周密详细的计划和项目控制程序高效率地开发产品和高质量的产品强劲的市场开拓能力:重视满足用户需要重视用户价值开发为用户提供良好的技术服务:有效的用户培训高质量、开放型管理:强调人力资源开发促进项目间的协同和项目内学习公司层面因素高层管理的创新精神和对创新的支持在技术战略配合下的公司长远发展计划对主体项目的长期投入(如专利投入)公司具有灵活性和对变革的敏感性高层管理人员勇于冒风险接近创新、企业家精神式的包容性文化第五代创新:系统集成和网络时基战略(快速,高速的产品开发)聚焦于质量和其它非价格要素的开发重视公司灵活性和敏感性与主要供应商进行战略协作垂直技术合作战略数据处理战略全程质量控制策略基本的执行特征综合国外大量创新的研究成果可以发现,成功的企业创新有三个共同特征:(1)导致成功的因素是多方面的,一般说来,对成功的创新无法进行单因素解释,不是一、两件事做得好就能获得创新成功。不仅每一个成功因素都很重要,而且所有因素的结合也很重要。( 2)成功因素具有一般性,对于不同的行业和企业来说,成功的因素具有一定共同性。但这些因素的相对重要性在不同行业企业有所不同。(3)成功是以人为中心的,高水平的管理人员和技术人才在创新中起着关键作用。
创造性思维,是一种具有开创意义的思维活动,即开拓人类认识新领域、开创人类认识新成果的思维活动。创造性思维是以感知、记忆、思考、联想、理解等能力为基础,以综合性、探索性和求新性特征的高级心理活动,需要人们付出艰苦的脑力劳动。一项创造性思维成果往往要经过长期的探索、刻苦的钻研、甚至多次的挫折方能取得,而创造性思维能力也要经过长期的知识积累、素质磨砺才能具备,至于创造性思维的过程,则离不开繁多的推理、想象、联想、直觉等思维活动。
一般意义上的创新能力由以下三要素构成:系统性思维能力、创造性思维能力和实践能力。创新能力是技术和各种实践活动领域中不断提供具有经济价值、社会价值、生态价值的新思想、新理论、新方法和新发明的能力。经济竞争的核心;当今社会的竞争,与其说是人才的竞争,不如说是人的创造力的竞争。以现有的思维模式提出有别于常规或常人思路的见解为导向,利用现有的知识和物质,在特定的环境中,本着理想化需要或为满足社会需求,而改进或创造新的事物(包括产品、方法、元素、路径、环境),并能获得一定有益效果的行为。
面试测评要素包括技术能力、沟通能力、团队合作能力等。
评价标准主要有面试者的知识掌握程度、解决问题的思路和能力、表达清晰的能力、积极参与团队合作的态度等。
技术能力的评价可通过具体问题和案例来考察;沟通能力可以通过面试者的表达、回答问题的逻辑性和准确性来评估;团队合作能力可以通过面试者在团队中担任的角色和项目经验来衡量。考虑到以上要素和评价标准,面试官可综合评估面试者的综合能力。
职位的测评要素包括公司文化,工作内容,团队合作等多个方面。对职位进行综合评估是找到适合自己的工作的关键。
公司文化是一个组织的核心价值观和行为准则的集合,对于一个职位来说,了解和适应公司的文化非常重要。
在公司文化中,重要的是团队精神,互相尊重和协作。这些元素将直接影响到一个职位的工作环境和工作满意度。
工作内容是衡量一个职位吸引力的重要因素之一。它涉及一个职位的职责和任务。
在评估一个职位的工作内容时,我们应该考虑以下几个方面:
通过综合考虑这些因素,我们可以更好地了解一个职位的工作内容。
在今天的工作环境中,团队合作是非常重要的。
一个职位的团队合作要素包括:
通过了解一个职位的团队合作要素,我们可以更好地评估职位的吸引力和适合度。
除了上述要素外,还有一些其他要素也会影响一个职位的评估和选择,如:
所有这些要素都是综合评估和选择一个职位时应该考虑的重要因素。
综上所述,一个职位的测评要素包括公司文化,工作内容,团队合作和其他相关要素。
当我们面临选择工作的决策时,综合考虑这些要素是非常重要的。只有了解职位的各个方面,我们才能做出明智的决策,找到适合自己的工作。
事业单位面试中的测评要素也就是在考试中考查考生的哪些方面的能力和素质,这些测评要素主要包括:
1.综合分析能力:所谓综合分析能力就是去粗取精、由此及彼、全面周到的看待某一个问题,并且通过自己的头脑分析,将某一个问题做出自己的阐述和理解。
2.言语表达能力:言语表达主要涉及到考生的说话语言的连贯性,声调的抑扬顿挫。在阐述自己观点的时候,做到逻辑分明,表达流利,吐字清晰。
3.自我情绪控制能力:主要测评考生的心理和压力状况,看考生能否在面对考官提出的自己没有接触过的问题的时候,做到情绪稳定,处变不惊,化被动为主动。
4.应急应变能力:这个主要测评针对突发事件,考生是否能抓住关键信息,做到解决主要矛盾,而且做到不遗漏要点,根据时间紧急先后顺序。
5.计划、组织、协调控制能力:该要素主要考察考生在面对多个工作对象和主体的时候能否做到平衡各个部门之间的关系,做到沟通及时、安排有序、资源调配合理。
6.人际交往意识与技巧:该要素考察考生的人际沟通能力,往往给考生假定一个矛盾情境,看考生如何在矛盾情境既把问题解决了,又能做到保持同事、领导、群众之间的关系和谐。
7.求职动机与职位匹配性:考察考生是否对自己有一个清晰地认识,是否了解自己的长处和短处以及考生对于报考工作岗位的认知情况。用人单位通过考生的答题充分分析考生胜任该报考职位的可能性。
8.举止仪表:考生需要衣着得体,稳重大方即可,不用刻意掩饰和突出。
建立客户服务满意度评价的指标体系的第一步就是要明确影响顾客满意度的因素有哪些,同时,还必须充分考虑如何获得这些因素并将之量化,这一过程具体包括对下面几个问题的回答: 影响购买行为的顾客满意因素,影响产品(服务)使用的顾客满意因素,在这些满意因素中,哪些因素能成为满意指标;每一个满意指标对购买和使用的影响程度,上述数据可以从什么渠道获得;应该采用何种方式采集数据,采集数据时应注意的问题等等。
初步选定指标 该步骤主要是初步确定影响顾客满意度的指标,可以综合使用上述介绍的数据采集方法,寻找出所有影响顾客满意度的因素指标。
首先,可以收集二手资料以形成对该产业背景、行业现状及竞争对手的了解,初步给出以上问题的答案。
其次,通过内部访谈、深入访谈和焦点访谈等方式与公司主管、和顾客打交道的员工、现有顾客、潜在顾客以及供应商等人进行深入地调查研究。
这些访谈为识别和理解重要的满意度指标提供了一个框架。
该阶段主要使用定性分析方法即内容分析方法,通过计算有关满意度的某个具体观点、看法出现的次数,进行词语频率分析,确定词语使用水平的模式。
在焦点小组中,确定初步的满意度指标,这时词语的出现次数是很有价值的信息。
开放型问题在这一阶段较为适用,因其能抓住顾客的直觉反应和自发性,捕捉到从公司角度出发无法想象到的重要指标。
对答案进行分析从而了解顾客对每个满意度指标的评价及其重要性,有助于找出顾客满意或不满意的主要原因。
通过编码和汇总分类,从开放型问题的回答中识别和提取重要的主题、问题、结构。
编码过程中往往会带有很强的主观性,而减少主观性的途径之一就是比较两个或者两个以上独立编码的个人所设计的代码,这样可以检验并讨论想法的差异,并在最终的代码表中包含每个人的最佳意见。
遴选有效指标 在初步选出所有影响顾客满意度的指标后还要对其进行有效地遴选,剔除不适用的指标,保留不仅在统计意义上、而且在实际意义上能真正反映顾客满意度的指标。
该阶段主要使用定量分析方法,即应用各种统计技术深入挖掘和分析变量间的关系。
该阶段通常使用问卷调查的方式采集所需数据,顾客满意度测评主要调查顾客对产品、服务或企业的评价,对这类问题的测量一般采用“李克特量表”。
可以请专家根据初步选定的指标找出关键指标来设计问卷,并根据实际情况决定采用五级、七级或十级量表。
在确保问卷的有效性及信度的前提下,可以对问卷调查的结果进行量化分析。
人员素质测评标准体系的构成分为两个方面,即内容结构和指标构成。
内容结构方面包括:
1)身体素质,包括生理方面的健康状况和体力状况两方面;
2)文化素质,包括教育程度、自我学习程度、社会文化等方面;
3)品德素质:包括职业道德、社会道德、政治道德;
4)智力素质,包括科学智能素质和社会智能素质;
5)心理素质,发展形成心理潜能、能量、特点、品质和行为的综合。
素质测评的指标构成:
1)测评要素,是之测评内容的细化条目,确定出测评的内容到底有哪些方面,是素质测评目标操作化的表现形式。
2)测评标志,是为每一个测评要素确立的关键性描述特征,要求具备可辨别、易操作的特征,通常一个测评要素要由多个测评标志来说明。
3)测评标度,是指描述测评或要素标志的程度差异与状态水平顺序和度量。测评指标的标度大致有量词式、等级式、数量式、定义式、综合式。
游戏测评是一个复杂而专业的领域,需要评测者具备丰富的游戏知识和深入的分析能力。要想写出一篇出色的游戏测评文章,需要关注以下几个重点方面:
游戏性是游戏测评最核心的评判标准。它包括游戏的操作体验、关卡设计、敌AI、音效等多个方面。评测者需要全面评估这些要素,并给出客观公正的评价。例如,一款动作游戏的操作流畅度、操控反馈以及关卡设计的合理性都是非常重要的。
良好的画面表现是吸引玩家的重要因素。评测者需要仔细分析游戏的视觉效果,包括场景设计、人物模型、光影效果等方面,给出专业的评价。即便是一款2D游戏,只要艺术风格独特,也可以给人耳目一新的感觉。
优秀的音乐与音效能营造出更沉浸的游戏体验。评测时需要关注游戏音乐的质量和与游戏情节的契合度,以及各种音效是否到位、还原度如何。好的音乐和音效设计能助力游戏的气氛渲染和情绪表达。
丰富的剧情与人物设计是优秀游戏的重要组成部分。评测时需要分析游戏的故事情节是否引人入胜,人物设计是否鲜明,台词是否生动有趣。一款有良好剧情和人物塑造的游戏,往往更容易引起玩家的共鸣。
游戏的创新与可玩性也是评测的重要指标。评测时需要关注游戏的创新性和独特性,例如是否采用了新颖的玩法机制、是否有趣味性十足的互动玩法等。同时,一款好游戏需要具有较高的可玩性和重复性,能给玩家带来长期的游戏体验。
总之,一篇出色的游戏测评文章需要从多个角度全面深入地分析游戏,让读者对这款游戏有更加全面和客观的认知。我们希望通过这篇文章,为广大游戏玩家提供专业、详细的游戏测评指南。感谢您的阅读,祝您玩游戏愉快!
公务员面试的
九大测评要素
,又称通用要素,是公务员面试中必考内容。其中包括综合分析能力、言语表达能力、应变能力、计划组织协调能力、人际交往的意识与技巧、求职动机与拟任职位的匹配性、专业能力、自我情绪控制能力以及举止仪表。除了九大要素,在面试中有些部门还会结合岗位特点自设一些测评要素。不过,通用要素仍是考察的主要方面。
1.综合分析能力
综合与分析是辩证思维的一种方法,也是公务员必须具备的一种能力,这项测评要素考察的是考生对政府政策、社会现象是否有清楚的认识,有正确而全面的理解。它不仅要求考生能明辨是非,还要求考生能从整体和部分两方面深入分析事物的联系、本质,并提出解决对策。
例如:
随着经济的发展,我国已经成为第二大奢侈品消费国家,但是据统计年轻人占绝大比重。对此,谈谈你的看法。2.言语表达能力
言语表达能力是公务员必须具备的一项能力,在面试中这项测评要素贯穿于考试的始终,因为考生在回答问题时就是一种言语表达能力的体现。这项能力主要包括:理解他人的意思;口齿清晰,语言流畅;内容有条理;赋予逻辑性、他人能理解并具有一定的说服力;用词准确、恰当、有分寸。
例如:
请以“感恩”为主题做一篇演讲。3.应变能力
应变能力是指面对变化的情况和突发事件,迅速作出反应,采取恰当方法和措施予以妥善解决的能力。它一般要求考生在遇到突发问题时保持情绪的稳定,对突发事件能够整体的驾驭,遇到复杂问题是能分清楚轻重缓急,对突出问题能够迅速解决。
例如:
某地方发生地陷,造成多处房屋倒塌,村民恐慌,作为当地负责人,你怎么处理?4.计划组织协调能力
计划组织协调能力指的是对自己、他人、部门各项活动做出计划,合理高效地安排时间和调配资源,并对在此过程中可能出现的矛盾冲突,按照一定标准进行协调的能力。简言之,这项能力包括三个方面,即计划、组织、协调。在落实工作前应该有合理而切实可行的计划,落实工作中安排好各方面资源,同时要协调好各部门和各方面的沟通它考察的是考生的执行力的能力。
例如:
单位里要组织老干部去旅游,由你负责,你该怎么办?5.人际交往的意识与技巧
在公务员面试中,人际交往的能力也是一项重要的考察方面,因为公务员在工作中要与各种人群沟通,包括同事、上级、群众、其他部门等,因此,拥有良好的人际交往的意识和能力是很重要的。在面试中,这项能力主要包括:人际合作的主动性,对组织中权属关系的意识,人际间的适应,有效沟通以及处理人际关系的灵活性与原则性。
例如:
作为一名国家公务员,面对亲人找你办事时,你会怎么做?6.求职动机与拟任职位的匹配性
求职动机是指在一定需要的刺激下,直接推动个体进行求职活动以达到求职目的的内部心理活动。个人的求职目的与拟任岗位所能提供的条件相一致时,个体胜任该岗位工作并稳定地从事该工作的可能性较大。通俗的理解就是,考生报考这个岗位的目的和原因是什么,考生的自身素质和需求是否与岗位的要求相匹配。这就要求考生对自己以及求职动机有很透彻的认识,同时对所报考岗位的职责和要求也有清楚的了解。
例如:
1.请介绍一下你的家庭。2.对于公务员岗位,你是把它当成一种事业还是一种职业?7.专业能力
专业能力考察的是考生对自己所报考的部门和岗位的专业知识的掌握情况,在近几年的公务员面试中关于专业能力的题目越来越多,尤其是在司法系统、银行系统、国税系统等部门的面试中,对专业能力的要求尤为突出。
例如:
1.什么是流动性风险?银监会可以采取哪些监管措施对其进行控制?2.什么是绩效管理?8.自我情绪控制能力
自我情绪控制能力指的是在受到较强刺激或处于不利的情境中时,能保持情绪稳定,并约束自己行为反应的能力。在公务员面试中,情绪控制能力的考察主要体现在考生在考场上的心里紧张的控制状况。在面试考场上,考生面对不熟悉的环境和多位考官的注视,势必会产生心理压力,而在压力下能做到头脑清晰、表达流畅,这就是对自我情绪的控制。
9.举止仪表
在考场上,考生呈现给考官的不仅仅是答题的内容,还包括外在的举止仪表。具体包括:穿着打扮是否得体;言行举止是否符合一般的礼节;是否有多余的动作等等。
\�� �.�1ՈC�j
在应聘游戏测评分析岗位时,面试官常常会提出相关的面试题目,以考察申请者的专业知识和解决问题的能力。下面我们将介绍一些常见的游戏测评分析面试题目以及对应的解答技巧。
1. 请分析一款主流游戏的用户流失原因,并提出改进建议。
2. 如何设计一套完整的游戏数据分析方案?
3. 你如何确定游戏中的关键指标?
4. 请说明游戏中不同用户行为之间的关联性,并解释如何利用这些关联性进行数据分析。
5. 对于一个新推出的游戏,你会如何进行用户画像及用户价值分析?
在回答这些问题时,申请者应该做到以下几点:
总之,在应对游戏测评分析面试题目时,需要充分准备,注重条理清晰、结合实际案例、沟通表达以及展现解决问题的能力。只有全面具备了这些技巧,才能在面试中更加游刃有余地回答各种问题。
感谢您阅读本文,希望这些技巧能够帮助您在游戏测评分析面试中取得成功!
之前看了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());
}
}