自然語言處理技術(shù)與應(yīng)用課件:文本分類_第1頁
自然語言處理技術(shù)與應(yīng)用課件:文本分類_第2頁
自然語言處理技術(shù)與應(yīng)用課件:文本分類_第3頁
自然語言處理技術(shù)與應(yīng)用課件:文本分類_第4頁
自然語言處理技術(shù)與應(yīng)用課件:文本分類_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Python文本與語音應(yīng)用設(shè)計文本分類Python文本與語音應(yīng)用設(shè)計實戰(zhàn)案例--基于傳統(tǒng)機器學(xué)習(xí)的新聞文本分類8.2實戰(zhàn)案例--垃圾郵件分類8.3文本分類方法8.1知識目標掌握文本分類的兩種方法及其特點;了解文本分類中常用的特征評分函數(shù);掌握基于傳統(tǒng)機器學(xué)習(xí)文本分類的基本步驟;掌握貝葉斯分類器的訓(xùn)練和測試方法。技能目標能夠使用貝葉斯分類器或SVM進行分類;能夠?qū)崿F(xiàn)文本分類。8.1文本分類方法8.1文本分類方法目前的文本分類方法主要有兩種,分別是基于傳統(tǒng)機器學(xué)習(xí)的方法和基于深度學(xué)習(xí)的方法。8.1.1基于傳統(tǒng)機器學(xué)習(xí)的方法8.18.1.1基于傳統(tǒng)機器學(xué)習(xí)的方法特征工程指的是把原始數(shù)據(jù)轉(zhuǎn)變?yōu)槟P陀?xùn)練數(shù)據(jù)的過程,它的目的就是獲取更好的訓(xùn)練數(shù)據(jù)特征,使得機器學(xué)習(xí)模型的性能得到提升。在機器學(xué)習(xí)中占有非常重要的作用,一般包括特征構(gòu)建、特征提取、特征選擇三個部分。8.18.1.1基于傳統(tǒng)機器學(xué)習(xí)的方法(1)特征提取又包括特征選擇和特征權(quán)重計算。特征選擇旨在從已有候選特征中,選取最有代表性和最具區(qū)分能力的特征,降低特征空間維度,提高分類的效果與效率。特征選擇需要構(gòu)造面向特征的評分函數(shù),對候選特征進行評估,然后保留評分值最高的特征。8.18.1.1基于傳統(tǒng)機器學(xué)習(xí)的方法常用的特征評分函數(shù):文檔頻率(DocumentFrequency,DF):指在整個文本集合中,出現(xiàn)某個特征的文檔的頻率。信息增益(InformationGain):計算新增某個特征后信息熵的變化情況,用以衡量特征的信息量。互信息(Mutualinformation):根據(jù)特征與類別的關(guān)聯(lián)程度來計算特征與類別的相關(guān)度。8.18.1.1基于傳統(tǒng)機器學(xué)習(xí)的方法常用的特征評分函數(shù):卡方統(tǒng)計:計算特征與類別關(guān)聯(lián)關(guān)系的方法。它定義了一系列詞t與類別c之間共現(xiàn)或不同現(xiàn)的統(tǒng)計量(A、B、C、D)。8.18.1.1基于傳統(tǒng)機器學(xué)習(xí)的方法(2)分類器將文本表示為模型可以處理的向量數(shù)據(jù)后,就可以使用機器學(xué)習(xí)模型來進行處理。大部分機器學(xué)習(xí)方法都在文本分類領(lǐng)域有所應(yīng)用,比如貝葉斯分類器(Na?veBayes)、線性分類器(邏輯回歸)、支持向量機(SupportVectorMachine,SVM)、最大熵分類器、KNN等。8.1.2基于深度學(xué)習(xí)的方法8.18.1.2基于深度學(xué)習(xí)的方法基于深度學(xué)習(xí)方法的文本分類通常首先使用詞向量進行文本表示,然后再利用CNN/RNN等網(wǎng)絡(luò)結(jié)構(gòu)自動獲取特征表達能力并進行分類。常用的文本分類網(wǎng)絡(luò)模型有FastText、TextCNN、TextRNN、TextRCNN、DPCNN、BERT、VDCNN等。單元小結(jié)單元小結(jié)本單元主要介紹了文本分類的兩種方法,其中還在基于傳統(tǒng)機器學(xué)習(xí)的方法中介紹了文本分類中常用的特征評分函數(shù),最后對新聞文本分類的兩種方法進行了實現(xiàn),最后介紹了垃圾郵件分類的實現(xiàn)方法,也屬于文本分類,因此和文本分類的流程步驟基本相同。ThankYOU!基于傳統(tǒng)機器學(xué)習(xí)的新聞文本分類目錄1案例目標01任務(wù)案例實施03任務(wù)案例分析02任務(wù)1案例目標案例目標掌握基于傳統(tǒng)機器學(xué)習(xí)新聞文本分類的基本步驟。掌握貝葉斯分類器的訓(xùn)練和測試方法。12案例分析2案例分析這一節(jié)將使用貝葉斯分類器進行文本分類,這里使用的數(shù)據(jù)集為新聞數(shù)據(jù)集,共9類,每類10個文本,如圖8-2所示。其中,C000008表示財經(jīng),C000010表示IT,C000013表示健康,C000014表示體育,C000016表示旅游,C000020表示教育,C000022表示招聘,C000023表示文化,C000024表示軍事。數(shù)據(jù)集組成2案例分析Scikit-Learn庫基本上已經(jīng)實現(xiàn)了所有基本機器學(xué)習(xí)的算法,因此這里使用Scikit-Learn來實現(xiàn)貝葉斯分類器和SVM分類器進行文本分類。在Scikit-Learn中一共有3個樸素貝葉斯的分類算法類,分別是GaussianNB,MultinomialNB和BernoulliNB,它們的先驗概率分別為高斯分布、多項式分布和伯努利分布。本案例使用MultinomialNB進行訓(xùn)練。classsklearn.naive_bayes.MultinominalNB(alpha=1.0,fit_prior=True,class_prior=None)2案例分析方法:fit(X,y[,sample_weight]):訓(xùn)練模型。partial_fit(X,y[,classes,sample_weight]):追加訓(xùn)練模型。該方法主要用于大規(guī)模數(shù)據(jù)集的訓(xùn)練。此時可以將大數(shù)據(jù)集劃分成若干個小數(shù)據(jù)集,然后在這些小數(shù)據(jù)集上連續(xù)調(diào)用partial_fit方法來訓(xùn)練模型。predict(X):用模型進行預(yù)測,返回預(yù)測值。predict_log_proba(X):返回一個數(shù)組,數(shù)組的元素依次是X預(yù)測為各個類別的概率的對數(shù)值。predict_proba(X):返回一個數(shù)組,數(shù)組的元素依次是X預(yù)測為各個類別的概率值。score(X,y[,sample_weight]):返回在(X,y)上預(yù)測的準確率。2案例分析SVM分類器:

