基于Python實現自然語言處理(主題層次的情感分類)

主題層次的情感分類

1 任務及數據集介紹

該項目作業的具體任務是來自于 BDCI2018-汽車行業用戶觀點主題及情感識別的題目。數據是網絡中公開的用戶對汽車相關內容的評價文本。此任務是對每條文本內容(即用戶評論)進行分析,確定該條評論中討論的主題以及每個主題的情感信息,以此獲知用戶對所討論主題的偏好。

其中主題一共分為 10 類:動力、價格、內飾、配置、安全性、外觀、操控、油耗、空間、舒適性。情感分為 3 類:中立、正向、負向,分別用數字 0、1、-1 表示。

訓練集數據一共有 10654 條評論,已由人工進行標注,為 CSV 格式的文件,以逗號分隔,首行為表頭,字段說明如表 1 所示。其中 content_id 與 content 一一對應,但同一條 content 中可能包含多個主題,此時會出現多條記錄來標注不同的主題及情感,因此在整個訓練集中 content_id 存在重復值。

測試數據也為 CSV 格式的文件,首行為表頭,字段有 content_id 和 content,與訓練集對應字段相同。

但由于 BDCI 官網上此比賽已結束,線上提交接口已關閉,我們無法在測試數據對模型進行評估。因此,此次項目作業完全是在訓練數據上進行的。我們將訓練數據按照 8:1:1 的比例劃分成訓練集(8523 條數據)、驗證集(1066 條數據)、測試集(1065 條數據)。

? ? 表1: 訓練集字段說明

字段名稱

類型

描述

說明

content_id

Int

數據 ID

content

String

文本內容

subject

String

主題

分析出的主題

sentiment_value

Int

情感分析

分析出的該主題的情感

該任務采用 F1 值評估指標,按照“主題 + 情感詞”精確匹配的方式,用 Tp 表示判斷正確的數量,Fp 表示判斷錯誤或多判的數量,Fn 表示漏判的數量。則準確率

,召回率

2 相關工作

上述任務是一個主題級別(Aspect-level)的文本情感分類任務,它是情感分類的一個分支,其目標是識別出句子中某個特定主題的情感極性。相比文檔級別的情感分類任務,主題級別的情感分類是更細粒度的分類任務,它可以克服文檔級別情感分類的局限性。尤其是當一篇文本中同時涉及多個主題時,正負的情感極性通常是混雜在一起的,如果忽略主題信息,我們很難確定目標文本的情感極性。比如“great food but the service was dreadful”,在這條用戶對餐廳的評論中同時涉及到了“食物”和“服務”兩個主題,而且用戶在這兩個主題上的評價的情感極性是相反的,如果我們在文本層次進行情感分類,很難說這條文本是正向的,還是負向的,甚至是中性的。

在主題級別的情感分類任務上,目前已有的工作大致可以分為兩類。一類是基于手工提取的特征和機器學習算法的級聯方法,例如 Nasukawa 等人[1]的工作中,首先對句子進行依存句法分析,然后使用預定義的規則確定每個主題的情感極性。Jiang 等人[2]提出,基于句子的語法結構構造一些主題依賴的特征,將這些特征和其他文本內容特征一起作為 SVM 分類器的輸入,從而提高主題依賴的情感分類的準確度。另一類工作是采用端到端的神經網絡模型,使用神經網絡模型可以自動進行表征學習,不需要花費大量時間進行手工工程或者編寫規則。在這類模型中,大多數是基于 LSTM 的網絡架構,因為 LSTM 可以很好地處理像文本這樣的序列數據,而且可以捕捉到長期依賴。例如 Tang 等人[3]提出了 TD-LSTM 的方法,該方法的基本思路是通過兩個 LSTM 網絡分別來建模主題的左、右上下文,然后使用這兩個 LSTM 網絡的輸出的串接進行情感預測。除此之外,近年來的工作中也大量使用注意力機制,它和 LSTM 結合,在很多任務上可以提高網絡性能。例如 Wang 等人[4]提出了 AE-LSTM 模型和 ATAE-LSTM 模型。AE-LSTM 模型是先將文本通過 LSTM 網絡層,得到每個詞對應的隱單元輸出,然后結合主題向量表示計算一組注意力值來加權句子的不同部分,從而得到最終的向量表達,進行情感分類。相比 AE-LSTM 模型,ATAE-LSTM 模型更強調主題向量表達的影響,它把主題向量表達和每個詞的向量表達串接在一起進行建模,得到文本的表示。Ma 等人[5]提出了 IAN 模型,該模型使用兩個 LSTM 網絡分別對句子和主題進行建模,然后對句子的隱狀態進行池化操作,使用池化的結果和主題的隱狀態計算一組注意力值,對主題的隱狀態進行加權得到主題的最終向量表示,同時對主題的隱狀態進行池化操作,使用池化結果和句子的隱狀態計算另一組注意力值,對句子的隱狀態進行加權得到句子的最終向量表示,最后將兩個向量表示串接起來進行情感分類。

