4 minuty Czytania

Przetwarzanie języka naturalnego z biblioteką Transformers od Hugging Face

Biblioteka Transformers od Hugging Face jednym z czołowych narzędzi w dziedzinie NLP. Modele transformacyjne zmieniły sposób w jaki przetwarza się język naturalny i w znaczy sposób przyczyniły się do rozwoju m.in. ChatGPT. W 2017 roku wprowadzono architekturę sieci neuronowej. Kolejnym przełomem były repozytoria modeli, pośród których znajduje się właśnie biblioteka Transformers od Hugging Face, która pozwala w łatwy sposób pobrać wstępnie wytrenowany model, skonfigurować go i użytkować.

Czym jest Natural Language Processing?

Natural Language Processing (NLP), czyli przetwarzanie języka naturalnego, to dziedzina sztucznej inteligencji, która rewolucjonizuje interakcję między ludźmi a komputerami. Najprościej mówiąc NLP to technologia wspomagająca komputery w zrozumieniu, interpretacji języka człowieka. Dzięki NLP język ludzki jest dla maszyn czytelny i zrozumiały.

Grafika przedstawia podział NLP z Python i wyróżnia omawianą w tekście bibliotekę Transformers

Co to jest biblioteka Transformers?

Transformers to zaawansowane modele głębokiego uczenia, które zostały wprowadzone przez zespół Google Research w 2017 roku. Zrewolucjonizowały one NLP, umożliwiając równoczesne przetwarzanie całych sekwencji danych zamiast sekwencyjnego przetwarzania słowo po słowie. Hugging Face udostępnia otwartą bibliotekę Transformers, która zawiera implementacje różnych modeli Transformerów, w tym BERT, GPT-2, T5 i wiele innych.

Architektura Transformer pozwala uczyć modele z nieetykietowanych danych. Co to znaczy? Najprościej mówiąc chodzi o uzupełnianie brakujących fragmentów tekstu, jak na przykładzie poniżej:

  1. Oryginalne zdanie: „Kupiłem mleko w sklepie”.
  2. Dane treningowe: „Kupiłem mleko w [MASK] sklepie”.
  3. Celem modelu jest przewidywanie, jaki wyraz znajduje się pod tokenem [MASK].

Dzięki temu osiągają one znakomite wyniki w wielu zadaniach NLP, takich jak tłumaczenie maszynowe, generowanie tekstu, klasyfikacja tekstu czy rozpoznawanie jednostek nazwanych (NER). Biblioteka ta jest łatwa w użyciu i zapewnia interfejsy API do popularnych frameworków, takich jak PyTorch i TensorFlow.

Pierwsze kroki z biblioteką Transformers

Aby rozpocząć pracę z biblioteką Transformers, należy wykonać kilka prostych kroków, które omówione są poniżej:

Instalacja

Najpierw należy zainstalować i zaimportować bibliotekę. Można to zrobić za pomocą menedżera pakietów pip:

pip install transformers

Ładowanie modelu i tokenizatora

Po zainstalowaniu biblioteki można załadować model i odpowiedni tokenizator. Na przykład, aby załadować model GPT-2 dla języka polskiego:

from transformers import GPT2LMHeadModel, GPT2Tokenizer

model_name = "flax-community/papuGaPT2"
model = GPT2LMHeadModel.from_pretrained(model_name)
tokenizer = GPT2Tokenizer.from_pretrained(model_name)

Tokenizacja tekstu

Gdy mamy nasz wstępnie wytrenowany model i załadowany tokenizator, dostarczamy początkowy tekst, kodujemy go za pomocą tokenizatora,

input_text = "Dawno, dawno temu"
input_ids = tokenizer.encode(input_text, return_tensors="pt")

Przetwarzanie tekstu przez model

W poniższym kodzie używamy modelu do wygenerowania kontynuacji tekstu. Określamy maksymalną długość wygenerowanego tekstu i liczbę sekwencji do wygenerowania.

output = model.generate(
    input_ids, 
    max_length=100, 
    num_return_sequences=1, 
    pad_token_id=tokenizer.eos_token_id
)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

Praktyczne zastosowania Transformers

Biblioteka ta może być wykorzystywana do różnych zadań Natural Language Processing. Oto kilka przykładów:

Klasyfikacja tekstu

Model może klasyfikować teksty dzięki funkcji Pipe() Hugging Face, na różne kategorie, takie jak wykrywanie spamu, analiza sentymentu czy klasyfikacja tematów. Uzyskane dane można zwizualizować za pomocą biblioteki Pandas w języku Python.

Oto jak można użyć funkcji Pipe do klasyfikacji tekstu:

classifier =pipeline("text-classification")

Generowanie tekstu i odpowiadanie na pytania

Modele takie jak GPT-2 mogą generować tekst na podstawie podanego kontekstu, co jest użyteczne w tworzeniu chatbotów czy automatycznym pisaniu artykułów.

Odpowiadanie na pytania polega na wydobywaniu precyzyjnych odpowiedzi na konkretne pytania z danego kontekstu. Jak to zrobić?



reader = pipeline("question-answering")

text ="Bluemetrica to firma szkoleniowa"

question ="Czym zajmuje się firma Bluemetrica?"

outputs = reader(question=question, context=text)

print(outputs)

Rozpoznawanie jednostek nazwanych (NER)

NER odgrywa kluczową rolę w wyodrębnianiu z tekstu „obiektów świata rzeczywistego”. Model może identyfikować i klasyfikować nazwy własne w tekście, takie jak nazwy osób, miejsc czy organizacji.

Tłumaczenie maszynowe

Modele Transformerów mogą tłumaczyć teksty z jednego języka na inny, osiągając wysoką jakość tłumaczenia.

Zacznij programować!

Fine-tuning modeli

Jednym z najważniejszych aspektów pracy z modelami Transformerów jest możliwość fine-tuningu, czyli dostosowywania pretrenowanych modeli do specyficznych zadań lub danych. Hugging Face ułatwia ten proces, udostępniając narzędzia do łatwego trenowania modeli na nowych danych.

Na przykład, aby fine-tunować model BERT na nowym zbiorze danych do analizy sentymentu, można skorzystać z narzędzi dostępnych w bibliotece transformers:

from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
    output_dir='./results',         
    num_train_epochs=3,             
    per_device_train_batch_size=8,  
    per_device_eval_batch_size=8,   
    warmup_steps=500,               
    weight_decay=0.01,              
    logging_dir='./logs',           
)

trainer = Trainer(
    model=model,                         
    args=training_args,                  
    train_dataset=train_dataset,         
    eval_dataset=eval_dataset            
)

trainer.train()

Podsumowanie

Biblioteka Transformers dzięki prostocie użytkowania i wsparciu dla najnowszych modeli NLP, pozwala ona zarówno początkującym, jak i zaawansowanym użytkownikom na łatwe wdrażanie zaawansowanych rozwiązań NLP. Niezależnie od tego, czy chcesz zbudować chatbota, automatycznie generować teksty, czy analizować sentyment w mediach społecznościowych, biblioteka Transformers pomoże Ci osiągnąć Twoje cele.