科技制作樸素貝葉斯文本分類系統(tǒng)_第1頁
科技制作樸素貝葉斯文本分類系統(tǒng)_第2頁
科技制作樸素貝葉斯文本分類系統(tǒng)_第3頁
科技制作樸素貝葉斯文本分類系統(tǒng)_第4頁
科技制作樸素貝葉斯文本分類系統(tǒng)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

科技制作課程設計報告方案名稱基于樸素貝葉斯算法的文本分類系統(tǒng)學院網絡與信息安全學院專業(yè)網絡工程學生姓名*****學號15180********目錄TOC\o"1-5"\h\z\o"CurrentDocument"第一章方案背景與意義1\o"CurrentDocument"1.1方案背景1\o"CurrentDocument"1.2方案意義2\o"CurrentDocument"第二章方案原理2\o"CurrentDocument"2.1數學原理2\o"CurrentDocument"2.2樸素貝葉斯算法原理2\o"CurrentDocument"2.3改進方法3\o"CurrentDocument"第三章方案基本流程4\o"CurrentDocument"3.1文本分類的流程4\o"CurrentDocument"3.2數據清洗4\o"CurrentDocument"3.3中文切詞4\o"CurrentDocument"3.4刪除停用詞4\o"CurrentDocument"3.5文本向量化表示5\o"CurrentDocument"3.6文本特征選擇6\o"CurrentDocument"3.7特征權重計算6\o"CurrentDocument"3.8構造分類器模型7\o"CurrentDocument"3.9分類器效果測試7\o"CurrentDocument"第四章方案實現過程及結果8\o"CurrentDocument"4.1數據集選擇8\o"CurrentDocument"4.2中文分詞9\o"CurrentDocument"4.3數據集變量表示9\o"CurrentDocument"4.4結構化表示-向量空間模型10\o"CurrentDocument"4.5構建分類器11\o"CurrentDocument"4.6提升分類器性能12\o"CurrentDocument"第五章實驗總結與收獲13\o"CurrentDocument"附錄14第一章方案背景與意義1.1方案背景近現代以來電子信息技術的高速發(fā)展以及國家對網絡的建設使得越來越多的人可以接觸到互聯網,特別是近幾年移動互聯網的爆發(fā)更是使每年產生的數據信息量呈指數級增長。2004年,全球數據信息總量是30EB,隨后,2005年則達到了50EB,2006年達到了161EB,到2015年,居然達到了驚人的7900EB,到2020年,將達到44000EB。信息的存儲方法也由過去的紙質存儲變?yōu)楝F在的電子信息存儲,面對如此海量的信息,用戶如何從海量數據中快速獲得目標數據就顯得尤為重要。企業(yè)將大量數據進行快速精確的分類更有利于獲取商業(yè)利益。由此誕生了通過算法來自動進行文本分類的方法?!龀瘮祿痦崳ㄉ彛﹫DL1全球數據總量1.2方案意義因特網中的數據主要包含文本、音頻、圖片幾大類數據類型,但主要以文本信息為主,因此分類數據信息的關鍵就是分類文本類信息。通過使用文本分類技術可以自動分類垃圾郵件垃圾短信等文本信息,可以大大提高工作效率。文本分類是指計算機在一定的數學基礎之上通過某種自動分類的算法實現對給定文本信息進行自動分類的過程,這種方法可以使人們充分的發(fā)掘文本的信息價值,利用文本中的信息。文本分類技術在企業(yè)和政府工作中有重要的意義,可以大大節(jié)約人力成本并提高準確率,它可以利用在比如新聞主題分類中:根據文章的內容來給新聞確定一個主題比如財經類、體育類、軍事類等等,還可以用于情感分析比如正面和負面兩種,在信息檢索領域同樣有著很高的地位,通過對文本的快速分類可以大大提高檢索速度。其它相關的應用領域還有輿情分析、郵件過濾等。第二章方案原理2.1數學原理貝葉斯公式如下:(2.1)P(A)稱為"先驗概率",之所以稱之為“先驗”,是因為它不考慮任何B方面的影響。P(AIB)表示"后驗概率",也就是在事件B發(fā)生之后對事件A概率的重新判斷°P(BIA)/P(B)表示"可能性函數",可以當成調整因子,它使得預估概率更加接近真實概率。因此條件概率可以理解為:后驗概率=先驗概率*調整因子。如果"可能性函數">1,意味著"先驗概率"被增強,事件A的發(fā)生的可能性變大;如果"可能性函數"<1,意味著"先驗概率"被削弱,事件A的可能性變??;如果"可能性函數"二1,意味著B事件無助于判斷事件A的可能性。2.2樸素貝葉斯算法原理現有數據集表示為D={DpD2,D3,…,Dn},即有n個待分類文本;每一個文本的屬性集表示為X={X],X2,X3,…,Xm},即表示每個文本有m個單詞特征;類標簽Y={Y1,Y2,Y3,…,Yd},表示可以將數據集D自動分類到Yd個類別中。將X和Y視為隨機變量.,對于文本向量X,對其進行分類,預測目標為找到類標簽k,使得計算公式P(Y=klX)=P(XIY=k)P(Y=k)/P(X)取最大。對于一個樣本,先驗概率P(X)的取值不變,因此預測P(Y=kIX)的最大值等價于預測P(XIY=k)P(Y=k)的最大值。條件獨立性簡化了P(XIY=k)的估計為P(X|Y=k)=P(X1,X2,...,XmIY=k)=P(X1IY=k)-P(X2|Y=k)_p(XmIY=k)。估計上述等式一般采用極大似然估計。類別特征類別特征類別(2.2)特征2.3改進方法雖然樸素貝葉斯算法的確有著很好的分類優(yōu)勢,但是如果直接將上述公式應用于實際還是有很多的問題。貝葉斯公式分子為一個乘法公式,要計算多個特征詞概率的乘積以獲得文檔屬于某個類別的概率,P(XmIY=k)表示在類別標簽為k的情況下特征詞為Xm的概率,顯然當訓練集中至少有一個特征詞沒和類別標簽一起出現時,那么這個概率P(XmIY=k)結果為0,從而整個分子為0,導致整個結果為0,這顯然是不合理的。因為即使訓練集足夠大,可能也不一定能全部包含測試集中的所有特征詞匯。為了降低這種情況的影響,可以將所有詞的出現數初始化為1,當數據集很大時,1并不會對結果產生質的變化。這種做法就叫拉普拉斯平滑(LaplaceSmoothing),這是一種比較常用的解決平滑問題的方法,就是為了解決0概率的問題。除了零概率問題另一個問題就是下溢出,這是由于很多非常小的數相乘造成的。當我們計算一個乘積時,如果絕大部分因子都非常小,那么最后的結果也會變得很小,最終導致下溢出甚至結果錯誤。通常我們可以對乘積的最終結果取自然對數,從而避免浮點數舍入導致的錯誤和下溢出問題。與此同時,采用自然對數處理并不會有任何損失。圖2.1為函數f(x)和ln(f(x))的曲線圖,可以看出這兩條曲線在相同區(qū)域內單調性相同,并且在相同的點取極值。第三章方案基本流程3.1文本分類的流程文本分類過程主要包括下列幾個步驟:數據清洗、中文切詞、去除停用詞、文本向量化表示、文本特征選擇、特征權重計算、構造分類模型和分類效果測試等步驟。3.2數據清洗數據清洗是文本分類任務的開端,是后面步驟進行的基礎,也是提升文本分類效率的必須操作。我們一般獲取原始數據的方式都是從網頁上獲取,或者直接通過爬蟲技術獲取,通常得到的數據稱為原始數據。在進行文本分類時是利用文本中具有代表意義的詞來進行分類的,而這些標簽對于文本分類沒有任何作用,反而還會增加詞向量的維度。因此這些標簽被稱之為“非法字符”,所以在數據清洗階段要去除這些標簽。除此之外,文本中的標點符號、數字、URL鏈接等所帶的信息量很少,對最終文本分類效果的影響很小,所以通常為了訓練模型的速度常常將這類非法字符去除。3.3中文切詞英文的句子各個單詞之間以空格分開,可以很容易的得到特征詞。但是對于中文文本,一個句子是由一系列的獨立的字,而通常一個詞語由幾個字來組成,之間并沒有空格來分隔。因此只有進行人為分詞,才可以進行下一步操作。中文分詞就是將文本數據劃分為一個單詞集合,使之可以最大程度表示這個文本的語義。漢語博大精深,有很多一詞多義,不同單詞在不同語句中意思不同,斷句方式也不盡相同。因此對中文文本進行分詞操作是非常復雜的,同時分詞結果的好壞對于最終分類器和預測結果的影響是很大的。目前中文分詞主要有三種方法:機械分詞法,基于數學概率統(tǒng)計的分詞方法,基于語義理解的分詞方法。3.4刪除停用詞無論是中文還是英文,文本中都一定含有一些對分類毫無意義的詞語,如語氣詞“嗎、吧、啊”和人稱代詞“你、他、他們、我們”等詞語,這類詞稱之為停用詞。這類停用詞對文本主題沒有任何作用,去除停用詞可以降低待處理單詞量,減少特征向量的維度從而可以提高代碼的運行速度,提高分類效率和準確率。刪除停用詞通常都是由人工根據在相關領域的經驗構建一個停用詞表,通過導入停用詞表來去除停用詞。停用詞庫的好壞影響著分類的效率。3.5文本向量化表示原始文本數據是非結構化的,為了使計算機可以識別,需將其轉化為二進制形式的結構化文本。通常進行文本表示有兩種模型:向量空間模型(VSM)和布爾模型。向量空間模型(VSM)起源于上世紀60年代,最先在SMART信息檢索系統(tǒng)有相關應用。區(qū)別于布爾模型最大的特點就是每個特征項的權值為0-1之間的一個值。VSM的核心思想是用待分類文本中的一些特殊詞用作索引并為每個索引賦值表示它的權重,通過對比索引的大小就可以區(qū)分不同的文本。所有的文本數據集可以表示為D={d1,d2,d3,...,di},di表示一個文本,所有的特性項表示為一個特征集T={t1,t2,t3,...,ti},對于特征集中的每一個特征項有對應的權值,對應權值集為W={w1,w2,w3,...,wi},這樣一來,對于文本數據集中的每一個文本都已可以用一個權值的向量來表示,權值可以表示每一個詞對這個文檔的影響程度??梢钥闯觯蛄靠臻g模型不關注特征詞在文檔中的位置,而是統(tǒng)計各特征詞出現的次數。因此向量空間模型表示的文檔比布爾模型表示的更加精確。3.6文本特征選擇對初始文本進行分詞之后得到的就是初步的特征集,但是這個集合肯定非常大,即特征向量太大,而且并非所有的詞都是有用的詞,有些詞語對文本分類沒有任何意義。在停用詞的去除階段已經處理了一些無關緊要的詞語來降低維度。特征選擇就是選擇那些可以很好表示文檔特性的詞語作為特征詞,而無關的詞語則剔除掉以降低特征向量的維度,這樣不僅可以提升分類效率,而且可以提升分類的準確度。如何確定哪些詞語是“無用”的,需要有一個評估標準,因此我們需要一個評估函數來對所有的詞語進行權重計算,然后通過降序選擇出比較合適的特征集。3.7特征權重計算特征權重是體現特征項重要性的一組數據,是判斷區(qū)分能力的級別。特征選擇通常需要一個評估標準,而在文本分類中最長使用的是用詞頻-逆文檔頻率TF-IDF(termfrequency-inversedocumentfrequency)。某一單詞的重要性與它在某一文檔中出現的次數成正比,與這個詞在所有文檔中出現的次數成反比。TF即詞頻,表示單詞在某一文檔中出現的頻率。計算公式如下:其中TFd,t代表詞匯t在文本d中出現的頻率,nd,t代表詞匯t在文本d中出現的次數,Zknd,k代表文檔d中所包含的特征詞的總個數。IDF即逆文檔頻率,用來表示某一特征詞在所有待分類文本數據中的普遍程度。用總的文檔數除以包含指定特征詞的文檔數,可以體現出某個特征詞對文檔的區(qū)分能力。計算公式如下:其中IDFt代表特征詞t的逆文檔頻率,|D|代表總的文檔數,1+DFt代表包含特征詞t的文檔數量。TF-IDF的計算公式如下:以TFIDFd,t來表示文檔d中詞匯t的特征權重。通過對權重進行降序排序,可以選取權重較大的特征詞作為特征。3.8構造分類器模型構造分類器模型是文本分類問題的核心。通過訓練集的TF-IDF空間模型訓練出分類器,然后對分類器進行性能評估之后就可以進行分類了。本文主要講解構建樸素貝葉斯分類器,樸素貝葉斯算法是基于貝葉斯定理和條件獨立性假設的分類方法,根據貝葉斯公式:特征選擇之后,所有的文本被表示為特征向量X(x1,x2,…,xn),分類器的作用就是根據特征向量X(x1,x2,…,xn)將對應的文本歸類到它概率最大的所屬的類別中。類別集合為C(c1,c2,…,cm)表示總共有m個類別。實際上就是利用貝葉斯公式計算向量X(x1,x2,…,xn)分別屬于C(c1,c2,…,cm)中各個類別的概率,值記為P1,P2,…,Pm,概率值最大的那個就是文本X所屬的類別。對于給定的輸入x,利用貝葉斯公式求出最大的后驗概率記為y。由于分母為全概率值不變,故求Pi的最大值等價于求上式分子的最大值。3.9分類器效果測試通常我們將數據集劃分為兩部分,一部分用于訓練,而另一部分則用于測試分類效果。將利用測試文本得到的測試值與真實值進行對比計算出相應的指標。對于二元分類問題,比如垃圾短信和垃圾郵件的分類,通常使用準確率、召回率和F值來評估分類器性能。(1)準確率準確率是分類器正確判斷為該類的樣本數除以分類器判斷屬于該類的樣本總數(包括正確判斷的和誤判的)所得的結果。計算公式如下:分類的正確文本數實際分類的文本數⑵召回率召回率是分類器正確判斷為該類的樣本數除以該類本來含有的所有樣本總數。計算公式如下:分類的正確文本數應有文本數⑶F值通常希望準確率越高越好,同時召回率也越高越好,但實際上這兩者是矛盾的。如果準確率高的話那么召回率就低,因此需要一個值來綜合考慮,最常見的就是用F值來評估。F值即為準確率和召回率的調和平均值,計算公式如下:(4)混淆矩陣使用混淆矩陣來計算上述幾個指標較為方便,可以結合Python的sklearn和seaborn庫傳入預測標簽和實際標簽即可畫出清晰的混淆矩陣?;煜仃嚾绫?.1所示。表3.1混淆矩陣真實情況正例負例預測情況正例AB負例CD第四章方案實現過程及結果4.1數據集選擇本文主要以復旦大學李榮陸老師提供的語料庫作為實驗。該數據集的下載地址是:/download/xjhan/10749218,文件大小187MB。數據集包含訓練集和測試集兩個部分,都包含20個類別,分別為“藝術”、“體育”、“教育”、“法律”等20個類別的刊文,不同分類有不同的文件夾,每一個文本獨立為一個txt文件。為了降低運行時間,本文選取其中的11個類別進行分類測試。經過計算,訓練集包含7738篇文章,測試集包含7752篇文章,訓練集和測試集基本按照1:1的比例來劃分。訓練集目錄:./corpus/train_corpus,測試集目錄:./corpus/test_corpus。實驗環(huán)境選擇:Windows10、Anaconda中文分詞中文分詞的難點就在于如何進行分詞,而最近幾年國內有很多學者研究了很多中文分詞方法,現在比較好的分詞算法都是基于條件隨機場(CRF)來實現的?,F在已經有了很多的開源分詞工具,比如'Jieba”“SnowNLP”等。在實際分類中即使我們對分詞算法不是很了解,我們可以直接使用相關庫來實現,Python的第三方庫Jieba(基于條件隨機場)對于中文分詞就有著很好的表現。本文所使用的是jieba分詞工具的精確模式來分詞。除了分詞外,數字標點符號等對分類無用的信息也需要去除,我將這些無用符號添加到了停用詞文件“stopwords.txt”中,停用詞的去除既可以在分詞階段執(zhí)行,也可以在構建向量空間模型時去除。對訓練集和測試集都進行分詞操作,分詞后的結果放在文件夾./corpus/train_corpus_seg和./corpus/test_corpus_seg中。某一計算機類文本分詞結果如圖4.1所示,各個單詞之間用空格分開。圖4.2和圖4.3分別為軍事類和政治類文本的詞云,通過詞云可以直觀地發(fā)現軍事類文本含有“雷達”“導彈”等詞匯較多,而政治類文本則含有“社會”“發(fā)展”等詞匯較多,正式利用這些具有特征詞匯對文本進行分類。訂?件機叼火堵技木防火幡系統(tǒng)設汁本支防火堵系統(tǒng)沏相換木分析捉由防火墻系統(tǒng).總年設計忠怛改訂??,擔過渣技木代理技術好份技盅和姑臺也用防火堆毒it過就技術ft?技*身俗驗江昉大垮世界普足網懦安全爭得愈來愈橙入而榆慘改職肝基統(tǒng)K[據維護私用網帝計算機資源授役防火蜻系茨?修(JiX昉火墻技成片析琴考橫俱斯火若化代分為耐X羹-美逐立網坪^過泄枝求昉火墻另一糞鹿立應出房代理技術防火瑞過迂技木陸火瑞過譴掛求KT火墻網絡屋的火墻作用J-7過袖!昨由攜相珪原理.到達過旋序ill器過花路由黑但頭株忘包頭協議花坦德地址H的地址端口耳目的皓口號標志峋息過濁踏由器債先制訂過渡規(guī)扁粗告阻寤對包過請核心過潭壩JM(WiT謠接熟構知圈防火堵姑術優(yōu)山簡氓透明恥速畦網熱杵能芯匝?成點正確建立管卻過訝如州函推姓王市止削琵燈忻咬證對匪過迷蹄由器斯火墻累魏述接縮構代理技術防火堵代理技術防火堵應用盡防火墻作用向用羅概心運行防火堵主機代理IK務鄂過理I叫絡用戶E能代婢股鉀器史際I-精定網絡應用謠接兩個網涪網憑一神成Hi舊行代理外梆網話內都網絡之間注更連蒞代理花瓶仇部網常按定代理雁答掘出服務必未拒鴕外怫網絡連掖連援絆構山圈防火墻技術世.如揮甜池舊圖4.1計算機類別下一個文本的分詞結果130圖4.2軍事類文本詞云圖4.3政治類文本詞云4.3數據集變量表示圖4.1計算機類別下一個文本的分詞結果130圖4.2軍事類文本詞云圖4.3政治類文本詞云現在為止數據是以一個個txt文本的形式存放在各類別文件夾中,不方便程序使用。因此我們需要將所有的數據表示為變量并保存在一個文件中,這樣后續(xù)就不用每次都遍歷所有文件。我們采用的是Scikit-Learn庫中的Bunch數據結構來表示這兩個數據集。Bunch相當于Python中的字典,可以將數據一條一條的顯示出來。如下圖直觀表示:ra^qet_name■filenamesl=ibelrDFlteitsarLtrain_ccn:u^_5eai'art/21txt努力劉作更丟敢無羹=偉大時代train-COfpuSL&eo/art/22txtsrt■關干垮昆至識釣忌者iramcoreusseo/arr/N3.1x1art■■-無非是指西方空滸責達匡素,■-compuse<traincorpu=_sea/Eornput曰邛1l.txtccmnuter■■■■tHiJLCJ■■-t^ain_i:orDU=^SE口/匚lieputcomputer……皿蕓祥建設含三的……irain_ccirDUSw日wfonnmuccrncliter-取決于?舌ecanomict^ir\_corpLJ^ea.-ecanonMc/SL.ts<ieconon'-iicVain_coraus_seo/*&c0noriiic;62.lj<iecofiomictrain_corDU5_seQ^e€oriomic/63.t;<ceconomicsportstrain_ccrpu5__E,E-q.|rsport^'1-D1txtsqnrtstra1D2t>rtefartstrdin_corpu5L_s&g.i!5ports*,lC3txtsports圖4.4Bunch數據結構實際上就是第一列為類別,也就是分類類別集合,設為target_name,第二列為文本文件名,設為filenames,第三列為文本標簽,即對應每一個文本有一個類別標簽,第四列為文本內容記為contents,即分詞后的文本,實際上就是一行詞袋。Bunch對象里包含四個成員,為4個list類型。完成后存儲路徑為:./corpus/test_word_bag/test_set.dat。4.4結構化表示-向量空間模型上一節(jié)中實現了數據集的變量表示,這一節(jié)需要建立向量空間模型。就是將所有的句子表示在一個空間坐標中,坐標軸就是上一節(jié)得到的詞袋。為了節(jié)省空間,提升效率,首先要將文本中的垃圾詞匯去掉,就是語氣詞標點符號和數字等,這些對分類沒有意義。將這些詞都添加在停用詞表中,通過引用停用詞表去除。接下來的代碼就是構建詞典和權重矩陣tdm,權重矩陣是一個二維矩陣,tdm[i][j]表示第j個詞在第i個類別中的TF-IDF值。下面代碼會生成詞向量空間并存儲在"./corpus/train_word_bag/tfidfspace.dat"中。TfidfVectorizer中的幾個參數這里說明一下:stop_words傳入停用詞去除噪音;sublinear_tf指在計算tf值時采用亞線性策略,比如以前tf是詞頻,現在用1+log(tf)來充當詞頻;smooth_idf是指在計算idf時會出現分母為0的情況,smooth_idf會采用平滑策略來避免,默認開啟;有些單詞的文檔頻率太高,比如每篇文章都會有這個詞,那么這個詞對于分類也就沒有了意義,因此我們設置一個閾值來確定哪些詞對分類無用,實際就是臨時停用詞,我們用max_df來表示這個閾值。除此之外還可以設置min_df表示去除那些出現頻率極低的詞語,那些詞同樣對分類沒有意義。如圖4.5所示,這一類文本中含有大量的“文獻號”“原文出處”“原期刊號”等頻率超高的詞匯,這些詞并不會出現在停用詞表中,但是他們對分類毫無意義,因此可以設置max_idf=0.8將這些詞去除。而“因此”“但是”這種表轉折、語氣、人稱等常用詞則會通常在停用詞列表中去除。就前法復卬期.號攝?械枝明5狠雙獻方螫黑普重壺閾地蒼原刊炸買淄■但是紋*金洌如第三就前法復卬期.號攝?械枝明5狠雙獻方螫黑普重壺閾地蒼原刊炸買淄■但是紋*金洌如第三-ym碓搭部濾原頊號卷/罄號二*總!;圖4.5一類文本包含大量無用的詞構建分類器階段我使用的樸素貝葉斯分類器,關于樸素貝葉斯算法的原理前文都有論述。MultinomialNB會根據訓練集的權重矩陣和標簽進行訓練,然后根據測試集的權重矩陣進行預測輸出預測標簽。將預測后的結果存儲在result.csv文件中,并用1表示分類正確,0表示分類錯誤,部分結果如圖4.6所示。預測出后將預測標簽與實際標簽進行對比即可算出精確度、召回率、F值等評估分類器性能的參數??梢姷谝淮畏诸惖男Ч⒉焕硐?,F值僅為0.910,因此需要對相關參數進行修改,分詞的結果和TF-IDF的閾值等都對分類效果有很大的影響。文件名實際類別預測類別是否淮酢./corcus/iestcorpussea/C19-Coriwuter/C19-C0mputerOO31.txtC19-ComputerC19-ComDUter1,/corpus/iesLcorcus_seg/Cl9-Ccnwuter/Cl9-Coniauter0032.txtC19-ConiouterClS-Cornuuier1,/corpus/iesccorpus_seg/Cl9-Computer/Cl9-Computer0034.LxtC19-ComputerC19-Computer1,/corpus/lesLcorpU5_seg/Cl9-Ccmputer/Cl9-Comput&rCODfi.LxtC19-ComputerC19-Computer1,/corpus/lesLcorpU5_seg/Cl9-Computer/Cl9-Comput&rC038.LxtC19-ComputerC19-Computer1,/corpus/lesLcorpU5_seg/Cl9-Computer/C19-Comput&rOOlO.txtC19-ComputerC19-Computer1,/corpu5/test_corpus_s&g/Cl9-Computer/C19-Computer00L2.ixtCIS-ComputerCIS-Computer1,/corpu5/test_corpus_s&g/Cl9-Computer/Cl9-Computer00L4.D(tC19-ComputerC19-Computer1,/corpus/test_corpus_seg/Cl9Ccmputer/Cl9ComputerOOLB.ixtCl9ComputerCISComputer1,/corpus/test_corpU5_seg/Cl9Ccmputer/Cl9ComputerOOlS.ixtCl9ComputerCISComputer1,/corpu5/tes1_corpU3_seg/Cl9Ccmputer/Cl9ComputerOOSO.ixtCl9ComputerCl9Computer1,/corpus^test_corpus_seg/Cl9Ccmputer/Cl9Computer0022.txtCl9ComputerCISComputer1,/corpus/test_corpus_seg/Cl9-Ccmputer/Cl9Computer0024.ixtCl9ComputerCISComputer1Jcorpus^te5t_corpus_s&g/C19-Computer/Cl9-Comput&r0026.txtC19-ComputerCIS-Computer1,/corpus/test_corpus_s&g/Cl9-Computer/Cl9-Comput&r0028.ixtC19-ComputerC19-Computer1,/corpUE/teEt_corpU£_s&g/Cl9-Computer/Cl9-Comput&rOOSO.ixtC19-ComputerC19-Computer1,/corpuE/test_corpu5_seg/Cl9-Computer/Cl9-Computer0032.zxtC19-ComputerC19-Computer1,/corpus/test_corpus_s?g/Cl9-Computer/Cl。-ComputerOOSd.zxtC19-ComputerC19-Computer17corpus/test_corpus_s?g/Cl9-Computer/Cl9-Comput&r0036.zxtC19-ComputerC19-Computer1,/corpuE/tesLcQirius_seg/Cl9-Comput?r/Cl9-Compuit7?r003B.txtC19-ComputerC19-Computer1圖4.6部分分類結果截圖4.6提升分類器性能第一次預測結果的F1值為0.91,準確率為0.921,召回率為0.917,我們可以嘗試通過調試參數進一步提升分類效果。影響準確率的參數主要有分類器部分的alpha值以及tf-idf模型構建階段的max_df或min_df,分詞效果的好壞對結果的影響也很大,因此如果對結果要求很高的話盡量選擇自己構建分詞庫。通常情況下alpha值設置越小,迭代次數越多,精確率越高,通過實驗比較,當alpha值設為0.0005,max_df設為0.8時,分類器表現效果最好,準確率達到0.932,召回率達到0.931,F值為0.930,表現效果相比最初要好一些。在TfidfVectorizer中配置的n-gram也會提高分類器效果,ngram-range表示詞組切分的長度范圍,通過設置ngram-range=(1,2)后使得分類效果進一步提升,設置n-gram會使模型參數變得很大,分類速度也會降低,但是會提升一定的準確率。準確率為0.943,召回率為0.942,F1值為0.939。顯然,此時分類器的表現效果良好,分類結果報告如表4.1所示。除此之外,如果還需要提升分類效果可以自定義分詞庫。由結果可以觀察出當某一類文本數量較少時,這一類的召回率就偏低,從而導致F1值偏低。表4.1樸素貝葉斯算法分類報告1.precisionrecallf1-scoresupport2.3.C19-Computer0.9920.9720.98213574.C23-Mine1.0000.2650.419345.C29-Transport0.9230.6100.735596.C31-Enviornment0.9850.9470.96612187.C32-Agriculture0.9130.9580.93510228.C34-Economy0.9020.9490.92516019.C35-Law0.8390.5000.6275210.C36-Medical0.9440.3210.4795311.C37-Military0.8600.5660.6837612.C38-Politics0.9130.9580.935102613.C39-Sports0.9580.9700.964125414.15.avg/total0.9430.9420.9397752第五章實驗總結與收獲這次科技制作主要研究了利用樸素貝葉斯算法對中文進行分類,并且對于英文文本分類和中文文本分類的區(qū)別進行了相關介紹。首先對樸素貝葉斯公式進行了推導,闡述了利用樸素貝葉斯算法進行文本分類的數學原理。接著第三章詳細研究了文本分類的各個關鍵技術過程,包括分詞方法和向量空間模型以及特征權重的計算方法等。在深入研究了樸素貝葉斯算法原理和相關的文本分類技術后,用Python語言對復旦大學數據集進行了實驗操作,并且對實驗進行改進。最終對實驗結果進行分析對比,表明在使用樸素貝葉斯算法進行文本分類時,優(yōu)點是不僅算法簡單,計算復雜度小,而且可以達到很好的分類效果,缺點是文本必須要滿足條件獨立性假設,這在實際中是不成立的。本次完成的文本分類系統(tǒng)可以對中文文本進行分類,可以應用在很多有需求的領域,因此本次的實驗具有很好的實際意義。附錄文本實驗部分所用主要代碼及結果如下:導入訓練集和測試集importsysimportosdirl="./corpus/train_corpus”dir2="./corpus/test_corpus”defgetNum(dir):dirs=os.listdir(dir)num=0foritemindirs:num=num+len(os.listdir(dir+'/'+item))returnnumprint("訓練集文檔數:",getNum(dir1))print("測試集文檔數:”,getNum(dir2))13訓練集文檔數:773814測試集文檔數:7752中文分詞階段'''''去掉一些停用詞、數字、特殊符號'''defrm_tokens(words,stopword_path):words_list=list(words)stwlist=readfile(stopword_path).decode().splitlines()foriinrange(words_list.__len__())[::-1]:word=words_list[i]iflen(word)==1:#去除單個字符words_list.pop(i)elifword=="”:#去除空字符words_list.pop(i)elifwordinstwlist:#去除停用詞words_list.pop(i)returnwords_listdefcorpus_segment(corpus_path,seg_path,stopword_path):importrecatelist=os.listdir(corpus_path)print("分詞中...”)formydirincatelist:class_path=corpus_path+mydir+"/"seg_dir=seg_path+mydir+"/"ifnotos.path.exists(seg_dir):

os.makedirs(seg_dir)file_list=os.listdir(class_path)forfile_nameinfile_list:file_path=class_path+file_name#txt文件的路徑content=readfile(file_path)r1='[a-zA-Z0-9’!"#$%&\'()*+,-./:;;<=>?()@,=。?★、...【】《》?"”‘’![\\]人_、{1}?]+'content=re.sub(r1,'',content.decode())content=content.replace('\r\n',"").strip()#刪除換行content_seg=jieba.cut(content)content_seg=rm_tokens(content_seg,stopword_path)savefile(seg_dir+file_name,”".join(content_seg).encode('utf-8'))print("分詞結束”)3.構建Bunch對象結構importpicklefromsklearn.datasets.baseimportBunchdefcorpus2Bunch(wordbag_path,seg_path):catelist=os.listdir(seg_path)print("構建文本對象開始...”)bunch=Bunch(target_name=[],label=[],filenames=[],contents=[])bunch.target_name.extend(catelist)formydirincatelist:class_path=seg_path+mydir+"/"file_list=os.listdir(class_path)forfile__nameinfile_list:fullname=class_path+file_namebunch.label.append(mydir)bunch.filenames.append(fullname)bunch

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論