3 模型

針對 BDCI-2018 的汽車行業用戶觀點主題及情感識別任務,我們在調研的基礎上對一些模型進行改進,從而使其能夠適應該任務的特點和需求。最終實現的 3 個模型的具體思路如下。

3.1 基于 AOA 的改進模型 1

第一個模型架構如圖 1 所示,是對 AOA(Attention Over Attention)模型[6]的改進,一共分為四個部分:詞嵌入模塊、雙向 LSTM 模塊、注意力模塊和最終的分類預測模塊。

詞嵌入模塊:對于一個給定的句子,經過分詞之后可以將其表示為

。對于所有主題,我們可以將其表示成

(此任務有 10 個主題詞,則 m=10)。我們首先使用預訓練好的詞向量將每個詞

映射到一個低維的實值向量

。則句子和主題分別通過一個詞嵌入層之后我們可以得到兩個詞向量集合

雙向 LSTM 模塊:我們將得到的詞向量 s 和 t 分別通過一個雙向 LSTM 層來學習句子和主題的隱含語義表達,結果為雙向 LSTM 隱單元輸出的串接,此時可以得到句子和主題的表達

注意力模塊:對于上一步得到的

,我們首先計算一個相互作用矩陣

,矩陣中的每個元素

表示句子中的某個詞

和某個主題

之間的關系。然后我們對矩陣

的每列進行 softmax 操作,得到 aspect-to-sentence 的注意力值

,其中

。直觀來講,

每一列的意義是,對于某個主題而言,句子中的哪些詞比較重要。最終根據注意力值

和句子的隱含語義表達

來計算各主題感知的句子向量表達,即

分類模塊:我們將上一步得到的句子表達向量

展平,然后輸入到兩層的全連接網絡,得到 40 維的分類結果。對于 10 個主題中的每一個主題,對應有 4 維輸出結果,分別表示句子中不含該主題的概率、該句子在該主題的情感極性為中性的概率、該句子在該主題的情感極性為正向的概率、該句子在該主題的情感極性為負向的概率。對每個主題的四維輸出結果進行 softmax,以此判斷該句子是否不含該主題或者該句子在該主題上的情感極性。

圖1:AOA模型整體架構

3.2 基于 IAN 的改進模型 2

第二個模型架構如圖 2 所示,是對 IAN(Interactive Attention Networks)模型的改進,一共分為四個部分:詞嵌入模塊、雙向 LSTM 模塊、交互注意力模塊和最終的分類預測模塊。

詞嵌入模塊:與上一個模型相同,句子和主題分別通過一個詞嵌入層之后我們可以得到兩個詞向量集合

雙向 LSTM 模塊:將得到的詞向量 s 和 t 分別通過一個雙向 LSTM 層來學習句子和主題的隱含語義表達,結果為雙向 LSTM 隱單元輸出的串接,此時得到隱狀態

