Hugging Face Transformers Pipeline
Pipeline Hugging Face Transformers memungkinkan Anda untuk melakukan tugas-tugas NLP hanya dengan beberapa baris kode.
Pipeline secara internal melakukan tiga langkah berikut ketika menerima data teks mentah.
- Tokenizer: prapemrosesan dilakukan untuk mengubah data menjadi format input model.
- Model: teks input yang telah dikonversi dimasukkan ke dalam model.
- Post Processing: hasil inferensi model diproses setelahnya menjadi bentuk yang lebih mudah dikelola untuk keluaran.
Cara menggunakan Pipeline
Instal Hugging Face Transformers dengan perintah berikut.
$ pip install transformers
Tentukan nama tugas yang ingin Anda lakukan di pipeline
, seperti pipeline("question-answering")
. Tugas dapat berupa, misalnya
- feature-extraction (get the vector representation of a text)
- fill-mask
- ner (named entity recognition)
- question-answering
- sentiment-analysis
- summarization
- text-generation
- translation
- zero-shot-classification
Informasi lebih lanjut dapat ditemukan di tautan berikut.
Misalnya, jika Anda ingin melakukan klasifikasi teks, tulis yang berikut ini.
from transformers import pipeline
pipe = pipeline("text-classification")
pipe("This restaurant is awesome")
Hasil berikut ini dikembalikan.
[{'label': 'POSITIVE', 'score': 0.9998743534088135}]
Jika Anda ingin menggunakan model tertentu dari Hub, Anda dapat menghilangkan nama tugas hanya jika model di Hub sudah mendefinisikan tugas tersebut.
from transformers import pipeline
pipe = pipeline(model="roberta-large-mnli")
pipe("This restaurant is awesome")
>> [{'label': 'NEUTRAL', 'score': 0.7313136458396912}]
Anda juga dapat meneruskan daftar untuk masukan.
from transformers import pipeline
pipe = pipeline("text-classification")
pipe(["This restaurant is awesome", "This restaurant is awful"])
>> [{'label': 'POSITIVE', 'score': 0.9998743534088135},
>> {'label': 'NEGATIVE', 'score': 0.9996669292449951}]
Pipeline khusus juga dapat ditentukan.
class MyPipeline(TextClassificationPipeline):
def postprocess():
# Your code goes here
scores = scores * 100
# And here
my_pipeline = MyPipeline(model=model, tokenizer=tokenizer, ...)
# or if you use *pipeline* function, then:
my_pipeline = pipeline(model="xxxx", pipeline_class=MyPipeline)
Contoh-contoh Pipeline
Berikut ini adalah contoh tugas NLP.
- Zero-shot classification
- Text generation
- Mask filling
Zero-shot classification
Zero-shot classification adalah tugas yang tidak memerlukan teks berlabel; alih-alih, Anda cukup memberikan label yang ingin Anda klasifikasikan secara langsung ke Pipeline, yang mengembalikan hasil inferensi untuk label tersebut. Memberi anotasi pada teks biasanya memakan waktu dan memerlukan pengetahuan khusus. Zero-shot classification sangat berguna dalam kasus-kasus seperti itu.
from transformers import pipeline
classifier = pipeline("zero-shot-classification")
classifier(
"This is a course about the Transformers library",
candidate_labels=["education", "politics", "business"],
)
{'sequence': 'This is a course about the Transformers library',
'labels': ['education', 'business', 'politics'],
'scores': [0.8445988297462463, 0.11197440326213837, 0.04342682659626007]}
Text generation
Text generation adalah tugas di mana, dengan diberikan sebuah perintah, model akan membuat teks lainnya dan melengkapi secara otomatis.
from transformers import pipeline
generator = pipeline("text-generation")
generator("In this course, we will teach you how to")
[{'generated_text': 'In this course, we will teach you how to understand and use '
'data flow and data interchange when handling user data. We '
'will be working with one or more of the most commonly used '
'data flows — data flows of various types, as seen by the '
'HTTP'}]
Anda juga dapat memilih model tertentu dari Hub.
from transformers import pipeline
generator = pipeline("text-generation", model="distilgpt2")
generator(
"In this course, we will teach you how to",
max_length=30,
num_return_sequences=2,
)
[{'generated_text': 'In this course, we will teach you how to manipulate the world and '
'move your mental and physical capabilities to your advantage.'},
{'generated_text': 'In this course, we will teach you how to become an expert and '
'practice realtime, and with a hands on experience on both real '
'time and real'}]
Mask filling
Mask filling adalah tugas mengisi bagian yang kosong dari teks yang diberikan.
from transformers import pipeline
unmasker = pipeline("fill-mask")
unmasker("This course will teach you all about <mask> models.", top_k=2)
[{'sequence': 'This course will teach you all about mathematical models.',
'score': 0.19619831442832947,
'token': 30412,
'token_str': ' mathematical'},
{'sequence': 'This course will teach you all about computational models.',
'score': 0.04052725434303284,
'token': 38163,
'token_str': ' computational'}]
Referensi