Python 中的情感分析

在本文中,我們將討論 Python 中的情感分析。這個應用再次證明了這種編程語言的多功能性。但是在開始情緒分析之前,讓我們看看我們所有人都必須意識到的背景是什麼-

所以,我們在這裡討論-

  1. 什麼是自然語言處理?
  2. 什麼是自然語言處理工具包?
  3. 樸素貝葉斯算法
  4. 情感分析

讓我們從自然語言處理開始–

簡單地說,我們可以說計算機能夠理解和處理人類語言。這裡的目標是從文本數據中獲得有用的信息。作為輸入給出的原始數據要經歷不同的處理階段,以便我們對其執行所需的操作。

在數據清理階段,我們獲得一個單詞列表,稱為乾淨文本。其中涉及的一些步驟是分詞、停止單詞移除、詞幹和向量化(將單詞轉換為數字的處理),然後最後我們執行分類,也稱為文本標記或文本分類,這裡我們將文本分類到定義明確的組中。

所以,這都是關於自然語言處理的,現在讓我們看看開源工具自然語言處理工具包是如何幫助我們的。

這是一個我們用來編寫 Python 程序的平台,可以應用於實現自然語言處理的所有預處理階段。

現在,下一個任務是對我們的文本進行分類,這可以使用樸素貝葉斯算法來完成,所以讓我們了解它是如何工作的?

這種監督算法的原理是基於貝葉斯定理,我們利用這個定理來尋找條件概率。

貝葉斯定理由給定的數學公式表示

*P(A|B) = P(B|A)P(A)/P(B)**

P(A|B)(後驗概率)- 當事件 B 已經發生時,事件 A 發生的概率。

P(B|A)(似然概率)- 當事件 A 已經發生時,事件 B 發生的概率

P(A)(在先)—事件 A 發生的概率

P(B)(邊際)- 事件 B 發生的概率

情感分析

了解了先決條件之後,讓我們試着詳細了解一下情緒分析是關於什麼的,以及我們如何在 Python 中實現它?

情感分析用於檢測或識別文本中包含的情感。

這種分析有助於我們獲得文本的參考,這意味着我們可以理解內容是積極的、消極的或中立的。

從目前的情況來看,所有的商業巨頭都需要清楚地知道他們的產品從客戶那裡得到了什麼樣的回應,以及如何根據不斷出現的需求來整合這些變化。

以下是情緒分析過程中涉及的步驟-

  1. 正在導入數據集。
    數據集可以從可信的資源中獲取,並可以使用 read_csv 導入到我們的代碼編輯器中。
  2. 下一個關鍵步驟是找出影響我們目標情感的特徵。
  3. 一旦我們根據可視化得出結論,我們就可以進入下一步,即創建「單詞雲」。
  4. 下一步是將評論分為正面和負面。
  5. 現在我們將為這兩個評論創建單詞雲。
  6. 在條形圖的幫助下,可以理解數據集中獲得的單詞雲的數量。
  7. 這個模型可以用-
    1. 首先,清理數據,確保所有預處理階段都得到遵循。
    2. 下一步是分割只包含所需特徵的數據幀。
    3. 創建一個單詞包,這意味着進行向量化,文本可以轉換成整數矩陣。
    4. 現在我們將導入邏輯回歸,它將使用分類變量實現回歸。
    5. 現在讓我們把數據分成自變量和目標。
    6. 讓我們將訓練數據集放入模型中。
    7. 接下來,我們可以獲取測試數據集並進行預測。
    8. 最後的任務是使用評估指標測試我們模型的準確性。

讓我們藉助一個例子來理解這一點-

在這裡,我們在訓練數據集(x_train)中取了一些句子,在 y_train 中取值 0 和 1,其中 1 表示正,0 表示負。

代碼


X_train=["JavaTpoint provides best tutorial for students",
      "It is a great platform to start off your IT career",
     "Concepts are explained very well",
     "The articles have some interesting examples",
     "Some tutorials are bad",
    "Their content can confuse students"]