交互注意力模塊:對于上一步得到的

,我們首先進行平均池化,得到

。然后由

和句子的隱狀態

計算一組注意力分值,其中每個分值

,由注意力值對句子的各部分進行加權,得到句子的最終向量表達

。同時由

和主題的隱狀態

計算另一組注意力分值,其中每個分值

,由該組注意力值對各主題進行加權,得到主題的最終向量表達

。兩組注意力分值的計算公式中,

分類模塊:我們將上一步得到的主題和句子的最終向量表達

串接起來,然后輸入到兩層的全連接網絡,得到 40 維的分類結果。對于 10 個主題中的每一個,有 4 維輸出結果,分別表示句子中不含該主題的概率、該句子在該主題的情感極性為中性的概率、該句子在該主題的情感極性為正向的概率、該句子在該主題的情感極性為負向的概率。這一步與上一個模型相同,對每個主題的四維輸出結果進行 softmax,以此判斷該句子是否不含該主題或者該句子在該主題上的情感極性。

圖 2:IAN 模型整體架構

3.3 基于 AEN 的改進模型 3

第三個模型架構如圖 3 所示,是利用 AEN(Attention Encoder Networks)模型[7]對 AOA(Attention Over Attention)模型的更深層次改進,一共分為五個部分:詞嵌入模塊、雙向 LSTM 模塊、注意力模塊、多輸入池化模塊和最終的分類預測模塊。

詞嵌入模塊雙向 LSTM 模塊注意力模塊:這三個模塊與第一個模型 AOA 相同,總共得到三個輸出向量,句子的隱層狀態

和主題的隱層狀態

以及句子和主題交互得到的主題交互狀態

,這三個向量都是下一個模塊的輸入。

多輸入池化模塊:將上一步得到的三個輸出分別進行一維最大池化,得到三個池化結果向量,對應為

以及

,然后將三個池化向量串接,得到最終分類模塊的輸入向量 x

分類模塊:最終的分類模塊輸入為上一步三個池化向量的串接展平結果,分類機制與前兩個模型相同。對每個主題的四維輸出結果進行 softmax,以此判斷該句子是否不含該主題或者該句子在該主題上的情感極性。

圖3:AEN模型整體架構

4 實驗過程與結果

4.1 實驗過程

第一步:對任務數據進行分詞,得到數據集的詞典,及每個詞的 embedding,結果文件 embeddings.p 會輸出到指定目錄下。(因為本實驗使用騰訊公開的預訓練的漢語詞嵌入,數據量比較大,為了減少模型訓練時的計算資源需求,我們先處理得到本任務數據集的詞典,并提取出這些單詞的 embedding 另存到文件 embeddings.p)

python get_embed.py \
--train_data_path=path/to/train_data \
--embed_data_path=path/to/pretrain/word_embedding \
--out_embed_dit=dir/to/save/output_file

第二步:模型訓練及評估。如前所述,我們將訓練集以 8:1:1 的比例劃分成訓練集、驗證集和開發集進行實驗,此處我們的超參數具體設置如下所示。

python aspect_senti.py \--train_data_path=path/to/train_data \--embed_data_path=path/to/embeddings_.p \--out_dir=/dir/to/save/model \--max_sentence_length=256 \--lstm_hidden_size=100 \--dense_hidden_size=512 \--leakyRelu_alpha=0.01 \--drop_rate=0.5 \--reg_rate=0.001 \--optimizer=adam \--lr_factor=0.65 \--batch_size=32 \--epochs=30

為了方便運行,模型必須的參數都已經在代碼中設置了默認值,均是在驗證集上進行調參之后的最佳參數設置,而且項目目錄已經按照需要進行調整,只需輸入 python 加模型名稱即可運行不同的模型,比如 python aen.py。

4.2 實驗結果

三個模型訓練時使用的損失函數均是各主題的交叉熵損失之和。訓練過程中我們保存在驗證集上

