Zephyrnet-logo

Hugging Face Transformers Pijplijnfuncties | Geavanceerde NLP

Datum:

Dit artikel is gepubliceerd als onderdeel van het Data Science-blogathon.

Objectief

Deze blogpost leert u hoe u de Hugging Face Transformers-functies kunt gebruiken om langdurige Natural Language Processing-taken uit te voeren.

Voorwaarden

Kennis van diep leren en natuurlijke taalverwerking (NLP)

Introductie

in de krant gezet Aandacht is alles wat je nodig hebt; het is een encoder-decoderarchitectuur, wat betekent dat invoer die door een stapel is verwerkt (gecodeerd) wordt gebruikt door (gedecodeerd) door een andere stapel om de uitvoer te genereren. 

Er zijn wijzigingen rond de Transforms-architectuur, waarbij alleen de encoderstack wordt gebruikt zoals in BERT (bidirectionele encoderrepresentatie van transformator) of decoderstack gebruikt zoals in GPT (Generative Pre-trained Transformer) Architecture. T5 (Text to Text Transfer Transformer), gemaakt door Google, gebruikt zowel encoder- als decoderstack.

Hugging Face Transformers-functies bieden een pool van vooraf getrainde modellen om verschillende taken uit te voeren, zoals visie, tekst en audio. Transformers biedt API's om de vooraf getrainde modellen te downloaden en ermee te experimenteren, en we kunnen ze zelfs verfijnen op onze datasets.

W?

  • Gebruiksvriendelijke state-of-the-art modellen: Hoge prestaties op het gebied van Natural Language Understanding (NLU) & Generation (NLG), Computer Vision en audiotaken
  • Lagere rekenkosten, kleinere ecologische voetafdruk: onderzoekers kunnen omscholing delen.
  • Kies het juiste raamwerk voor elk onderdeel van de levensduur van een model: train ultramoderne modellen in 3 regels code, kies het juiste raamwerk voor training, evaluatie en productie.
  • Pas eenvoudig een model of een voorbeeld aan onze behoeften aan: het biedt voorbeelden voor elke architectuur om de resultaten te reproduceren die door de oorspronkelijke auteurs zijn gepubliceerd.
Hugging Face Transformers-functies

bron

Transformatoren pijpleiding

Pipelines zijn de abstractie voor de complexe code achter de transformatorbibliotheek; Het is het gemakkelijkst om de vooraf getrainde modellen te gebruiken voor gevolgtrekking. Het biedt gebruiksvriendelijke pijplijnfuncties voor een verscheidenheid aan taken, waaronder maar niet beperkt tot benoemde entiteitsherkenning, gemaskeerde taalmodellering, sentimentanalyse, functie-extractie en vraagbeantwoording.

Voor het machine learning/deep learning-experiment moeten we de gegevens voorverwerken, het model trainen en een inferentiescript schrijven; in tegenstelling tot Pipeline-functies, moeten we het importeren en onze onbewerkte gegevens doorgeven. De pijplijn zal onze gegevens in de backend voorverwerken, inclusief tokenisatie en opvulling en alle relevante verwerkingsstappen voor de invoer van het algoritme, en de uitvoer retourneren met slechts een oproep ernaar.

We moeten de Transformers-bibliotheek installeren om deze fantastische pijplijnfuncties te gebruiken. Ga naar uw Jupyter-notebook, lokaal of in Google Colab (voorkeur).

Installeer de bibliotheek met pip

! pip transformatoren installeren

Laten we nu de magische doos uitpakken en kijken hoe het ons verrast.

Importeer eerst de pijplijn uit de transformatorbibliotheek

van transformatoren import pijpleiding

Laten we beginnen met sentimentanalyse.

Sentiment analyse

Sentimentanalyse wordt gebruikt om het sentiment van de tekst te voorspellen, of de tekst nu positief of negatief is. Om sentimentanalyse uit te voeren met Pipeline, moeten we de Pipeline als volgt initialiseren met de taak 'sentimentanalyse'.

sentimentAnalysis_pipeline = pijplijn("sentiment-analyse")

test_sentence = “Dit is echt een goede film. Ik vond het geweldig en zal het opnieuw bekijken”

print(sentimentAnalyse_pijpleiding(test_zin))


Testzin | Hugging Face Transformers-functies

Bron: auteur

We kunnen zelfs een lijst met zinnen doorgeven, en de pijplijn retourneert een gevolgtrekking voor elk van de voorbeelden in de lijst.

test_sentence1 = “Dit is echt een goede film. Ik vond het geweldig en zal het opnieuw bekijken”

test_sentence2 = "Slechtste film die ik ooit heb gezien"

print(sentimentAnalysis_pipeline([test_zin1,test_zin2]))


Uitgang 3 | Hugging Face Transformers-functies

Bron: auteur

