【NLP】在机器学习中开发情感分析器的5种方法
作者 | Satyam Kumar
編譯 | VK
來源 | Towards Data Science
情感分析是一種自然語言處理技術,用于確定給定文本的情感或觀點。情感分析模型可以通過從自然語言中提取意義并將其分配分數來預測給定的文本數據是正的、負的還是中性的。
開發或訓練情緒分析模型有多種方法,本文中我們將討論5種不同的方法:
定制訓練監督模型
TextBlob
基于詞典的模型
Bert
基于命名實體的情感分析器
情緒分析被各種組織用來了解客戶的情緒,并相應地做出更快速和準確的商業決策。
定制訓練監督模型:
你可以訓練一個定制的機器學習或深度學習情感分析模型。一個有標記的數據集是訓練一個健壯的ML模型的關鍵。ML模型將學習數據集中的各種模式,并能預測文本的情感。
要訓練自定義情緒分析模型,必須遵循以下步驟:
收集原始標記數據集進行情緒分析。
文本預處理
文本的數字編碼
選擇合適的ML算法
調參與訓練ML模型
預測
閱讀下面的文章,了解如何利用樸素貝葉斯分類器算法開發一個影評情感分析模型。
https://satyam-kumar.medium.com/imdb-movie-review-polarity-using-naive-bayes-classifier-9f92c13efa2d
TextBlob:
TextBlob是一個開源的Python庫,用于處理文本數據,允許你在其簡單API的框架下指定要使用的算法。TextBlobs的API可以用來執行諸如詞性標注、名詞短語提取、分類、翻譯、情感分析等任務。
對于情緒分析,TextBlob庫提供了兩種實現:
patternalyzer:(默認)基于模式庫。
NaiveBayesAnalyzer:一個基于電影評論語料庫的NLTK分類器。
安裝:
pip?install?-U?textblob實施:
from?textblob?import?TextBlob from?textblob.sentiments?import?NaiveBayesAnalyzer,?PatternAnalyzertext?=?'I?liked?the?movie,?the?actors?performance?was?too?good.'#?NaiveBayesAnalyzer blob?=?TextBlob(text,?analyzer=NaiveBayesAnalyzer()) print(blob.sentiment)#?PatternAnalyzer blob?=?TextBlob(text,?analyzer=PatternAnalyzer()) print(blob.sentiment)基于詞典的模型
它涉及到從文本語料庫中創建一個n-gram的正負詞詞典。該方法需要一個帶標簽的文本語料庫,并使用自定義python函數分別為正文本和負文本創建一個n-gram詞典。
自定義詞也可以添加到字典的基礎上領域知識,作為一個額外的優勢。
在下一步中,創建一個自定義函數,該函數可以使用上面形成的正負詞詞典來分析給定的輸入文本,并可以將其分類為正面情緒或負面情緒。
輸入文本中的每個積極詞都會增加情感得分,而消極詞則會減少情感得分。
將最后的情緒分數除以該文本中的字數,以使分數標準化。
積極情緒得分介于0到1之間,表示積極情緒,其中1表示100%置信度的積極情緒預測。然而,負面情緒得分在-1到0之間,其中-1是100%置信度的負面情緒預測。
實施:
import?nltkpos_words?=?[] neg_words?=?[]def?compute_sentiment_score(text):sentiment_score?=?0words?=?nltk.word_tokenize(text)for?word?in?words:if?word?in?pos_words:print('pos:',word)sentiment_score=sentiment_score+1if?word?in?neg_words:print('neg:',word)sentiment_score=sentiment_score-1return?sentiment_score/len(words)with?open('datapath')?as?file:for?line?in?file:line_attrib?=?line.split()word?=?line_attrib[2].split('=')[1]?#2nd?column?in?the?filepolarity?=?line_attrib[-1].split('=')[1]?#last?column?in?the?fileif?polarity?=='positive':pos_words.append(word)elif?polarity=='negative':neg_words.append(word)print('Total?positive?words?found:?',len(pos_words)) print('Total?negative?words?found:?',len(neg_words))text?=?'I?loved?the?movie,?the?actors?performance?was?mindblowing.' sentiment?=?compute_sentiment_score(text) print('The?sentiment?score?of?this?text?is:?{:.2f}'.format(sentiment))BERT:
BERT代表來自Google開發的Transformers的雙向編碼器表示,它是用于NLP任務的最先進的ML模型。要使用BERT訓練情緒分析模型,請執行以下步驟:
安裝Transformer庫
加載BERT分類器和標記器
創建已處理的數據集
配置和訓練加載的BERT模型,并對其超參數進行微調
進行情緒分析預測
實現:
按照下面提到的文章使用BERT實現情緒分析模型。
https://towardsdatascience.com/sentiment-analysis-in-10-minutes-with-bert-and-hugging-face-294e8a04b671
基于命名實體的情感分析器:
基于命名實體的情感分析器主要針對實體詞或重要詞。也可以稱為目標情緒分析,它只關注重要的詞語或實體,比上述三種方法更準確、更有用。
第一步是在文本語料庫中找到所有命名實體。
在文本上應用名稱實體識別來查找各種實體,如PERSON、ORG、GPE。
基于命名實體的情感分析。
以找到包含命名實體的句子為目標,只對這些句子逐一進行情感分析。
結論:
在本文中,我們討論了開發情緒分析模型的5種不同方法。讓我們明白,在開發情緒分析模型時,有各種各樣可用的方法。它需要根據問題陳述和數據集對算法進行規劃和調整。
參考文獻:
[1] BERT Wiki:?https://en.wikipedia.org/wiki/BERT
[2] Sentiment Analysis using BERT by Orhan G. Yal??n: https://towardsdatascience.com/sentiment-analysis-in-10-minutes-with-bert-and-hugging-face-294e8a04b671
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻 本站qq群851320808,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【NLP】在机器学习中开发情感分析器的5种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习基础】终于把XGBoost总结
- 下一篇: 微软的OneNote正在获得类似Win1