y_train=[1,1,1,1,0,0] #1-Positive, 0 -Negative 
X_train

輸出

2.下一步是導入所需的庫,幫助我們實現自然語言處理中涉及的主要過程。

讓我們了解什麼是分詞、詞幹和停止詞-

  1. 分詞- 是將我們的文本數據拆分成單詞、短語等更小部分的過程。
  2. 詞幹- 我們知道,所有的詞根基本詞都可以通過添加前綴和後綴來產生新詞,有時這可能會改變詞根的真正含義,所以詞幹是我們在詞根上分解這些添加的過程。
  3. Stopwords – 在 Stopwords 的去除過程中,我們去除了構成句子時用到的詞語,使其變得通情達理,便於讀者理解。我們對文本執行此操作,以獲得幫助我們分析情感的所需關鍵詞。

代碼


from nltk.tokenize import RegexpTokenizer
from nltk.stem.porter import PorterStemmer
from nltk.corpus import stopwords
import nltk
nltk.download('stopwords')

輸出

3.下一步是創建分詞器、停止詞和 PortStemmer 的對象。

我們想要連接這些單詞,所以我們將使用正則表達式並傳遞\w+作為參數。

由於我們使用英語,我們將在 stopwords 中指定「英語」作為參數。

代碼


tokenizer=RegexpTokenizer(r'\w+')
en_stopwords=set(stopwords.words('english'))
ps=PorterStemmer()

輸出

4.下一步是創建一個函數來清理我們的數據。

我們將把文本轉換成小寫,然後實現分詞。

在給定的函數中,我們同時執行分詞和停用詞移除。(令牌中令牌的令牌,如果令牌不在 en_stopwords 中)

下一步是執行詞幹,然後加入詞幹標記。

代碼


def getCleanedText(text):
  text=text.lower()
  #tokenize
  tokens=tokenizer.tokenize(text)
  new_tokens=[token for token in tokens if token not in en_stopwords]
  stemmed_tokens=[ps.stem(tokens) for tokens in new_tokens]
  clean_text=" ".join(stemmed_tokens)
  return clean_text 

輸出

5.以下是我們的 x_test 數據,將用於清潔目的。

代碼


X_test=["The tutorial that was suggested to me was good", "Rest of the tutorials were bad"]
X_test

輸出

6.在這一步中,我們已經從 X_train 和 X_test 獲取了我們的數據,並對其進行了清理。

代碼


X_clean=[getCleanedText(j) for j in X_train]
Xt_clean=[getCleanedText(j) for j in X_test]

輸出

7.當我們想要檢查乾淨數據的外觀時,我們可以通過鍵入 X_clean-

代碼


X_clean

輸出

8.在進行分類之前,執行向量化以獲得所需的格式非常重要。為此,我們必須導入一些庫。

代碼


from sklearn.feature_extraction.text import CountVectorizer
cv=CountVectorizer(ngram_range=(1,2))
X_vect=cv.fit_transform(X_clean).toarray()
X_vect

輸出

9.特徵名幫助我們知道值 0 和 1 代表什麼。這可以通過使用-

代碼


print(cv.get_feature_names())
Xt_vect=cv.transform(Xt_clean).toarray()

輸出

10.現在為了進行文本分類,我們將使用多項式樸素貝葉斯

代碼


from sklearn.naive_bayes import MultinomialNB
mlb=MultinomialNB()
mlb.fit(X_vect,y_train
y_pred=mlb.predict(Xt_vect)
           y_pred

輸出

關於預測,它以數組[1,0]的形式給出結果,其中 1 表示測試集中的正,0 表示負。

因此,在本文中,我們討論了理解情緒分析的先決條件以及如何在 Python 中實現它。


原創文章,作者:IR2E9,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/129709.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
IR2E9的頭像IR2E9
上一篇 2024-10-03 23:27
下一篇 2024-10-03 23:27

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29

發表回復

登錄後才能評論