濫用職權(quán)的詞:以權(quán)謀私、徇私舞弊、徇私枉法。
濫用職權(quán),是指不法行使職務(wù)上的權(quán)限的行為,即就形式上屬于國(guó)家機(jī)關(guān)工作人員一般職務(wù)權(quán)限的事項(xiàng),以不當(dāng)目的或者以不法方法,實(shí)施違反職務(wù)行為宗旨的活動(dòng)。首先,濫用職權(quán)應(yīng)是濫用國(guó)家機(jī)關(guān)工作人員的一般職務(wù)權(quán)限,如果行為人實(shí)施的行為與其一般的職務(wù)權(quán)限沒有任何關(guān)系,則不展于濫用職權(quán)。
其次,行為人或者是以不當(dāng)目的實(shí)施職務(wù)行為或者是以不法方法實(shí)施職務(wù)行為;在出于不當(dāng)目的實(shí)施職務(wù)行為的情況下,即使從行為的方法上看沒有超越職權(quán),也屬于濫用職權(quán)。最后,濫用職權(quán)的行為違反了職務(wù)行為的宗旨,或者說與其職務(wù)行為的宗旨相悖。
濫用職權(quán)罪顧名思義就是指國(guó)家機(jī)關(guān)工作人員利用職務(wù)便利,損害國(guó)家、集體或第三人利益的犯罪。這是一種特殊主體的犯罪,而我國(guó)也制定的有相關(guān)的司法解釋。下面,我們一起來看看濫用職權(quán)罪司法解釋都有什么內(nèi)容。
最高人民檢察院關(guān)于人民檢察院直接受理立案?jìng)刹榘讣笜?biāo)準(zhǔn)的規(guī)定(試行)(1999.9.9 高檢發(fā)釋字[1999]2號(hào))二、瀆職犯罪案件(一)濫用職權(quán)案(第397條)(二)濫用職權(quán)罪是指國(guó)家機(jī)關(guān)工作人員超越職權(quán),違法決定、處理其無權(quán)決定、處理的事項(xiàng),或者違反規(guī)定處理公務(wù),致使公共財(cái)產(chǎn)、國(guó)家和人民利益遭受重大損失的行為。
涉嫌下列情形之一的,應(yīng)予立案:
1、造成死亡人以上,或者重傷2人以上,或者輕傷5人以上的;
2、造成直接經(jīng)濟(jì)損失20萬元以上的;
3、造成有關(guān)公司、企業(yè)等單位停產(chǎn)、嚴(yán)重虧損、破產(chǎn)的;
4、嚴(yán)重?fù)p害國(guó)家聲譽(yù),或者贊成惡劣社會(huì)影響的;
5、其他致使公共財(cái)產(chǎn)、國(guó)家和人民利益遭受重大損失的情形;
6、徇私舞弊,具有上述情形之一的。
一、本罪是指國(guó)家機(jī)關(guān)工作人員濫用職權(quán),致使公共財(cái)產(chǎn)、國(guó)家和人民利益遭受重大
損失的行為。
二、本罪的犯罪主體只能是國(guó)家機(jī)關(guān)工作人員。本罪的主觀方面是故意。本罪的客觀方面,表現(xiàn)為濫用職權(quán),致使公共財(cái)產(chǎn)、國(guó)家和人民利益遭受重大損失的行為。
三、本罪是刑法增設(shè)的新罪名。目前尚無司法解釋。
四、按最高人民法院關(guān)于罪名的司法解釋,“徇私舞弊罪”已經(jīng)取消,分解到后面的各個(gè)新罪名中。本條第二款,只作為一個(gè)加重量刑的情節(jié)考慮。但最高人民檢察院1997年12月關(guān)于適用刑法分則規(guī)定的犯罪的罪名的意見,保留了這一罪名。現(xiàn)在按最高人民法院的罪名 體系,不保留。但最高人民檢察院以前對(duì)詢私舞弊犯罪的司法解釋,對(duì)理解此情節(jié)仍有參考作用,故附錄于此,在后面各罪中不再重復(fù)引用。
附:最高人民檢察院關(guān)于辦理詢私舞弊犯罪案件適用法律若干問回的解釋(1996.5 16 高檢發(fā)研字〔1996〕4號(hào))
為維護(hù)社會(huì)主義法制,促進(jìn)嚴(yán)格執(zhí)法,懲治腐敗,依法嚴(yán)懲拘私舞弊犯罪,根據(jù)中華人民共和國(guó)刑法和其他法律的有關(guān)規(guī)定,現(xiàn)就辦理拘私舞弊犯罪案件適用法律的若干問題解釋如下:
一、司法工作人員,即依法具有偵訊、檢察、審判和監(jiān)管人犯職務(wù)的人員為貪圖錢財(cái)、袒護(hù)親友、泄憤報(bào)復(fù)或者其他私情私利,具有下列行為之一的,應(yīng)當(dāng)依照刑法第一百八十八條的規(guī)定追究刑事責(zé)任:
(一)對(duì)明知是無罪的人,即沒有實(shí)施危害社會(huì)行為,或者根據(jù)刑法第十條規(guī)定,情節(jié)顯著輕微,危害不大,不認(rèn)為是犯罪以及其他依照刑法規(guī)定不負(fù)刑事責(zé)任的人,采取偽造、隱匿、毀滅證據(jù)或者其他隱瞞事實(shí)、違背法律的手段,以追究刑事責(zé)任為目的進(jìn)行偵查(合采取強(qiáng)制性措施)、起訴、審判等追訴活動(dòng)的;
(二)對(duì)明知是有罪的人,即有確鑿事實(shí)證明其實(shí)施犯罪的人,采取偽造、隱匿、毀滅證據(jù)或者其他隱瞞事實(shí)、違背法律的手段,故意包庇使其不受偵查(合采取強(qiáng)制性措施)、起訴或者審判;故意包庇不使受追訴的犯罪事實(shí),既可以是全部的犯罪事實(shí),也可以是部分犯罪事實(shí)或情節(jié);
(三)在審判刑事案件中故意違背事實(shí)和法律,枉法進(jìn)行判決、裁定,使有罪判無罪、無罪判有罪或者重罪輕判、輕罪重判的;
(四)故意違背事實(shí)真相,違法變更強(qiáng)制措施,或者雖然采取強(qiáng)制措施,但實(shí)際放任不管,致使人犯逃避刑事追訴的;
(五)對(duì)依法不該減刑、假釋、暫予監(jiān)外執(zhí)行的犯人,詢私枉法,予以減刑、假釋、暫予監(jiān)外執(zhí)行的;
(六)在審判民事、經(jīng)濟(jì)、行政等案件中,故意歪曲事實(shí),違反法律、詢私舞弊,枉法裁判的;
(七)司法機(jī)關(guān)專業(yè)技術(shù)人員在辦案中故意提供虛假材料和意見,或者故意作虛假鑒定,嚴(yán)重影響刑事追訴活動(dòng)的。
二、下列行為,依法應(yīng)當(dāng)依照或者比照刑法第一百八十八條的規(guī)定追究刑事責(zé)任:
(一)國(guó)家工作人員,無論是否司法工作人員,利用職務(wù)包庇、窩藏走私、套匯、投機(jī)倒把、重大盜竊、販毒、受賄等犯罪分子,隱瞞、掩飾其犯罪事實(shí)的;
(二)對(duì)于走私、套匯、投機(jī)倒把、重大盜竊、販毒、受賄和前項(xiàng)規(guī)定的犯罪人員,有追究責(zé)任的國(guó)家工作人員不依法處理的;
(三)有查禁賣淫、嫖娼活動(dòng)職責(zé)的國(guó)家工作人員,為使犯罪分子逃避處罰,向其通風(fēng)報(bào)信,提供便利的;
(四)國(guó)家工作人員利用職務(wù),對(duì)明知有關(guān)于懲治假冒注冊(cè)商標(biāo)犯罪的補(bǔ)充規(guī)定所列犯罪行為的企業(yè)事業(yè)單位或者個(gè)人,故意包庇,使其不受追訴的;對(duì)上述補(bǔ)充規(guī)定所列犯罪負(fù)有追究責(zé)任的國(guó)家工作人員,不履行法律所規(guī)定的追究職責(zé),應(yīng)當(dāng)比照刑法第一百八十八條規(guī)定追究刑事責(zé)任的;
(五)國(guó)家工作人員利用職務(wù),對(duì)明知犯有關(guān)于懲治生產(chǎn)、銷售偽劣商品犯罪的決定所列犯罪行為的企業(yè)事業(yè)單位或者個(gè)人故意包庇使其不受追訴的;負(fù)有追究責(zé)任的國(guó)家工作人員對(duì)具有上述決定所列犯罪行為的企業(yè)事業(yè)單位或者個(gè)人,不履行法律規(guī)定的追究職責(zé),應(yīng)當(dāng)比照刑法第一百八十八條規(guī)定追究刑事責(zé)任的;
(六)專利局工作人員及有關(guān)國(guó)家工作人員(如專利管理工作人員),詢私舞弊,情節(jié)嚴(yán)重的;
(七)其他法律明確規(guī)定應(yīng)當(dāng)依照或者比照詢私舞弊罪追究刑事責(zé)任的。
三、為牟取單位或小集體不當(dāng)利益而實(shí)施第一、二條行為的,依法追究直接負(fù)責(zé)的主管人員和其他直接責(zé)任人員的刑事責(zé)任。
四、要嚴(yán)格掌握法律規(guī)定各種詢私舞弊行為的構(gòu)成條件和情節(jié)。 確定依法追究詢私舞弊犯罪者的刑事責(zé)任,要綜合考慮行為給國(guó)家、社會(huì)和人民利益造成的損失,給有關(guān)當(dāng)事人的生命、人身、財(cái)產(chǎn)等方面的權(quán)益造成的損失,以及造成的政治影響等方面的情況。情節(jié)顯著輕微、危害不大的,不應(yīng)以拘私舞弊罪追究刑事責(zé)任。對(duì)于由于認(rèn)識(shí)水平、工作能力而造成錯(cuò)案,不應(yīng)以詢私舞弊罪論處。由于隸屬關(guān)系,不得不執(zhí)行上級(jí)錯(cuò)誤指令,造成錯(cuò)案,如果不具有詢私舞弊的共同故意和行為,也不能以佝私舞弊罪追究刑事責(zé)任。
五、與司法工作人員或法律明確規(guī)定依照或比照刑法第一百八十八條規(guī)定追究刑事責(zé)任的人員勾結(jié),伙同進(jìn)行本解釋所列犯罪行為,以共犯追究刑事責(zé)任。
六、犯拘私舞弊罪并有受賄、刑訊逼供等行為構(gòu)成犯罪的,應(yīng)當(dāng)依法按數(shù)罪并罰原則追究刑事責(zé)任。
七、本解釋發(fā)布后辦理的拘私舞弊犯罪案件,按本解釋辦理。本解釋發(fā)布前已按法律規(guī)定處理過的案件,不再變動(dòng)。
尋釁滋事不是濫用權(quán)利。
不管有沒有權(quán)利,素質(zhì)低下道德敗壞的人,都會(huì)犯尋釁滋事的錯(cuò)誤,就是故意找別人的茬,惹是生非。
而濫用權(quán)利是指犯事之人手中有一定的權(quán)利,他才可以濫用,濫用的意思是他沒有在權(quán)利規(guī)定范圍之內(nèi)行使職權(quán),而是超出了權(quán)利范圍給自己或他人謀取私利,從而觸犯了法律。
雖然這兩種行為都是違法犯罪行為,給他人造成損害,給社會(huì)造成不良影響,但本質(zhì)上還是有所不同的。
一手遮天yī shǒu zhē tiān [釋義] 一只手把天遮住。
形容依仗權(quán)勢(shì);玩弄手段;蒙蔽群眾。[語出] 明·張岱《馬士英、阮大鋮傳》:“弦光好酒喜肉;日導(dǎo)以荒淫;毫不省外事;而士英一手遮天;靡所不為矣。” [正音] 一;必須讀作“yì”。[辨形] 手;不能寫作“首”。[近義] 欺君罔世 瞞上欺下 橫行霸道 [用法] 用作貶義。用于掌權(quán)人。一般作賓語、定語。[結(jié)構(gòu)] 主謂式。[例句] 如今人民已當(dāng)家做主;地主老財(cái)~的時(shí)代已一去不復(fù)返了。[英譯] cover the sky with one hand
回答如下:案例一:某省市公安局原局長(zhǎng)李某濫用職權(quán)案
李某曾任某省市公安局局長(zhǎng),在擔(dān)任該職務(wù)期間,他利用職務(wù)之便,收受他人賄賂,違反規(guī)定為他人辦理公務(wù)等。李某的行為已經(jīng)構(gòu)成了濫用職權(quán)罪。
根據(jù)我國(guó)刑法規(guī)定,濫用職權(quán)罪的追訴時(shí)效為10年。但是,由于李某在擔(dān)任公安局局長(zhǎng)期間,他的行為一直沒有被發(fā)現(xiàn)和舉報(bào),直到他離職后才被揭發(fā)。因此,李某的濫用職權(quán)罪追訴時(shí)效應(yīng)從罪行發(fā)現(xiàn)之日起計(jì)算,而不是從他離職之日起計(jì)算。最終,李某因?yàn)E用職權(quán)罪被判處有期徒刑10年。
案例二:某公司總經(jīng)理張某濫用職權(quán)案
張某擔(dān)任某公司總經(jīng)理期間,濫用職權(quán),利用公司的資源收受他人賄賂,違反規(guī)定為他人辦理公務(wù)等。張某的行為已經(jīng)構(gòu)成了濫用職權(quán)罪。
根據(jù)我國(guó)刑法規(guī)定,濫用職權(quán)罪的追訴時(shí)效為10年。但是,由于張某的濫用職權(quán)行為被發(fā)現(xiàn)后,已經(jīng)超過了10年的追訴時(shí)效。因此,張某的案件已經(jīng)屬于過失犯罪,不能再依法追究其刑事責(zé)任。
結(jié)論:
濫用職權(quán)罪的追訴時(shí)效一般為10年,但是在具體的案件中,追訴時(shí)效的計(jì)算方法會(huì)因情況而異。在案件發(fā)現(xiàn)后,應(yīng)該及時(shí)采取措施,盡可能地保留證據(jù),以便在追究刑事責(zé)任時(shí)能夠有效地證明事實(shí),避免因追訴時(shí)效問題導(dǎo)致犯罪嫌疑人逍遙法外。
濫用職權(quán)是行政行為違法的表現(xiàn)之一。行政機(jī)關(guān)的決定,雖然其權(quán)限范圍以內(nèi),但不符合法律授予這種權(quán)力的目的。
行政機(jī)關(guān)不能自由地行使權(quán)力,法律授予行政機(jī)關(guān)權(quán)力是為了服務(wù)于公共利益的目的,以及某個(gè)更為具體、特定的目的,行使權(quán)力必須符合法律所規(guī)定的目的,否則即構(gòu)成違法行為的權(quán)力濫用。
濫用權(quán)力是指行使職權(quán)過程中違反法律法規(guī)、違背公序良俗、損害人民群眾合法權(quán)益等行為。濫用權(quán)力存在以下問題:
1. 侵害人民群眾利益和權(quán)益,損害政府公信力;
2. 導(dǎo)致執(zhí)法不公,破壞司法公正;
3. 阻礙公共資源的公正配置,損害社會(huì)公平正義;
4. 給政府形象帶來負(fù)面影響,造成社會(huì)不滿和不信任。
針對(duì)濫用權(quán)力的問題,需要采取以下措施:
1. 提高執(zhí)法與司法的透明度、公正性和職業(yè)性,通過建設(shè)審判公開、執(zhí)法公開和系統(tǒng)公開,促進(jìn)公眾對(duì)執(zhí)法、司法和維權(quán)過程的監(jiān)督和參與。
2. 加強(qiáng)行政監(jiān)察和司法監(jiān)督,建立健全以監(jiān)察、審判、公檢法合作為主的懲治濫用職權(quán)的機(jī)制,加強(qiáng)執(zhí)法人員和司法人員的職業(yè)道德和專業(yè)素養(yǎng)培訓(xùn)。
3. 優(yōu)化權(quán)力結(jié)構(gòu)和權(quán)責(zé)關(guān)系,加強(qiáng)權(quán)力制約和監(jiān)督,根據(jù)權(quán)力性質(zhì)和范圍,各司其職、相互獨(dú)立,避免權(quán)力過度集中,造成濫用職權(quán)的機(jī)會(huì)和空間。
4. 健全權(quán)力問責(zé)機(jī)制,完善責(zé)任追究、紀(jì)律處分和法律救濟(jì)等制度,使濫用職權(quán)者受到懲罰和警示,保護(hù)人民群眾的合法權(quán)益和社會(huì)公共利益。
在許多公司中,領(lǐng)導(dǎo)擁有較高的權(quán)力和特權(quán),他們應(yīng)該充當(dāng)榜樣,保持公平和透明。然而,有些領(lǐng)導(dǎo)卻濫用自己的職權(quán),侵犯員工的隱私。其中一種常見的行為就是亂動(dòng)別人的電腦。這種行為不僅侵犯了員工的個(gè)人隱私,還對(duì)工作環(huán)境和員工之間的信任關(guān)系產(chǎn)生了嚴(yán)重的負(fù)面影響。
公司領(lǐng)導(dǎo)亂動(dòng)別人電腦的行為可以包括以下幾個(gè)方面:
這種濫用行為會(huì)給員工和工作環(huán)境帶來很多問題,包括:
為了解決公司領(lǐng)導(dǎo)濫用權(quán)力亂動(dòng)別人電腦的問題,建議以下幾點(diǎn):
公司領(lǐng)導(dǎo)濫用權(quán)力亂動(dòng)別人電腦的行為嚴(yán)重侵犯了員工的個(gè)人隱私和工作權(quán)益。為了維護(hù)一個(gè)健康的工作環(huán)境,公司應(yīng)該加強(qiáng)法律的保護(hù),加強(qiáng)員工教育和培訓(xùn),建立有效的投訴渠道,并扎根道德和職業(yè)道德的基礎(chǔ)。只有這樣,才能構(gòu)建一個(gè)公平、透明和信任的工作環(huá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)行分類。
接下來貼下我的代碼實(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)行分類。
這三步,代碼我就一次全貼出來;主要是兩個(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("文件序列化失?。?#34;);
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)練模型失?。?#34;);
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());
}
}