การจำแนกข้อความด้วย BERT
ทรานส์ฟอร์เมอร์ของ HuggingFace, AutoTokenizer, AutoModelForSequenceClassification และการปรับจูนแบบละเอียด
การจำแนกข้อความด้วย BERT เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
ข้อจำกัดของการฝังคำแบบคงที่
Word2Vec และ GloVe ให้เวกเตอร์คงที่เพียงหนึ่งเวกเตอร์ต่อคำ แต่คำว่า "bank" มีความหมายต่างกันใน "river bank" และ "savings bank" โมเดล ตามบริบทอย่าง BERT ช่วยแก้ปัญหานี้
BERT คืออะไร
BERT เป็นโมเดลทรานส์ฟอร์เมอร์ที่อ่านทั้งประโยคพร้อมกันและสร้างการฝังคำที่คำนึงถึงบริบท โมเดลนี้ฝึกไว้ล่วงหน้าด้วยข้อความจำนวนมหาศาล และสามารถปรับให้เหมาะกับงานต่าง ๆ เช่น การจำแนกประเภทได้
ไลบรารี transformers ของ Hugging Face
ไลบรารี transformers ช่วยให้เข้าถึง BERT และโมเดลที่ฝึกไว้ล่วงหน้าหลายพันโมเดลได้ง่าย พร้อมคลาสที่มีรูปแบบสอดคล้องกันสำหรับตัวตัดโทเค็นและโมเดล
from transformers import AutoTokenizer, AutoModelForSequenceClassification
name = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(name)
model = AutoModelForSequenceClassification.from_pretrained(name)AutoTokenizer
AutoTokenizer โหลดตัวตัดโทเค็นที่ถูกต้องสำหรับโมเดล โดยจะแบ่งข้อความเป็นโทเค็นย่อยและแปลงโทเค็นเหล่านั้นเป็นรหัสที่โมเดลต้องการ
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
print(tokenizer.tokenize("unbelievable"))
# subwords like ["un", "##bel", "##ievable"]AutoModelForSequenceClassification
AutoModelForSequenceClassification โหลด BERT พร้อมส่วนหัวการจำแนกประเภทด้านบน และส่งออกคะแนนหนึ่งค่าต่อคลาสสำหรับลำดับทั้งหมด
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
"distilbert-base-uncased-finetuned-sst-2-english"
)การตัดโทเค็นอินพุต
เรียกใช้ตัวตัดโทเค็นกับข้อความของคุณพร้อมด้วย truncation, padding และ return_tensors เพื่อรับเทนเซอร์ที่พร้อมให้โมเดลใช้งาน การตัดจะจำกัดอินพุตที่ยาวเกินไป ส่วนการเติมจะจัดความยาวของแต่ละชุดให้ตรงกัน
inputs = tokenizer(
"This movie was fantastic!",
truncation=True,
padding=True,
return_tensors="pt",
)
print(inputs["input_ids"].shape)โทเค็นพิเศษ
BERT จะเพิ่มโทเค็นพิเศษโดยอัตโนมัติ: [CLS] ที่จุดเริ่มต้น (สถานะซ่อนของโทเค็นนี้สรุปลำดับทั้งหมด) และ [SEP] ระหว่างหรือหลังประโยค ตัวจำแนกจะอ่านข้อมูลจากการแทนค่าของ [CLS]
การเรียกใช้โมเดล
ส่งอินพุตที่ผ่านการตัดโทเค็นแล้วให้โมเดลเพื่อรับ ค่าลอจิต ซึ่งเป็นคะแนนดิบของคลาสที่ยังไม่ได้ปรับให้เป็นมาตรฐาน
import torch
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
print(logits)จากลอจิตสู่การทำนาย
ใช้ softmax กับค่าลอจิตเพื่อคำนวณความน่าจะเป็น จากนั้นใช้ argmax เพื่อหาดัชนีคลาสที่ทำนายได้ แล้วจับคู่ดัชนีนั้นกับป้ายกำกับ
import torch
probs = torch.softmax(logits, dim=-1)
pred = torch.argmax(probs, dim=-1).item()
print(model.config.id2label[pred])การปรับ BERT ให้เหมาะกับงานของคุณ
สำหรับชุดข้อมูลแบบกำหนดเอง ให้ปรับ BERT โดยฝึกส่วนหัวการจำแนกประเภท (และอาจฝึกทั้งโมเดลด้วย) จากตัวอย่างที่มีป้ายกำกับ ส่วนติดต่อโปรแกรมประยุกต์ Trainer จะจัดการวงรอบการฝึกให้
from transformers import Trainer, TrainingArguments
args = TrainingArguments(output_dir="out", num_train_epochs=3)
trainer = Trainer(model=model, args=args, train_dataset=train_ds)
trainer.train()ทางลัดของกระบวนการประมวลผล
สำหรับการอนุมานอย่างรวดเร็ว ตัวช่วย pipeline จะรวมการตัดโทเค็น การเรียกใช้โมเดล และการถอดรหัสไว้ในการเรียกใช้ครั้งเดียว เหมาะอย่างยิ่งสำหรับการสร้างต้นแบบ
from transformers import pipeline
clf = pipeline("sentiment-analysis")
print(clf("I love this product!"))
# [{"label": "POSITIVE", "score": 0.99...}]ตรวจสอบความเข้าใจ
ทดสอบความรู้เกี่ยวกับ BERT ของคุณ
สรุป
สรุป: BERT สร้างการฝังคำที่คำนึงถึงบริบทผ่านทรานส์ฟอร์เมอร์ ใช้ AutoTokenizer เพื่อตัดโทเค็นด้วย truncation/padding/return_tensors และใช้ AutoModelForSequenceClassification เพื่อรับ ค่าลอจิต แปลงค่าลอจิตด้วย softmax แล้วจึงใช้ argmax ปรับโมเดลให้เหมาะกับงานด้วย Trainer หรือสร้างต้นแบบอย่างรวดเร็วด้วย pipeline
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 53
- บทเรียน
- 225
คำถามที่พบบ่อย
บทเรียน “การจำแนกข้อความด้วย BERT” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การจำแนกข้อความด้วย BERT” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การจำแนกข้อความด้วย BERT”
ทรานส์ฟอร์เมอร์ของ HuggingFace, AutoTokenizer, AutoModelForSequenceClassification และการปรับจูนแบบละเอียด คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การจำแนกข้อความด้วย BERT” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Word2Vec: Skip-gram และ CBOW
- เวกเตอร์ฝัง GloVe และ FastText
- การจำแนกข้อความด้วย BERT
- ความคล้ายคลึงเชิงความหมายและเวกเตอร์ฝังประโยค