值最大的模型,然后在測試集上進行評估,同時每個模型還測試了不同的固定文本長度。三個模型在測試集上的評估結果如下表:

據 BDCI 官網上該任務的排行榜,官方測試集上最好的模型表現為 F1=0.708。由于我們無法再官方測試集上進行模型評估,因此我們的結果和排行榜結果無法進行的嚴格比較,但從結果來看,我們的模型還是表現不錯的。

5 總結

通過此次項目實踐,我們了解了文本情感分析的相關模型,尤其是主題級別的情感極性分析,改進了端到端的神經網絡模型,如 AOA、IAN 和 AEN,使得模型能夠適應主題層次情感分類任務的特點和需求。我們遇到的問題要比普通的文本分類任務更加復雜,在該問題中,一篇文本中通常會同時涉及多個主題,正負的情感極性通常是混雜在一起的,如果忽略主題信息,我們很難確定目標文本的情感極性。因此,在在主題級別的情感分類任務上,我們在調研的基礎上對 AOA、IAN 和 AEN 模型進行了改進,從而使其能夠適應該任務的特點和需求。

在 BDCI 官方數據集上,我們將訓練集以 8:1:1 的比例劃分成訓練集、驗證集和開發集進行實驗,設置模型的固定文本長度分別為 60 和 256,三個模型的表現不錯,其中 AOA 模型和 AEN 模型的 F1 值均超過了官網測試集上最好的模型表現。由于我們無法對官方發布的測試集進行線上評估,因此無法和賽題排行榜進行精確對比,但就排行榜情況來看,最好成績也不高于 0.71,我們的方法所取得的結果是不錯的。

情感分析是自然語言處理中常見的場景,比如汽車行業用戶觀點主題及情感識別,對于指導產品更新迭代具有關鍵性作用。通過對用戶評價進行情感分析,可以挖掘產品在各個維度的優劣,從而明確如何改進產品。比如對用戶評價進行分析,可以得到汽車動力、價格、內飾、配置、安全性、外觀、操控、油耗、空間、舒適性等多個維度的用戶情感指數,從而從各個維度上改進現在汽車行業的制造和銷售狀況。

深度學習在 NLP 領域內應用相當廣泛,在情感分類領域,我們同樣可以采用深度學習方法。基于深度學習的情感分類,具有精度高,通用性強等優點。通過完成這次項目作業,我們對情感分類問題有了更深入的認識,對神經網絡模型有了進一步的掌握,獲益良多。

參考文獻:

1.Nasukawa, T., Yi, J.: Sentiment analysis: Capturing favorability using natural language processing. In: Proceedings of the 2nd international conference on Knowledge capture. pp. 70–77. ACM (2003)

2.Jiang, L., Yu, M., Zhou, M., Liu, X., Zhao, T.: Target-dependent Twitter sentiment classification. In: Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies-Volume 1. pp. 151–160. Association for Computational Linguistics (2011)

3.Tang, D., Qin, B., Feng, X., Liu, T.: Effective lstms for target-dependent sentiment classification. In: Proceedings of COLING 2016, the 26th International Conference on Computational Linguistics: Technical Papers. pp. 3298–3307 (2016)

4.Wang, Y., Huang, M., Zhu, X., Zhao, L.: Attention-based lstm for aspect-level sentiment classification. In: EMNLP. pp. 606–615 (2016)

5.Ma, D., Li, S., Zhang, X., Wang, H.: Interactive attention networks for aspect-level sentiment classification. In: Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence, IJCAI-17. pp. 4068–4074 (2017)

6.Huang B, Ou Y, Carley K M. Aspect level sentiment classification with attention-over-attention neural networks[C]//International Conference on Social Computing, Behavioral-Cultural Modeling and Prediction and Behavior Representation in Modeling and Simulation. Springer, Cham, 2018: 197-206.

7.Song Y, Wang J, Jiang T, et al. Attentional Encoder Network for Targeted Sentiment Classification[J]. arXiv preprint arXiv:1902.09314, 2019.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85105.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85105.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85105.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot 線程池 配置使用詳解

