日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【NLP】使用Transformer模型进行文本分类

發(fā)布時間:2025/3/12 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NLP】使用Transformer模型进行文本分类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者 | Eric Fillion

編譯 | VK
來源 | Towards Data Science

文本分類是NLP最常見的應(yīng)用。與大多數(shù)NLP應(yīng)用一樣,Transformer模型近年來在該領(lǐng)域占據(jù)主導(dǎo)地位。

在本文中,我們將討論如何使用Python包(我是名為Happy Transformer的主要維護(hù)者)實(shí)現(xiàn)和訓(xùn)練文本分類Transformer模型,該包只需幾行代碼。

Happy Transformer構(gòu)建在Hugging Face的transformers庫之上,允許程序員只需幾行代碼即可實(shí)現(xiàn)和訓(xùn)練Transformer模型。

預(yù)訓(xùn)練模型

在Hugging Face的模型網(wǎng)絡(luò)上,有100種預(yù)訓(xùn)練文本分類模型可供選擇。

因此,我建議,在你花費(fèi)太多時間擔(dān)心模型訓(xùn)練之前,先看看是否有人已經(jīng)為你的特定應(yīng)用程序?qū)δP瓦M(jìn)行了微調(diào)。

例如,我已經(jīng)制作了關(guān)于如何實(shí)現(xiàn)用于情緒分析和仇恨語音檢測的預(yù)訓(xùn)練Transformer模型的內(nèi)容。

在本教程中,我們將實(shí)現(xiàn)一個名為finbert的模型,該模型由一家名為Prosus的公司創(chuàng)建。該模型檢測金融數(shù)據(jù)的情緒。

安裝

Happy Transformer在PyPI上可用,因此我們可以用一行代碼安裝它。

pip?install?happytransformer

實(shí)例化

讓我們導(dǎo)入一個名為HappyTextClassification的類,我們將使用它加載模型。

from?happytransformer?import?HappyTextClassification

從這里,我們可以使用HappyTextClassification類為模型實(shí)例化一個對象。

第一個position參數(shù)指定模型的類型。例如,“BERT”、“ROBERTA”和“ALBERT”都是有效的模型名稱。第二個position參數(shù)表示模型的名稱,可以在模型的網(wǎng)頁上找到。最后一個參數(shù)是一個名為“num_labels”的參數(shù),它指定模型擁有的類的數(shù)量。在本例中,模型有三個標(biāo)簽:“正”、“中性”和“負(fù)”

重要提示:實(shí)例化模型時不要忘記設(shè)置num_labels。否則,可能會發(fā)生錯誤。

happy_tc?=?HappyTextClassification("BERT",?"ProsusAI/finbert",?num_labels=3)

用法

我們可以?使用“classify_text”方法,只需一行代碼即可開始對文本進(jìn)行分類

result?=?happy_tc.classify_text("Tesla's?stock?just?increased?by?20%")

讓我們把結(jié)果打印出來,以便更好地理解它。

print(result)

Output: TextClassificationResult(label=’positive’, score=0.929110586643219)

如你所見,?輸出是一個數(shù)據(jù)類,有兩個變量:“l(fā)abel”和“score”。

label是一個字符串,用于指示輸入被分類到哪個類。“score”變量指定模型將答案分配為浮點(diǎn)數(shù)的概率。我們不能孤立這兩個變量。

print(result.label)? print(result.score)

Result:

positive

0.929110586643219

下面是另一個示例。

result?=?happy_tc.classify_text("The?price?of?gold?just?dropped?by?5%")? print(result.label) print(result.score)

Output:

negative

0.8852565288543701

訓(xùn)練-NLP情緒分析

現(xiàn)在我們來討論訓(xùn)練。我們將訓(xùn)練一個模型來檢測與NLP相關(guān)的文本情感。我們將僅使用兩個示例進(jìn)行訓(xùn)練—當(dāng)然,這還不足以可靠地訓(xùn)練模型。但是,這只是為了示范。

