本次實驗將加載兩個數據,壹個是已經標註好的用戶評論數據,另外壹個是用戶評價主題句,通過標註過的用戶評論數據進行基於集成模型的情感極性模型訓練,然後利用模型對主題句進行情感極性推理,最後通過數據聚合可視化得出主題情感極性。
使用 Pandas 加載在線數據表格,並查看數據維度和前 5 行數據。
數據屬性如下表所示
加載我們之前通過主題詞典提取出來的主題句。
數據屬性如下表所示
用戶評論分詞
jieba 分詞器預熱,第壹次使用需要加載字典和緩存,通過結果看出返回的是分詞的列表。
批量對用戶評價進行分詞,需要壹些時間,並打印第壹行情感極性訓練集的分詞結果。
批量對用戶評價主題句進行分詞,並打印第壹句用戶主題句分詞結果。
依據統計學模型假設,假設用戶評論中的詞語之間相互獨立,用戶評價中的每壹個詞語都是壹個特征,我們直接使用 TF-IDF 對用戶評價提取特征,並對提取特征後的用戶評價輸入分類模型進行分類,將類別輸出為積極的概率作為用戶極性映射即可。
用戶評論向量化
TF-IDF 是壹種用於信息檢索與數據挖掘的常用加權技術,當某個詞在文章中的TF-IDF越大,那麽壹般而言這個詞在這篇文章的重要性會越高,比較適合對用戶評論中的關鍵詞進行量化。
數據集合劃分
按照訓練集 8 成和測試集 2 成的比例對數據集進行劃分,並檢查劃分之後的數據集數量。
我們在系列實驗的開始使用樸素貝葉斯模型來訓練情感分析模型,下面我們新增邏輯回歸模型作為對比模型。邏輯回歸(Logistic Regression)是壹種用於解決二分類問題的機器學習方法,在線性回歸的基礎上,套用了壹個 sigmod 函數,這個函數將線性結果映射到壹個概率區間,並且通常以 0.5 分界線,這就使得數據的分類結果都趨向於在 0 和 1 兩端,將用戶評論進行向量化之後也可以用此方式預測用戶情感。本實驗直接對標註過的用戶情感數據進行訓練,並驗證單壹模型和集成模型在情感分析性能上的差異。
模型加載
通過傳入原始的標簽和預測的標簽可以直接將分類器性能進行度量,利用常用的分類模型評價指標對訓練好的模型進行模型評價,accuracy_score 評價被正確預測的樣本占總樣本的比例,Precision 是衡量模型精確率的指標,它是指模型識別出的文檔數與識別的文檔總數的比率,衡量的是模型的查準率。Recall 召回率也稱為敏感度,它是指模型識別出的相關文檔數和文檔庫中所有的相關文檔數的比率,衡量的是檢索系統的查全率,表示正樣本在被正確劃分樣本中所占的比例,f1_score 值是精確率與召回率的調和平均數,是壹個綜合性的指數。
我們分別對不同模型使用相同的數據集進行訓練和測試,以此來比較單模型之間的差異,並打印模型運行時間供大家參考,批量處理不同的模型需要壹些時間進行計算,清耐心等待。
通過求得的指標進行模型評價,我們發現使用相同的數據進行模型訓練,樸素貝葉斯模型和邏輯回歸模型性能基本持平,相差很微弱,邏輯回歸稍稍占壹些優勢。
Stacking 堆棧模型訓練
集成學習是地結合來自兩個或多個基本機器學習算法的優勢,學習如何最好地結合來自多個性能良好的機器學習模型的預測結果,並作出比集成中的任何壹個模型更好的預測。主要分為 Bagging, Boosting 和 Stacking,Stacking 堆棧模型是集成機器學習模型的壹種,具體是將訓練好的所有基模型對整個訓練集進行預測,然後將每個模型輸出的預測結果合並為新的特征,並加以訓練。主要能降低模型的過擬合風險,提高模型的準確度。
開始對兩個模型進行集成訓練,訓練的時間要比單壹模型時間久壹些,清耐心等待。
評測結果收集。
結果分析
將結果存入 Dataframe 進行結果分析,lr 表示邏輯回歸,nb 表示樸素貝葉斯,model_stacking 將兩個單模型集成後的模型。從結果來看集成模型準確度和 f1 值都是最高的,結合兩個模型的優勢,整體預測性能更好,魯棒性更好。
樣例測試
通過測試樣例發現,分類器對正常的積極和消極判斷比較好。但是當我們改變語義信息,情感模型則不能進行識別,模型魯棒性較差。作為早期的文本分類模型,我們使用 TFIDF 的特征提取方式並不能很好的解決語義問題,自然語言是帶有語序和語義的關聯,其詞語之間的關聯關系影響整句話的情感極性,後續我們繼續試驗深度情感分析模型研究解決此類問題。
加載民宿主題數據。
模型預測
將情感分析模型推理的結果寫入 DataFrame 中進行聚合。
單主題聚合分析
挑選壹個主題進行主題情感分析。
對民宿“設施”進行描述統計,此次我們使用主題詞典的出來的用戶關於民宿“設施”主體的討論條數為 4628 條,平均用戶情感極性為 0.40 表示為整體呈現不滿意的情況,有超過壹半的關於“設施”的民宿評論中表現用戶不滿意的情況,重慶民宿需要在“設施”進行改善,以此提高用戶滿意度。
單主題情感極性可視化
我們開始進行“設置”主題下的用戶主題情感進行可視化,首先加載畫圖模塊。
對“設施”主題下的用戶情感極性進行可視化,我們利用集成模型對主題句進行情感極性預測,如下所示。