(NLP) hat die Artwork und Weise, wie wir mit Technologie interagieren, revolutioniert.
Erinnern Sie sich, als Chatbots zum ersten Mal auftauchten und wie Roboter klangen? Zum Glück gehört das der Vergangenheit an!
Transformer-Modelle haben ihren Zauberstab geschwenkt und NLP-Aufgaben neu gestaltet. Aber bevor Sie diesen Beitrag fallen lassen, denken Sie darüber nach „Meine Güte, Transformatoren sind viel zu dicht, um sie zu lernen“, ertrage es mit mir. Wir werden nicht in einem weiteren technischen Artikel versuchen, Ihnen die Mathematik hinter dieser erstaunlichen Technologie beizubringen, sondern stattdessen in der Praxis lernen, was sie für uns tun kann.
Mit der Transformers Pipeline von Hugging Face sind NLP-Aufgaben einfacher als je zuvor.
Lasst uns erkunden!
Die einzige Erklärung, was ein Transformator ist
Denken Sie nach Transformatormodelle als Elite der NLP-Welt.
Transformer zeichnen sich durch ihre Fähigkeit aus, sich durch einen Mechanismus namens „Selbstaufmerksamkeit“ auf verschiedene Teile einer Eingabesequenz zu konzentrieren.
Transformatoren sind leistungsstark aufgrund „Selbstaufmerksamkeit“ Eine Funktion, mit der sie entscheiden können, auf welche spezifischen Teile eines Satzes sie sich zu einem bestimmten Zeitpunkt am wichtigsten konzentrieren möchten.
Schon mal was von BERT, GPT oder RoBERTa gehört? Das sind sie! BERT (Bidirektionale Encoder-Darstellungen von Transformers) ist ein revolutionäres KI-Sprachmodell von Google aus dem Jahr 2018, das den Textkontext versteht, indem es Wörter gleichzeitig von hyperlinks nach rechts und von rechts nach hyperlinks liest.
Genug geredet, fangen wir an, in die Materie einzutauchen transformers Paket (1).
Einführung in die Transformers-Pipeline
Die Transformers-Bibliothek bietet ein komplettes Toolkit zum Trainieren und Ausführen hochmoderner vorab trainierter Modelle. Die Pipeline-Klasse, die unser Hauptthema ist, bietet eine benutzerfreundliche Oberfläche für verschiedene Aufgaben, z. B.:
- Textgenerierung
- Bildsegmentierung
- Spracherkennung
- Dokument-QA.
Vorbereitung
Bevor wir beginnen, führen wir die Grundlagen durch und stellen unsere Instruments zusammen. Wir benötigen Python, die Transformers-Bibliothek und möglicherweise entweder PyTorch oder TensorFlow. Die Set up erfolgt wie gewohnt: pip set up transformers.
IDEs wie Anaconda oder Plattformen wie Google Colab bringen diese bereits als Standardinstallation mit. Keine Probleme.
Mit der Pipeline-Klasse können Sie viele maschinelle Lernaufgaben mit jedem auf dem Hugging Face Hub verfügbaren Modell ausführen. Es ist so einfach wie Anschließen und Spielen.
Während jede Aufgabe über ein vorkonfiguriertes Standardmodell und einen Präprozessor verfügt, können Sie diese ganz einfach anpassen, indem Sie den Modellparameter verwenden, um ein anderes Modell Ihrer Wahl einzutauschen.
Code
Beginnen wir mit den Transformatoren 101 und sehen wir uns an, wie es funktioniert, bevor wir näher darauf eingehen. Die erste Aufgabe, die wir durchführen werden, ist eine einfache Stimmungsanalyse zu einer bestimmten Schlagzeile.
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
classifier("Instagram needs to restrict hashtag spam.")
Die Antwort ist die folgende.
No mannequin was provided, defaulted to distilbert/distilbert-base-uncased-finetuned-sst-2-english and revision 714eb0f (https://huggingface.co/distilbert/distilbert-base-uncased-finetuned-sst-2-english).
Utilizing a pipeline with out specifying a mannequin title and revision in manufacturing will not be advisable.
Machine set to make use of cpu
({'label': 'NEGATIVE', 'rating': 0.988932728767395})
Da wir keinen geliefert haben mannequin Parameter, es ging mit der Standardoption. Als Klassifizierung haben wir herausgefunden, dass die Stimmung über dieser Überschrift zu 98 % NEGATIV ist. Darüber hinaus könnten wir eine Liste von Sätzen zur Klassifizierung haben, nicht nur einen.
Tremendous einfach, oder? Aber das ist noch nicht alles. Wir können weiterhin andere coole Funktionen erkunden.
Zero-Shot-Klassifizierung
Eine Zero-Shot-Klassifizierung bedeutet die Kennzeichnung eines Textes, der noch nicht gekennzeichnet wurde. Wir haben additionally kein klares Muster dafür. Dann müssen wir nur noch ein paar Klassen bestehen, damit das Modell eine auswählen kann. Dies kann beim Erstellen von Trainingsdatensätzen für maschinelles Lernen sehr nützlich sein.
Dieses Mal füttern wir die Methode mit mannequin Argument und eine Liste der zu klassifizierenden Sätze.
classifier = pipeline("zero-shot-classification", mannequin = 'fb/bart-large-mnli')
classifier(
("Inter Miami wins the MLS", "Match tonight betwee Chiefs vs. Patriots", "Michael Jordan plans to promote Charlotte Hornets"),
candidate_labels=("soccer", "soccer", "basketball")
)
({'sequence': 'Inter Miami wins the MLS',
'labels': ('soccer', 'soccer', 'basketball'),
'scores': (0.9162040948867798, 0.07244189083576202, 0.011354007758200169)},
{'sequence': 'Match tonight betwee Chiefs vs. Patriots',
'labels': ('soccer', 'basketball', 'soccer'),
'scores': (0.9281435608863831, 0.0391676239669323, 0.032688744366168976)},
{'sequence': 'Michael Jordan plans to promote Charlotte Hornets',
'labels': ('basketball', 'soccer', 'soccer'),
'scores': (0.9859175682067871, 0.009983371943235397, 0.004099058918654919)})
Es sieht so aus, als ob das Mannequin beim Beschriften dieser Sätze großartige Arbeit geleistet hat!
Textgenerierung
Das Paket kann auch Textual content generieren. Dies ist eine gute Möglichkeit, einen netten kleinen Geschichtengenerator zu erstellen, den wir unseren Kindern vor dem Schlafengehen erzählen können. Wir erhöhen die temperature Parameter, um das Modell kreativer zu machen.
generator = pipeline("text-generation", temperature=0.8)
generator("As soon as upon a time, in a land the place the King Pineapple was")
({'generated_text':
"As soon as upon a time, in a land the place the King Pineapple was a typical
crop, the Queen of the North had lived in a small village. The Queen had all the time
lived in a small village, and her daughter, who was additionally the daughter of the Queen,
had lived in a bigger village. The royal household would come to the Queen's village,
after which the Queen would return to her fort and stay there along with her daughters.
In the course of the night time, she would lay down on the royal mattress and kiss the princess
at the very least as soon as, after which she would return to her fort to stay there along with her males.
Within the daytime, nevertheless, the Queen can be gone endlessly, and her mom can be alone.
The rationale for this disappearance, within the type of the Nice Northern Passage
and the Nice Northern Passage, was the royal household had all the time needed to take
the place of the Queen. Ultimately, they took the place of the Queen, and went
with their daughter to satisfy the King. At the moment, the King was the one particular person
on the island who had ever heard of the Nice Northern Passage, and his return was
prior to now.
After Queen Elizabeth's dying, the royal household went to the
Nice Northern Passage, to hunt out the Princess of England and put her there.
The Princess of England had been in"})
Namens- und Entitätserkennung
Diese Aufgabe kann eine Particular person (PER), einen Ort (LOC) oder eine Entität (ORG) in einem bestimmten Textual content erkennen. Das eignet sich beispielsweise hervorragend für die schnelle Erstellung von Marketinglisten mit Lead-Namen.
ner = pipeline("ner", grouped_entities=True)
ner("The person landed on the moon in 1969. Neil Armstrong was the primary man to step on the Moon's floor. He was a NASA Astronaut.")
({'entity_group': 'PER', 'rating': np.float32(0.99960065),'phrase': 'Neil Armstrong',
'begin': 36, 'finish': 50},
{'entity_group': 'LOC', 'rating': np.float32(0.82190216), 'phrase': 'Moon',
'begin': 84, 'finish': 88},
{'entity_group': 'ORG', 'rating': np.float32(0.9842771), 'phrase': 'NASA',
'begin': 109, 'finish': 113},
{'entity_group': 'MISC', 'rating': np.float32(0.8394754), 'phrase': 'As',
'begin': 114, 'finish': 116})
Zusammenfassung
Die Zusammenfassung ist möglicherweise eine der am häufigsten verwendeten Aufgaben und ermöglicht es uns, einen Textual content zu reduzieren und dabei seine Essenz und wichtigen Teile beizubehalten. Fassen wir das zusammen Wikipedia-Seite über Transformers.
summarizer = pipeline("summarization")
summarizer("""
In deep studying, the transformer is a synthetic neural community structure based mostly
on the multi-head consideration mechanism, during which textual content is transformed to numerical
representations known as tokens, and every token is transformed right into a vector through lookup
from a phrase embedding desk.(1) At every layer, every token is then contextualized inside the scope of the context window with different (unmasked) tokens through a parallel multi-head consideration mechanism, permitting the sign for key tokens to be amplified and fewer necessary tokens to be diminished.
Transformers have the benefit of getting no recurrent models, subsequently requiring
much less coaching time than earlier recurrent neural architectures (RNNs) similar to lengthy
short-term reminiscence (LSTM).(2) Later variations have been broadly adopted for coaching
giant language fashions (LLMs) on giant (language) datasets.(3)
""")
({'summary_text':
' In deep studying, the transformer is a synthetic neural community structure
based mostly on the multi-head consideration mechanism . Transformerers have the benefit of
having no recurrent models, subsequently requiring much less coaching time than earlier
recurrent neural architectures (RNNs) similar to lengthy short-term reminiscence (LSTM)'})
Exzellent!
Bilderkennung
Es gibt andere, komplexere Aufgaben, wie zum Beispiel die Bilderkennung. Und genauso einfach zu bedienen wie die anderen.
image_classifier = pipeline(
process="image-classification", mannequin="google/vit-base-patch16-224"
)
consequence = image_classifier(
"https://photographs.unsplash.com/photo-1689009480504-6420452a7e8e?q=80&w=687&auto=format&match=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fApercent3Dpercent3D"
)
print(consequence)

({'label': 'Yorkshire terrier', 'rating': 0.9792122840881348},
{'label': 'Australian terrier', 'rating': 0.00648861238732934},
{'label': 'silky terrier, Sydney silky', 'rating': 0.00571345305070281},
{'label': 'Norfolk terrier', 'rating': 0.0013639888493344188},
{'label': 'Norwich terrier', 'rating': 0.0010306559270247817})
Anhand dieser beiden Beispiele wird deutlich, wie einfach es ist, mit der Transformers-Bibliothek verschiedene Aufgaben mit sehr wenig Code auszuführen.
Zusammenfassung
Was wäre, wenn wir unser Wissen zusammenfassen, indem wir es in einem praktischen, kleinen Projekt anwenden?
Lassen Sie uns eine einfache Streamlit-App erstellen, die einen Lebenslauf lesen und die Stimmungsanalyse zurückgeben und den Ton des Textes klassifizieren kann ("Senior", "Junior", "Trainee", "Blue-collar", "White-collar", "Self-employed")
Im nächsten Code:
- Importieren Sie die Pakete
- Erstellen Sie Titel und Untertitel der Seite
- Fügen Sie einen Texteingabebereich hinzu
- Tokenisieren Sie den Textual content und teilen Sie ihn für die Transformationsaufgabe in Abschnitte auf. Siehe die Liste der Modelle (4).
import streamlit as st
import torch
from transformers import pipeline
from transformers import AutoTokenizer
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
st.title("Resumé Sentiment Evaluation")
st.caption("Checking the sentiment and language tone of your resume")
# Add enter textual content space
textual content = st.text_area("Enter your resume textual content right here")
# 1. Load your required tokenizer
model_checkpoint = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
# 2. Tokenize the textual content with out padding or truncation
# We return tensors or lists to slice them manually
tokens = tokenizer(textual content, add_special_tokens=False, return_tensors="pt")("input_ids")(0)
# 3. Instantiate Textual content Splitter with Chunk Dimension of 500 phrases and Overlap of 100 phrases in order that context will not be misplaced
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100)
# 4. Cut up into chunks for environment friendly retrieval
chunks = text_splitter.split_documents(textual content)
# 5. Convert again to strings or add particular tokens for mannequin enter
decoded_chunks = ()
for chunk in chunks:
# This provides (CLS) and (SEP) and converts again to a format the mannequin likes
final_input = tokenizer.prepare_for_model(chunk.tolist(), add_special_tokens=True)
decoded_chunks.append(tokenizer.decode(final_input('input_ids')))
st.write(f"Created {len(decoded_chunks)} chunks.")
Als Nächstes initiieren wir die Pipeline des Transformators, um:
- Führen Sie die Stimmungsanalyse durch und geben Sie den Konfidenzprozentsatz zurück.
- Klassifizieren Sie den Textton und geben Sie die Konfidenz % zurück.
# Initialize sentiment evaluation pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
# Carry out sentiment evaluation
if st.button("Analyze"):
col1, col2 = st.columns(2)
with col1:
# Sentiment evaluation
sentiment = sentiment_pipeline(decoded_chunks)(0)
st.write(f"Sentiment: {sentiment('label')}")
st.write(f"Confidence: {100*sentiment('rating'):.1f}%")
with col2:
# Categorize tone
tone_pipeline = pipeline("zero-shot-classification", mannequin = 'fb/bart-large-mnli',
candidate_labels=("Senior", "Junior", "Trainee", "Blue-collar", "White-collar", "Self-employed"))
tone = tone_pipeline(decoded_chunks)(0)
st.write(f"Tone: {tone('labels')(0)}")
st.write(f"Confidence: {100*tone('scores')(0):.1f}%")
Hier ist der Screenshot.

Bevor Sie gehen
Hugging Face (HF) Transformers Pipelines sind für Datenanwender wirklich ein Wendepunkt. Sie bieten eine unglaublich effiziente Möglichkeit, komplexe maschinelle Lernaufgaben wie Textgenerierung oder Bildsegmentierung mit nur wenigen Codezeilen zu bewältigen.
HF hat die schwere Arbeit bereits erledigt, indem es anspruchsvolle Modelllogik in einfache, intuitive Methoden verpackt hat.
Dies verlagert den Fokus weg von der Low-Stage-Codierung und ermöglicht es uns, uns auf das Wesentliche zu konzentrieren: unsere Kreativität zu nutzen, um wirkungsvolle, reale Anwendungen zu erstellen.
Wenn Ihnen dieser Inhalt gefallen hat, finden Sie mehr über mich auf meiner Web site.
GitHub-Repository
https://github.com/gurezende/Resume-Sentiment-Evaluation
Referenzen
(1. Transformers-Paket) https://huggingface.co/docs/transformers/index
(2. Transformatoren-Pipelines) https://huggingface.co/docs/transformers/pipeline_tutorial
(3. Beispiele für Pipelines) https://huggingface.co/be taught/llm-course/chapter1/3#summarization
(3. HF-Modelle) Huggingface.co/fashions