我們必須創(chuàng)建一個包含兩列的CSV文件:文本和標(biāo)簽。文本列包含我們希望分類的文本。“標(biāo)簽”列將標(biāo)簽類型包含為大于或等于0的整數(shù)。下表給出了訓(xùn)練CSV的示例。

下面是生成上述CSV文件的代碼:

import?csvcases=?[("Wow?I?love?using?BERT?for?text?classification",?0),?("I?hate?NLP",?1)]with?open("train.csv",?'w',?newline='')?as?csvfile:writer?=?csv.writer(csvfile)writer.writerow(["text",?"label"])for?case?in?cases:writer.writerow([case[0],?case[1]])

首先,我們將安裝DistilBERT的普通版本作為起點(diǎn)。還有其他模型可以使用,如 BERT, ALBERT, RoBERTa等。更多型號請?jiān)L問Hugging Face的模型網(wǎng)絡(luò):https://huggingface.co/models。

happy_tc?=?HappyTextClassification(model_type="DISTILBERT",?model_name="distilbert-base-uncased",?num_labels=2)

然后,我們可以使用新實(shí)例化的類簡單地調(diào)用方法“train”。

happy_tc.train("train.csv")

就這樣!我們剛剛訓(xùn)練了模型。我們現(xiàn)在可以使用它,就像我們在上一節(jié)中所做的那樣。例如,你現(xiàn)在可以像以前一樣調(diào)用“happy_tc.classify_text”,并將使用新的微調(diào)模型。

自定義參數(shù)

通過使用一個名為“TCTrainArgs”的類,我們可以輕松地修改學(xué)習(xí)參數(shù),例如epoch數(shù)、學(xué)習(xí)率等。

from?happytransformer?import?TCTrainArgs

現(xiàn)在,我們可以使用TCTrainArgs類創(chuàng)建一個對象來包含訓(xùn)練參數(shù)。可以修改的參數(shù)列表:https://happytransformer.com/text-classification/finetuning/。讓我們將默認(rèn)的訓(xùn)練次數(shù)從3增加到5。

args?=?TCTrainArgs(num_train_epochs=5)

讓我們像以前一樣調(diào)用happy_tc的train方法,但這次將args對象傳遞到該方法的args參數(shù)中。

happy_tc.train("train.csv",?args=args)

好了,我們修改了學(xué)習(xí)參數(shù)!

評價

HappyTextGeneration對象有一個內(nèi)置方法,允許你快速評估模型。

首先,按照訓(xùn)練中討論的格式格式化數(shù)據(jù),然后調(diào)用“.eval”方法。為了簡單起見,讓我們使用訓(xùn)練文件進(jìn)行評估。

result?=?happy_tc.eval("train.csv")? print(result)

Result: EvalResult(loss=0.2848379611968994)

然后我們可以像這樣分離損失變量:

print(result.loss)

Output: 0.2848379611968994

我建議你將整體數(shù)據(jù)的一部分用于訓(xùn)練,另一部分用于評估。然后,在訓(xùn)練前后評估你的模型。如果損失減少,則表示你的模型已學(xué)習(xí)。

你還可以創(chuàng)建數(shù)據(jù)的第三部分,用于運(yùn)行實(shí)驗(yàn),以找到最佳的學(xué)習(xí)參數(shù)

結(jié)論

就這樣!你剛剛學(xué)習(xí)了如何實(shí)現(xiàn)和訓(xùn)練文本分類Transformer模型。使用Happy Transformer只需幾行就可以完成這么多工作!。

相關(guān)文章

本文中的代碼:

https://colab.research.google.com/drive/1Jq3o8whsgEL994noS14qyv98jt5We-pU?usp=sharing

往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機(jī)器學(xué)習(xí)課程》視頻課黃海廣老師《機(jī)器學(xué)習(xí)課程》711頁完整版課件

本站qq群554839127,加入微信群請掃碼:

總結(jié)

以上是生活随笔為你收集整理的【NLP】使用Transformer模型进行文本分类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。