sklearn.svm.SVC(C=1.0,kernel='rbf',degree=3,gamma='auto',coef0=0.0,shrinking=True,probability=False,tol=0.001,cache_size=200,class_weight=None,verbose=False,max_iter=-1,decision_function_shape=None,random_state=None)

主要參數(shù):·C:錯誤項的懲罰系數(shù)·kernel:算法中采用的核函數(shù)類型,可選參數(shù)有:'Linear'(線性核函數(shù))、'poly'(多項式核函數(shù))、'rbf'(徑像核函數(shù)/高斯核)、'sigmod'(sigmod核函數(shù))和'precomputed'(核矩陣)。2案例分析SVM分類器:主要參數(shù):degree:指多項式核函數(shù)的階數(shù)n。

gamma:float參數(shù),默認為auto核函數(shù)系數(shù),只對'rbf'、'poly'、'sigmoid'有效。如果gamma為'auto',代表其值為樣本特征數(shù)的倒數(shù),即1/n_features。oef0:核函數(shù)中的獨立項,只有對'poly'和'sigmod'核函數(shù)有用,指其中的參數(shù)c,float參數(shù),默認為0.0。probability:是否啟用概率估計。bool參數(shù),默認為False。必須在調(diào)用fit()之前啟用,會使得fit()方法速度變慢。

shrinking:是否采用啟發(fā)式收縮方式。bool參數(shù),默認為True。

tol:svm停止訓(xùn)練的誤差精度。float參數(shù),默認為1e^-3。

