理論上都了解過一輪了,接下來就是要實作了,剛開始就來一點最簡單暴力的作法
Pipeline
上一篇有提到過「寫一行就能使用模型的封裝工具包 pipeline」,至於為什麼他可以寫一行就解決呢?
[使用者文字
] → [tokenizers
] → [transformers
] → [模型輸出
] ← [datasets
]
(文字 轉 token) (載入模型進行推論或訓練) (提供訓練資料來源)
P i p e l i n e
] ㄜ...原諒我拙劣的圖解😅
簡單來說,就是把整個 transformer 的流程包在一起,變成一條長長的管線,相當於是在裡面黑箱作業,可以調整的變因減少了,就能更方便的使用模型,並自由切換不同模型
以 GPT-2 實作 Text-Generation
ChatGPT 我相信大家都不陌生,相對於現今的 4o,GPT-2 確實是一個很老舊的版本 (反正免費開源嘛~就別那麼計較了),這個版本只能提供英文接龍,就是可以幫你把英文文章接下去 (突然感覺回到 5 年前🤣
一、首先要到終端機下載 transformers 這個套件
pip install transformers

下載 transformers
二、再來...就可以直接開始寫程式了
from transformers import pipeline # type: ignore
generator = pipeline("text-generation", model="gpt2")
prompt = input("Please enter the prompt: ")
result = generator(prompt, max_length=2000, num_return_sequences=1)
print(result[0]["generated_text"])
- 第一行:從 transformers 導入 pipeline
- 第三行:視
pipeline(任務, model="")
實作出來的模型為一產生器 - 第四行:請使用者輸入提示詞
- 第六行:產生器(提示詞, 最大字數 = , 產生結果數 = )
- 第八行:印出結果
*實際產生的結果會長這樣➡[{'generated_text': 產生的內容}]

執行後的結果 (會發現 GPT-2 生成到後面戛然而止,因為我們有設置最高字數,就像寫作文寫一半發現格子不夠一樣XD
以 Distilbert-base-uncased-finetuned-sst-2-english 實作 Text-Classification
一、如果沒有下載 transformers 還是要下載這個套件 (看上面的第一步)
二、開始寫程式:
from transformers import pipeline # type: ignore
classifier = pipeline("text-classification", model="distilbert-base-uncased-finetuned-sst-2-english")
result = classifier(
["Let the storm rage on.", "The cold never bothered me anyway."]
)
for i in range(0, len(result)):
print(result[i]['label'], ':',result[i]['score'])
- 第一行:從 transformers 導入 pipeline
- 第三行:視
pipeline(任務, model="")
實作出來的模型為一分類器 - 第四行:放入要分類的句子 (我這邊用的是"Let it go"的最後兩句歌詞)
- 第八行:for 迴圈,逐句列印
( 想複習可以看這篇:不再迷茫!手把手的Python入門教學-迴圈 ) - 第九行:印出結果
*實際產生的結果會長這樣➡[{'label': 'POSITIVE' or 'NEGATIVE', 'score': 正/負面比率}, {'label': 'POSITIVE' or 'NEGATIVE', 'score': 正/負面比率}...]

執行後的結果 (我測試的是歌曲《Let it go》的最後兩句,我本來以為最後一句分析出來會是 POSITIVE,沒想到結果是 0.6153 的 NEGATIVE
其實 Hugging Face 網站有教你怎麼用
一開始的註冊登入就不用多說了吧~
進入之後點選上方的 Models 或直接搜尋你要找的模型

點進去想要的模型之後,點選右邊的 Use this model

點了之後就會下拉出一個選單,選擇 Transformers

接著就會跳出白給的程式碼了 (耶~~~
會發現第一個就是 pipeline 的用法,可見有多好用

今天的內容差不多到這,進度嚴重 delay🥲我會努力接回來的,如果喜歡也幫我按個讚喔~感謝你😊