一、核心特性 Springboot 集成 支持 Async 注解,簡化異步方法調用。 參數可配置化 核心線程數、最大線程數、隊列容量、拒絕策略等均可通過配置調整。 生命周期管理 實現 Lifecycle 接口,支持線程池的啟動和關閉(如應用關閉時優雅終止任務…

Elasticsearch/OpenSearch MCP Quickstart

項目概述 elasticsearch-mcp-server 是一個基于 Model Context Protocol (MCP) 的服務器實現,提供了與 Elasticsearch 和 OpenSearch 交互的能力。該服務器允許用戶搜索文檔、分析索引以及管理集群,通過一系列工具函數實現這些功能。 項目結構 項目主…

《Elasticsearch 分布式搜索在聊天記錄檢索中的深度優化》

Elasticsearch 分布式搜索在聊天記錄檢索中的深度優化 引言 在現代聊天應用中,聊天記錄檢索面臨著數據量大、查詢復雜、實時性要求高的多重挑戰。以某社交平臺為例,其聊天記錄每天新增數千萬條,總數據量達百億級,用戶需要在海量…

CSS實現元素撐滿剩余空間的5種方法

CSS實現元素撐滿剩余空間的5種方法 🎨 在日常開發中,我們經常需要讓某個元素占據容器的剩余空間。這是一個常見的布局需求,比如側邊欄主內容區、頭部內容區底部等布局。本文將介紹5種不同的方法來實現這個需求,并分析各種方法的優…

[AI]從零開始的YOLO數據集增強教程

一、前言 不知道大家在訓練YOLO時有沒有遇到過這樣的情況,明明數據集已經準備了很多了,但是YOLO還是不認識某個物品,或者置信度低。那么有沒有辦法讓我們不制作新數據集的情況下讓代碼幫我們生成新的數據集來訓練模型呢?當然有&am…

軟件工程的相關名詞解釋

目錄 1. 軟件生命周期2.開源軟件3.軟件工程4.模塊化原則5.信息隱藏原則6.雙向追蹤7.原型8.軟件需求9.需求工程10.邊界類11.軟件實現(的任務)12.軟件缺陷13.回歸測試14.軟件β版15.軟件部署16.糾正性維護17.改善性維護18.適應性維護19.軟件邏輯老化 1. 軟…

2025.06.17【BUG】|多樣品VCF文件合并技巧及注意事項(以bcftools為例)

文章目錄 [toc]一、合并VCF的常用命令1.1 合并多個bgzip壓縮的VCF文件1.2 使用文件列表合并 二、合并前的準備與注意事項2.1 文件格式要求2.2 樣本名唯一性2.3 檢查文件模式匹配 三、常見報錯與解決方法3.1 報錯:Error: Duplicate sample names (sample1), use --fo…

包含30個APP客戶端UI界面的psd適用于旅游酒店項目

包含30個APP客戶端UI界面的psd適用于旅游酒店項目 此資源包含30個完全可編輯的psd界面組成。內容包括歡迎頁、登錄、注冊、首頁、搜索、側邊菜單、用戶中心、個人介紹、用戶空間、產品詳細信息、酒店預定、天氣情況等各種常用界面,您可以將其用于旅游酒店類的APP應用…

ArrayList源碼分析

目錄 ArrayList簡介 ArrayList和vector的區別(了解即可) ArrayList添加null值 ArrayList和LinkedList區別 ArrayList核心源碼解讀 ArrayList擴容機制分析 一步一分析ArrayList擴容機制 hugeCapacity()方法 System.arraycopy() Arrays.copyOf()方法 …

NX二次開發C#---通過Face找Edges,再通過Edges找Curve

文章介紹了一個名為AskFaceEdge的靜態方法,用于處理3D建模中的邊緣曲線生成。該方法通過NX Open API調用,主要功能是獲取指定面的邊緣并生成相應的曲線。方法接收兩個參數:faceTag(面標簽)和curveLoop(曲線…

設計模式筆記_創建型_工廠模式

1. 工廠模式簡介 工廠模式是一種創建型設計模式,主要用于創建對象實例。 它通過定義一個接口或抽象類來創建對象,而不是直接實例化具體類,從而將對象的創建過程與使用過程分離。 工廠模式通常分為兩種類型: 簡單工廠模式&#x…

2025.6.16總結

工作:今天閉環了個遺留問題。在做專項評估時寫得太簡單,這讓測試經理質疑你的測試質量。如果換位思考,你是測試經理,你該怎么去把握風險和保證產品的質量,就知道寫得太簡單,沒有可信度。 找開發看了下后臺…

記錄:安裝VMware、Ubuntu、ROS2

安裝了VMware,就能夠在Windows系統裝安裝Ubuntu,使用Linux系統。安裝了Ubuntu,就能在里面安裝ROS2,之后寫代碼控制機器人兒。 安裝VMware 我安裝的是16 pro【具體是vmware16.2.4】,下載網站:VMware Works…

將后端數據轉換為docx文件

使用docx npm install docx 按照注釋處理數據并轉換為對應的bolb數據流 <template><Button type"primary" click"handleDocxCreate">{{buttonTitle || "報告生成"}}</Button> </template><script> import {Doc…

數據結構排序算法合集

快排 private static void quickSort(int[] ret) { quick(ret,0,ret.length-1); } private static void quick(int[] ret, int left, int right) { if(left>right) 記一下這里是大于等于 return; int pivot partition(ret,left,right); quick(ret…

【算法筆記】紅黑樹插入操作

紅黑樹插入與調整詳解 一、紅黑樹的五大性質 紅黑樹是一種自平衡的二叉搜索樹&#xff08;BST&#xff09;&#xff0c;其核心特性如下&#xff1a; 顏色屬性&#xff1a;每個節點非紅即黑根屬性&#xff1a;根節點必須為黑色葉子屬性&#xff1a;所有的 NIL 葉子節點都是黑…

認知計算革命:從算法創新到產業落地的AI專業核心應用全景

??一、自動化機器學習&#xff08;AutoML&#xff09;?? ??技術機理與產業實踐深度剖析?? ??神經網絡架構搜索&#xff08;NAS&#xff09;?? 強化學習方案&#xff1a;Google Brain的NASNet采用策略梯度優化卷積單元進化算法方案&#xff1a;DeepMind的AmeobaNe…

篇章十 論壇系統——業務開發——板塊和帖子

目錄 1.板塊 1.1 思路 1.2 實現邏輯 1.3 參數要求 1.4 實現步驟 1.Mapper.xml 2.Mapper.java 3.Service接口 4.Service實現 5.單元測試 6.Controller 7.測試API 8.前后端交互 2.帖子 1.1思路?編輯 1.2 參數要求 ?編輯 1.3 實現步驟 1.Mapper.xml 2.Mapper…

React Native 上線前的準備與企業實戰經驗總結

上線前的準備與企業實戰經驗總結 關鍵要點 熱更新簡化部署&#xff1a;CodePush 和 Expo OTA 允許快速推送 JavaScript 和資源更新&#xff0c;繞過應用商店審核&#xff0c;適合修復 Bug 或小規模功能迭代。監控與分析提升質量&#xff1a;Sentry 提供實時錯誤跟蹤&#xff…

【AI時代速通QT】第一節:C++ Qt 簡介與環境安裝

目錄 前言 一、為什么是 Qt&#xff1f;—— C 開發者的必備技能 二、Qt 的核心魅力&#xff1a;不止于跨平臺 2.1 優雅之一&#xff1a;代碼隔離&#xff0c;清晰明了 2.2 優雅之二&#xff1a;信號與槽&#xff08;Signal & Slot&#xff09;機制 2.3 優雅之三&…