cache_size:指定訓(xùn)練所需要的內(nèi)存,以MB為單位。float參數(shù),默認為200MB。class_weight:字典類型或者'balance'字符串。verbose:是否啟用詳細輸出。bool參數(shù),默認為False。max_iter:最大迭代次數(shù)。int參數(shù),默認為-1表示不限制。random_state:偽隨機數(shù)發(fā)生器的種子,在混洗數(shù)據(jù)時用于概率估計。2案例分析SVC方法:主要參數(shù):fit():用于訓(xùn)練SVM,具體參數(shù)已經(jīng)在定義SVC對象的時候給出了,這時候只需要給出數(shù)據(jù)集X和X對應(yīng)的標簽y即可。predict():基于以上的訓(xùn)練,對預(yù)測樣本T進行類別預(yù)測,因此只需要接收一個測試集T,該函數(shù)返回一個數(shù)組表示測試樣本的類別。predict_proba():返回每個輸入類別的概率,這與predict方法不同,predict方法返回的輸入樣本屬于那個類別,但沒有概率。使用此方法時,需要在初始化時,將probability參數(shù)設(shè)置為True。3案例實施3案例實施部分代碼展示:(1)導(dǎo)入模塊:importosimportrandomimportmathimportjiebafromsklearnimportmodel_selectionfromsklearn.naive_bayesimportMultinomialNBfromsklearn.svmimportfromsklearn.metricsimportclassification_report3案例實施(2)數(shù)據(jù)預(yù)處理:分詞

#對文件夾里的文件夾下的文檔分詞forfolderinfolder_list:new_folder_path=os.path.join(folder_path,folder)files=os.listdir(new_folder_path)forfileinfiles:word_list=[]withopen(os.path.join(new_folder_path,file),'r',encoding='utf-8')asfp:raw=fp.read().strip()raw=raw.replace('\n','').replace('\r','')words_list=jieba.lcut(raw,cut_all=False)#精確模式forwordinwords_list:ifwordnotinstopwordsandlen(word)>1:word_list.append(word)data_list.append(word_list)#data_list存儲所有文檔的精確分詞的詞語label_list.append(folder)#label_list存儲文檔的標簽3案例實施(2)數(shù)據(jù)預(yù)處理:將數(shù)據(jù)集劃分為訓(xùn)練集和驗證集。#劃分訓(xùn)練集和測試集train_data,test_data,train_label,test_label=model_selection.train_test_split(data_list,label_list,test_size=test_size)print('訓(xùn)練集樣本數(shù)量為%d,測試集樣本數(shù)量為%d'%(len(train_data),len(test_label)))returntrain_data,test_data,train_label,test_label3案例實施(3)使用卡方檢驗進行特征選擇:

#統(tǒng)計樣本詞的信息defStatistics(train_data,train_label):classword_dic=dict()classwordlist_dic=dict()#卡方計算公式defChiCalc(a,b,c,d):result=float(pow((a*d-b*c),2))/float((a+c)*(a+b)*(b+d)*(c+d))returnresultdeffeatureSelection(classword_dic,classwordlist_dic,K):'''3案例實施(4)根據(jù)選擇的特征詞,將文本向量化,包含特征詞,則使用1表示,否則表示為0:defTextFeatures(train_data,test_data,feature_words):deftext_features(text,feature_words):text_words=set(text)features=[1ifwordintext_wordselse0forwordinfeature_words]returnfeaturestrain_list=[text_features(text,feature_words)fortextintrain_data]test_list=[text_features(text,feature_words)fortextintest_data]

returntrain_list,test_list3案例實施(5)分類器:先驗為多項式分布的樸素貝葉斯分類器:defBysClassifier(train_list,test_list,train_label,test_label):##貝葉斯分類器classifier=MultinomialNB(alpha=0.01).fit(train_list,train_label)test_accuracy=classifier.score(test_list,test_label)y_pred=classifier.predict(test_list)print("貝葉斯的測試準確率為:",test_accuracy)print(classification_report(test_label,y_pred))3案例實施(5)分類器:SVM分類器:

defSvmClassifier(train_list,test_list,train_label,test_label):svclf=SVC(kernel='linear')classifier=svclf.fit(train_list,train_label)test_accuracy=classifier.score(test_list,test_label)y_pred=classifier.predict(test_list);print("SVM的測試準確率:",test_accuracy)print(classification_report(test_label,y_pred))3案例實施(6)主函數(shù):

if__name__=='__main__':folder_path='./Sample'stopwords_path='./stopwords.txt'#劃分數(shù)據(jù)集train_data,test_data,train_label,test_label=TextProcessing(folder_path,stopwords_

溫馨提示

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

最新文檔

評論

0/150

提交評論