Udvikling af tekstopsummering: En Python-tutorial med GPT-3.5

Udvikling af tekstopsummering: En Python-tutorial med GPT-3.5

Kildeknude: 2571007

Udvikling af tekstopsummering: En Python-tutorial med GPT-3.5
Billede af frimufilms on Freepik
 

Dette er en æra, hvor AI-gennembrud kommer dagligt. Vi havde ikke mange AI-genereret offentligt for et par år siden, men nu er teknologien tilgængelig for alle. Det er fremragende for mange individuelle skabere eller virksomheder, der ønsker at udnytte teknologien væsentligt til at udvikle noget komplekst, hvilket kan tage lang tid.

Et af de mest utrolige gennembrud, der ændrer måden, vi arbejder på, er udgivelsen af GPT-3.5 model fra OpenAI. Hvad er GPT-3.5-modellen? Hvis jeg lader modellen tale for sig selv. I så fald er svaret "en meget avanceret AI-model inden for naturlig sprogbehandling med enorme forbedringer i generering af kontekstuelt nøjagtig og relevant tekstt ”.

OpenAI leverer en API til GPT-3.5-modellen, som vi kan bruge til at udvikle en simpel app, såsom en tekstsammendrag. For at gøre det kan vi bruge Python til at integrere model-API'en i vores tilsigtede applikation problemfrit. Hvordan ser processen ud? Lad os komme ind i det.

Der er et par forudsætninger, før du følger denne vejledning, herunder:

– Kendskab til Python, herunder kendskab til brug af eksterne biblioteker og IDE

– Forståelse af API'er og håndtering af slutpunktet med Python

– At have adgang til OpenAI API'erne

For at få adgang til OpenAI API'er skal vi registrere os på OpenAI Developer Platform og besøg View API-nøglerne i din profil. På nettet skal du klikke på knappen "Opret ny hemmelig nøgle" for at få API-adgang (se billedet nedenfor). Husk at gemme nøglerne, da de ikke får vist nøglerne efter det.
 

Udvikling af tekstopsummering: En Python-tutorial med GPT-3.5
Billede af forfatter
 

Med al forberedelsen klar, lad os prøve at forstå det grundlæggende i OpenAI API-modellen.

GPT-3.5 familie model var specificeret til mange sproglige opgaver, og hver model i familien udmærker sig i nogle opgaver. Til dette øvelseseksempel ville vi bruge gpt-3.5-turbo da det var den anbefalede nuværende model, da denne artikel blev skrevet for dens kapacitet og omkostningseffektivitet.

Vi bruger ofte text-davinci-003 i OpenAI tutorial, men vi ville bruge den nuværende model til denne tutorial. Vi ville stole på Chatafslutning slutpunkt i stedet for Fuldførelse, fordi den aktuelle anbefalede model er en chatmodel. Selvom navnet var en chatmodel, fungerer det til enhver sprogopgave.

Lad os prøve at forstå, hvordan API'en fungerer. Først skal vi installere de nuværende OpenAI-pakker. 

pip install openai

 

Når vi er færdige med at installere pakken, vil vi forsøge at bruge API'et ved at oprette forbindelse via ChatCompletion-slutpunktet. Vi skal dog indstille miljøet, før vi fortsætter.

I din foretrukne IDE (for mig er det VS-kode), skal du oprette to filer kaldet .env , summarizer_app.py, svarende til billedet nedenfor.

 

Udvikling af tekstopsummering: En Python-tutorial med GPT-3.5
Billede af forfatter
 

summarizer_app.py er, hvor vi ville bygge vores simple summarizer-applikation, og .env fil er, hvor vi ville gemme vores API-nøgle. Af sikkerhedsmæssige årsager anbefales det altid at adskille vores API-nøgle i en anden fil i stedet for at hardkode dem i Python-filen.

I .env fil indsæt følgende syntaks og gem filen. Erstat your_api_key_here med din faktiske API-nøgle. Ændr ikke API-nøglen til et strengobjekt; lad dem som de er. 

OPENAI_API_KEY=your_api_key_here

 

For at forstå GPT-3.5 API bedre; vi ville bruge følgende kode til at generere ordet summarizer.

openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=100, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages=[ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ],
)

 

Ovenstående kode er, hvordan vi interagerer med OpenAI APIs GPT-3.5-modellen. Ved at bruge ChatCompletion API'et opretter vi en samtale og får det tilsigtede resultat efter at have bestået prompten.