Voor het eerst downloadt de Pipeline het onderliggende model; We kunnen zelfs kiezen welk model we willen gebruiken met de model parameter; standaard gebruikt het de 'distillery-base-uncased-finetuned-sst-2-Engels model.

Zie hoe gemakkelijk het was; we kunnen ons model zelfs trainen op aangepaste datasets. Bekijk mijn blog om te weten hoe u het BERT-model kunt verfijnen voor taken voor sentimentanalyse.

Heb je je ooit voorgesteld een schrijver of dichter te zijn? Welnu, zo niet, dan kan de volgende pijplijn u helpen die kant te activeren.

Laten we een pijplijn voor het genereren van tekst bouwen.

Tekst genereren

Het model genereert de volgende N karakters gegeven een paar woorden of een zin.

We moeten de pijplijn initialiseren met de taak 'tekst genereren'.

text_gen_pipeline = pipeline('text-generation', model='gpt2') prompt = 'Voordat we verder gaan, hoor me spreken' text_gen_pipeline(prompt, max_length=60)
Uitgang 2

Bron: auteur

Standaard wordt een enkele uitvoer van max_length geretourneerd. We kunnen echter de aantal_return_sequences parameter om zoveel reeksen uit te voeren als we willen.

Voor meer informatie over het bouwen van een tekstgeneratiemodel met LSTM, bekijk de Github-repository.

Laten we nu onze laatste pijplijn bouwen voor de taak voor het beantwoorden van vragen.

Vraag beantwoorden

Gegeven een tekst (context) en de vraag, extraheer het antwoord.

Voor QnA moeten we de pijplijn initialiseren met de taak "vraag beantwoorden".

context = ''' Totale vergoedingen voor alle diensten betaald door de Vennootschap en haar dochterondernemingen, op geconsolideerde basis, aan commissarissen van de Vennootschap en andere kantoren in de netwerkentiteit waarvan de commissarissen deel uitmaken, gedurende het jaar eindigend in maart 31, 2021, is 59.73 crore. Tijdens het boekjaar 2020-21 heeft het bedrijf op onderhandse plaatsingsbasis uitgegeven en ongedekte aflosbare niet-converteerbare obligaties (NCD's) toegewezen met een nominale waarde van 10,00,000/- (rupees tien lakh), samen goed voor 24,955 crores in zeven tranches volgens de uitgiftevoorwaarden van de respectieve tranches. Verder werd de derde tranche van 500 crores ontvangen van de houders van gedeeltelijk betaalde NCD's (Series IA). De fondsen die via NCD's zijn opgehaald, zijn gebruikt voor de terugbetaling van bestaande leningen en andere doeleinden in het kader van de normale bedrijfsvoering. '''
ans = ques_ans_pipeline({'question': 'Wat is de totale vergoeding die het bedrijf aan auditors betaalt?', 'context': f'{context}'}) print(ans)
uitgang

Bron: auteur

Uitstekend, het model heeft het antwoord op de gegeven vraag nauwkeurig geëxtraheerd. Het heeft ook de offsets, begin en einde, geretourneerd waar het antwoord in de context verschijnt, en de betrouwbaarheidsscore geeft aan hoe zeker het model is in de geëxtraheerde oplossing.

De bovenstaande context is ontleend aan het Jaarverslag 2020-2021 van Reliance Company, link in de referentiesectie. Dit is slechts een voorbeeld; het kan echter in de financiële sector worden gebruikt om de lange, verontrustende rapporten te analyseren door gewoon de juiste vragen aan het model te stellen.

Eindnotities

We kunnen gemakkelijk andere pijplijnen gebruiken, waaronder tekstsamenvatting, herkenning van entiteiten op naam, taalvertaling en nog veel meer. Met deze krachtige transformatorfunctionaliteit kunnen we uitstekende toepassingen maken zonder zelfs maar de codeergrond in te hoeven gaan. Een van de voordelen van het gebruik van deze vooraf getrainde modellen is dat we onze modellen niet helemaal opnieuw hoeven te trainen, wat soms dagen duurt om zich voor te bereiden op een grote hoeveelheid gegevens, waardoor we minder hulpbronnen verbruiken en uiteindelijk onze bedrijfskosten verlagen.

Referenties

🤗 Transformatoren (huggingface.co)

Pijpleidingen (huggingface.co)

Jaarverslag_2020-21.aspx (ril.com)

Over Mij

Ik ben een Machine Learning Engineer en los uitdagende zakelijke problemen op door middel van data en machine learning. Voel je vrij om contact met mij op te nemen op Linkedin.

Lees meer blogs over Hugging Face Transformers-functies.

De in dit artikel getoonde media zijn geen eigendom van Analytics Vidhya en worden naar goeddunken van de auteur gebruikt. 

Bron: https://www.analyticsvidhya.com/blog/2022/01/hugging-face-transformers-pipeline-functions-advanced-nlp/

spot_img

Laatste intelligentie

spot_img