Huggingface學習:用AI做情感分析
Huggingface 入門
學會使用huggingface就能夠調(diào)用人工智能的各種模型和數(shù)據(jù)集來開展語言教學和研究。
下面以句子情感分析(sentiment analysis)為例,演示一下如何安裝使用huggingface的transformers庫。直接上代碼:
第一次運行的結(jié)果如下:

無法導入pipeline!
可能的原因:transformers的版本太低了。因為安裝Anaconda時,默認安裝了2.1.1版本?,F(xiàn)在需要升級。如需查詢版本,可以在jupyternotebook中輸入以下代碼,運行,即可查看結(jié)果:
升級辦法:
然后重啟jupyternotebook,再次檢驗版本

果然是最新版了,但要求再安裝PyTorch或TensorFlow.
那就安裝一個TensorFlow試試:

安裝過程需要時間,耐心等待。TensorFlow安裝成功后,再次運行最開始的情感分析代碼。

在自動下載一些model和package,成功后,即給出情感分析結(jié)果。

自動判定“I love SCAU."這句話的情感是積極的,結(jié)果正確。
再測試一下,可以輸入一個列表,里面很多句話。

雖然還是有警告,但結(jié)果也還不錯。
補充知識:什么是transformers?什么是pipeline?
在自然語言處理領(lǐng)域,Transformers庫是一個備受歡迎的工具。這個庫提供了各種各樣的模型和工具,可以用于許多任務(wù),如文本分類、命名實體識別、問答系統(tǒng)等。其中最為方便的工具之一就是Pipeline。
Pipeline是Transformers庫的一個高級API,可以輕松地將多個處理步驟(如分詞、實體識別、文本分類等)組合成一個管道,從而實現(xiàn)一條指令完成多個自然語言處理任務(wù)??梢哉f,Transformers庫中最基本的對象是pipeline(管道),將模型與其他必要預處理和后處理步驟組合起來,使我們可以直接輸入任何文本并獲得可理解的答案。
Pipeline
1. Pipeline的介紹
在自然語言處理中,常常需要執(zhí)行多個任務(wù),例如將一段文本分詞、去除停用詞、提取關(guān)鍵詞等。使用Pipeline可以將這些任務(wù)連接成一個完整的處理流程。Pipeline的API簡單易用,可以自動選擇最合適的模型,并且在處理時實現(xiàn)自動批處理。具體來說,Pipeline提供了一種簡單的方法,可以將以下任務(wù)鏈接在一起:
文本預處理(分詞、停用詞處理、標點符號去除等)
特征提取(向量化、TF-IDF權(quán)重計算等)
模型選擇和調(diào)參
輸出結(jié)果(如文本分類、情感分析等)
使用Pipeline,只需要提供文本輸入,即可輕松地獲取輸出結(jié)果。這種API非常適合快速開發(fā)原型,并且在生產(chǎn)環(huán)境中提供了方便的部署方式。
2. Pipeline的原理
在Pipeline內(nèi)部,首先對輸入文本進行預處理。這通常涉及到將文本轉(zhuǎn)換成tokens序列,并且進行停用詞處理、標點符號去除等操作。接著,Pipeline將序列輸入到模型中,這個模型通常是由Transformers架構(gòu)組成的。
對于每個任務(wù),Pipeline都會選擇一個適當?shù)哪P秃瓦m當?shù)膮?shù)。例如,對于文本分類任務(wù),Pipeline可能會選擇一個適當?shù)姆诸惼?,并且使用適當?shù)膮?shù)來優(yōu)化這個分類器。這個過程通常是由預先定義的管道組件組成的。
最后,Pipeline將模型的輸出轉(zhuǎn)換為特定任務(wù)的輸出格式。例如,對于文本分類,輸出可能是一個字符串,表示文本屬于哪個類別。對于命名實體識別,輸出可能是一個包含實體名稱和實體類型的列表。
3. Pipeline的代碼演示
讓我們來看一個實際的例子,使用Pipeline對一些電影評論進行情感分析。
首先,我們需要安裝Transformers庫,這可以通過以下命令完成:
然后,我們可以使用以下代碼來加載Pipeline:
我們在pipeline中僅傳入任務(wù)名稱sentiment-analysis(情感分析),此時,管道默認選擇一個特定的預訓練模型,該模型已經(jīng)對英文情感分析進行了微調(diào)。第一次運行會下載并緩存該模型。
這個代碼將打印出以下輸出:
這個輸出表示,輸入的文本是“積極”的,并且對應(yīng)的置信度非常高。
這里的Pipeline自動選擇了適當?shù)哪P秃蛥?shù),以最大化分類的準確性。我們可以通過更改分類器來嘗試不同的模型,例如:
這個分類器使用了一個不同的模型,并且針對情感分類任務(wù)進行了微調(diào)。
將一些文本傳遞到管道時涉及三個主要步驟:
預處理: 文本被預處理為模型可以理解的格式
輸入模型: 構(gòu)建模型,將預處理的輸入傳遞給模型
后處理: 模型預測的結(jié)果經(jīng)過后處理,變成人類可理解的格式
目前可用的一些管道有:
feature-extraction (獲取文本的向量表示)
fill-mask填充給定文本中的空白(完形填空)
ner (named entity recognition)詞性標注
question-answering問答
sentiment-analysis情感分析
summarization摘要生成
text-generation文本生成
translation翻譯
zero-shot-classification零樣本分類
4. Pipeline的優(yōu)勢
Pipeline的一個優(yōu)點是,它提供了一個簡單易用的API,可以快速地開發(fā)原型,從而快速地檢測模型的性能。另一個優(yōu)點是,Pipeline自動選擇適當?shù)哪P秃蛥?shù),從而提高了模型的準確性。Pipeline還可以通過將多個任務(wù)組合在一起來實現(xiàn)復雜的自然語言處理任務(wù)。
此外,Pipeline還可以在CPU和GPU上運行,從而實現(xiàn)更高的處理速度。對于大型數(shù)據(jù)集,Pipeline可以自動進行批處理,從而提高了處理速度。最后,Pipeline提供了一種簡單的方式,可以將模型部署到生產(chǎn)環(huán)境中。
Pipeline的背后
讓我們從一個完整的例子開始,看看當我們在執(zhí)行以下代碼時,幕后發(fā)生了什么:
運行結(jié)果:
這個管道將三個步驟組合在一起:預處理、傳遞輸入到模型和后處理:

更詳細的說明請參考官網(wǎng)教程(https://huggingface.co/docs/transformers/index)或https://blog.csdn.net/yjw123456/article/details/125192900。
參考文獻:
1. http://www.xbhp.cn/news/92821.html
2.?https://blog.csdn.net/yjw123456/article/details/125192900
3.官網(wǎng)教程:https://huggingface.co/docs/transformers/index