Lad os nedbryde hver del for at forstå dem bedre. I den første linje bruger vi openai.ChatCompletion.create kode for at oprette svaret fra den prompt, vi ville sende til API'en.

I næste linje har vi vores hyperparametre, som vi bruger til at forbedre vores tekstopgaver. Her er en oversigt over hver hyperparameterfunktion:

  • model: Modelfamilien vi ønsker at bruge. I denne tutorial bruger vi den nuværende anbefalede model (gpt-3.5-turbo).
  • max_tokens: Den øvre grænse for de genererede ord af modellen. Det hjælper med at begrænse længden af ​​den genererede tekst.
  • temperature: Tilfældigheden af ​​modeloutputtet med en højere temperatur betyder et mere mangfoldigt og kreativt resultat. Værdiområdet er mellem 0 og uendeligt, selvom værdier mere end 2 ikke er almindelige. 
  • top_p: Top P eller top-k sampling eller nucleus sampling er en parameter til at styre prøveudtagningspuljen fra outputfordelingen. For eksempel betyder værdi 0.1, at modellen kun sampler output fra de øverste 10 % af fordelingen. Værdiområdet var mellem 0 og 1; højere værdier betyder et mere forskelligartet resultat.
  • frequency_penalty: Straffen for gentagelsestokenet fra outputtet. Værdien går mellem -2 og 2, hvor positive værdier ville undertrykke modellen fra at gentage token, mens negative værdier tilskynder modellen til at bruge mere gentagne ord. 0 betyder ingen straf.
  • messages: Parameteren, hvor vi sender vores tekstprompt, der skal behandles med modellen. Vi sender en liste over ordbøger, hvor nøglen er rolleobjektet (enten "system", "bruger" eller "assistent"), der hjælper modellen med at forstå konteksten og strukturen, mens værdierne er konteksten.
    •  Rollen "system" er de fastsatte retningslinjer for modellens "assistent" adfærd,
    •  Rollen "bruger" repræsenterer prompten fra den person, der interagerer med modellen,
    •  Rollen "assistent" er svaret på "bruger"-prompten

Efter at have forklaret parameteren ovenfor, kan vi se, at messages parameteren ovenfor har to ordbogsobjekter. Den første ordbog er, hvordan vi sætter modellen som en tekstopsummerer. Det andet er, hvor vi ville sende vores tekst og få opsummeringsoutputtet. 

I den anden ordbog vil du også se variablen person_type , prompt. Det person_type er en variabel jeg brugte til at styre den opsummerede stil, som jeg vil vise i selvstudiet. Mens prompt er, hvor vi ville sende vores tekst for at blive opsummeret.

Fortsæt med selvstudiet, placer nedenstående kode i summarizer_app.py fil, og vi vil prøve at gennemgå, hvordan funktionen nedenfor fungerer.

import openai
import os
from dotenv import load_dotenv load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY") def generate_summarizer( max_tokens, temperature, top_p, frequency_penalty, prompt, person_type,
): res = openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=100, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages= [ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ], ) return res["choices"][0]["message"]["content"]

 

Ovenstående kode er, hvor vi opretter en Python-funktion, der ville acceptere forskellige parametre, som vi tidligere har diskuteret, og returnere tekstresuméoutputtet. 

Prøv funktionen ovenfor med din parameter og se output. Lad os derefter fortsætte vejledningen for at oprette en simpel applikation med den strømbelyste pakke.

Strømbelyst er en open source Python-pakke designet til at skabe webapps til maskinlæring og datavidenskab. Den er nem at bruge og intuitiv, så den anbefales til mange begyndere. 

Lad os installere den strømbelyste pakke, før vi fortsætter med selvstudiet.

pip install streamlit

 

Når installationen er færdig, skal du sætte følgende kode i summarizer_app.py.

import streamlit as st #Set the application title
st.title("GPT-3.5 Text Summarizer") #Provide the input area for text to be summarized
input_text = st.text_area("Enter the text you want to summarize:", height=200) #Initiate three columns for section to be side-by-side
col1, col2, col3 = st.columns(3) #Slider to control the model hyperparameter
with col1: token = st.slider("Token", min_value=0.0, max_value=200.0, value=50.0, step=1.0) temp = st.slider("Temperature", min_value=0.0, max_value=1.0, value=0.0, step=0.01) top_p = st.slider("Nucleus Sampling", min_value=0.0, max_value=1.0, value=0.5, step=0.01) f_pen = st.slider("Frequency Penalty", min_value=-1.0, max_value=1.0, value=0.0, step=0.01) #Selection box to select the summarization style
with col2: option = st.selectbox( "How do you like to be explained?", ( "Second-Grader", "Professional Data Scientist", "Housewives", "Retired", "University Student", ), ) #Showing the current parameter used for the model with col3: with st.expander("Current Parameter"): st.write("Current Token :", token) st.write("Current Temperature :", temp) st.write("Current Nucleus Sampling :", top_p) st.write("Current Frequency Penalty :", f_pen) #Creating button for execute the text summarization
if st.button("Summarize"): st.write(generate_summarizer(token, temp, top_p, f_pen, input_text, option))

 

Prøv at køre følgende kode i din kommandoprompt for at starte programmet.

streamlit run summarizer_app.py

 

Hvis alt fungerer godt, vil du se følgende applikation i din standardbrowser.

 

Udvikling af tekstopsummering: En Python-tutorial med GPT-3.5
Billede af forfatter
 

Så hvad skete der i koden ovenfor? Lad mig kort forklare hver funktion, vi brugte:

  • .st.title: Angiv titelteksten til webapplikationen.
  • .st.write: Skriver argumentet ind i applikationen; det kunne være alt andet end primært en strengtekst.
  • .st.text_area: Angiv et område til tekstinput, der kan gemmes i variablen og bruges til prompten til vores tekstsammendrag
  • .st.columns: Objektbeholdere for at give side-by-side interaktion.
  • .st.slider: Giv en skyder-widget med indstillede værdier, som brugeren kan interagere med. Værdien gemmes på en variabel, der bruges som modelparameter.
  • .st.selectbox: Angiv en valgwidget, så brugerne kan vælge den opsummeringsstil, de ønsker. I eksemplet ovenfor bruger vi fem forskellige stilarter.
  • .st.expander: Giv en beholder, som brugere kan udvide og indeholde flere objekter.
  • .st.button: Giver en knap, der kører den tilsigtede funktion, når brugeren trykker på den.

Da streamlit automatisk ville designe brugergrænsefladen efter den givne kode fra top til bund, kunne vi fokusere mere på interaktionen.  

Med alle brikkerne på plads, lad os prøve vores opsummeringsapplikation med et teksteksempel. Til vores eksempel ville jeg bruge Relativitetsteori Wikipedia-side tekst, der skal opsummeres. Med en standardparameter og andenklassers stil opnår vi følgende resultat.

Albert Einstein was a very smart scientist who came up with two important ideas about how the world works. The first one, called special relativity, talks about how things move when there is no gravity. The second one, called general relativity, explains how gravity works and how it affects things in space like stars and planets. These ideas helped us understand many things in science, like how particles interact with each other and even helped us discover black holes! 

 

Du får muligvis et andet resultat end ovenstående. Lad os prøve Housewives-stilen og justere parameteren lidt (Token 100, Temperatur 0.5, Nucleus Sampling 0.5, Frequency Penalty 0.3).

The theory of relativity is a set of physics theories proposed by Albert Einstein in 1905 and 1915. It includes special relativity, which applies to physical phenomena without gravity, and general relativity, which explains the law of gravitation and its relation to the forces of nature. The theory transformed theoretical physics and astronomy in the 20th century, introducing concepts like 4-dimensional spacetime and predicting astronomical phenomena like black holes and gravitational waves.

 

Som vi kan se, er der en forskel i stilen for den samme tekst, vi leverer. Med en ændringsprompt og parameter kan vores applikation være mere funktionel. 

Det overordnede udseende af vores tekst summarizer-applikation kan ses på billedet nedenfor.

 

Udvikling af tekstopsummering: En Python-tutorial med GPT-3.5
Billede af forfatter
 

Det er selvstudiet om at skabe tekst summarizer-applikationsudvikling med GPT-3.5. Du kan justere applikationen endnu mere og implementere applikationen.

Generativ AI er stigende, og vi bør udnytte muligheden ved at skabe en fantastisk applikation. I denne tutorial lærer vi, hvordan GPT-3.5 OpenAI API'erne fungerer, og hvordan man bruger dem til at skabe en tekst summarizer-applikation ved hjælp af Python og strømbelyst pakke.
 
 
Cornellius Yudha Wijaya er en data science assisterende leder og dataskribent. Mens han arbejder på fuld tid hos Allianz Indonesia, elsker han at dele Python- og Data-tips via sociale medier og skrivemedier.
 

Tidsstempel:

Mere fra KDnuggets