Mestring av ChatGPT: Effektiv oppsummering med LLM-er

Mestring av ChatGPT: Effektiv oppsummering med LLM-er

Kilde node: 2763303

Tekstoppsummering ChatGPT

Oppsummeringsagenter forestilt av AI-bildegenereringsverktøyet Dall-E.

Er du en del av befolkningen som legger igjen anmeldelser på Google maps hver gang du besøker en ny restaurant?

Eller kanskje du er typen som deler din mening om Amazon-kjøp, spesielt når du blir trigget av et produkt av lav kvalitet?

Ikke bekymre deg, jeg vil ikke klandre deg - vi har alle våre øyeblikk!

I dagens dataverden bidrar vi alle til datafloden på flere måter. En datatype som jeg finner spesielt interessant på grunn av dens mangfold og vanskeligheter med å tolke, er tekstdata, for eksempel de utallige anmeldelsene som legges ut over Internett hver dag. Har du noen gang stoppet opp for å vurdere viktigheten av å standardisere og kondensere tekstdata?
Velkommen til en verden av oppsummeringsagenter!

Oppsummeringsagenter har sømløst integrert i hverdagen vår, for å kondensere informasjon og gi rask tilgang til relevant innhold på tvers av en rekke applikasjoner og plattformer.

I denne artikkelen vil vi utforske bruken av ChatGPT som en kraftig oppsummeringsagent for våre tilpassede applikasjoner. Takket være evnen til Large Language Models (LLM) til å behandle og forstå tekster, de kan hjelpe til med å lese tekster og generere nøyaktige sammendrag eller standardisere informasjon. Det er imidlertid viktig å vite hvordan man kan utvinne potensialet i å utføre en slik oppgave, samt å erkjenne deres begrensninger.

Den største begrensningen for oppsummering?
LLM-er kommer ofte til kort når det gjelder å overholde spesifikke tegn- eller ordbegrensninger i sine sammendrag.

La oss utforske de beste fremgangsmåtene for å generere sammendrag med ChatGPT for vår tilpassede applikasjon, så vel som årsakene bak begrensningene og hvordan du kan overvinne dem!

Hvis dette inngående pedagogiske innholdet er nyttig for deg, kan du abonner på vår adresseliste for AI-forskning å bli varslet når vi slipper nytt materiale. 

Effektiv oppsummering med ChatGPT

Oppsummeringsagenter brukes over hele Internett. For eksempel bruker nettsteder oppsummeringsagenter for å tilby kortfattede sammendrag av artikler, slik at brukere kan få en rask oversikt over nyhetene uten å dykke ned i hele innholdet. Sosiale medieplattformer og søkemotorer gjør dette også.

Fra nyhetsaggregatorer og sosiale medieplattformer til e-handelsnettsteder, oppsummeringsagenter har blitt en integrert del av vårt digitale landskap. Og med økningen av LLM-er, bruker noen av disse agentene nå AI for mer effektive oppsummeringsresultater.

ChatGPT kan være en god alliert når du bygger en applikasjon ved å bruke oppsummeringsagenter for å øke hastigheten på leseoppgaver og klassifisering av tekster. Tenk deg for eksempel at vi har en e-handelsvirksomhet og vi er interessert i å behandle alle våre kundeanmeldelser. ChatGPT kan hjelpe oss med å oppsummere en gitt anmeldelse i noen få setninger, standardisere den til et generisk format, bestemme følelsen av anmeldelsen, og klassifisering det tilsvarende.

Selv om det er sant at vi ganske enkelt kan sende anmeldelsen til ChatGPT, er det en liste over beste praksis – og ting å unngå – å utnytte kraften til ChatGPT i denne konkrete oppgaven.

La oss utforske alternativene ved å bringe dette eksemplet til live!

Eksempel: E-handelsanmeldelser

Selvlaget gif.

Tenk på eksempelet ovenfor der vi er interessert i å behandle alle anmeldelsene for et gitt produkt på vår e-handelsside. Vi vil være interessert i å behandle anmeldelser som følgende om stjerneproduktet vårt: den første datamaskinen for barn!

prod_review = """
I purchased this children's computer for my son, and he absolutely adores it. He spends hours exploring its various features and engaging with the educational games. The colorful design and intuitive interface make it easy for him to navigate. The computer is durable and built to withstand rough handling, which is perfect for active kids. My only minor gripe is that the volume could be a bit louder. Overall, it's an excellent educational toy that provides hours of fun and learning for my son. It arrived a day earlier
than expected, so I got to play with it myself before I gave it to him. """

I dette tilfellet vil vi at ChatGPT skal:

  • Klassifiser anmeldelsen i positiv eller negativ.
  • Gi et sammendrag av anmeldelsen på 20 ord.
  • Skriv ut svaret med en konkret struktur for å standardisere alle anmeldelsene i ett enkelt format.

Implementeringsmerknader

Her er den grunnleggende kodestrukturen vi kan bruke for å spørre ChatGPT fra vår tilpassede applikasjon. Jeg gir også en lenke til en Jupyter Notebook med alle eksemplene som er brukt i denne artikkelen.

import openai
import os openai.api_key_path = "/path/to/key" def get_completion(prompt, model="gpt-3.5-turbo"): """
This function calls ChatGPT API with a given prompt
and returns the response back. """ messages = [{"role": "user", "content": prompt}] response = openai.ChatCompletion.create( model=model, messages=messages, temperature=0 ) return response.choices[0].message["content"] user_text = f"""
<Any given text> """ prompt = f"""
<Any prompt with additional text> """{user_text}""" """ # A simple call to ChatGPT
response = get_completion(prompt)

Funksjonen get_completion() kaller ChatGPT API med en gitt teksten. Hvis ledeteksten inneholder ytterligere brukertekst, slik som selve anmeldelsen i vårt tilfelle, er den atskilt fra resten av koden med tre anførselstegn.

La oss bruke get_completion() funksjon for å spørre ChatGPT!

Her er en melding som oppfyller kravene beskrevet ovenfor:

prompt = f"""
Your task is to generate a short summary of a product review from an e-commerce site. Summarize the review below, delimited by triple backticks, in exactly 20 words. Output a json with the sentiment of the review, the summary and original review as keys. Review: ```{prod_review}``` """
response = get_completion(prompt)
print(response)

⚠️ Retningslinjene for spørsmål som brukes i dette eksemplet, for eksempel bruk av skilletegn for å skille inndatateksten fra resten av ledeteksten og be om en strukturert utgang, er fullstendig forklart på Hva jeg lærte av OpenAIs kurs i promptteknikk — ledetråder.

Her er svaret til ChatGPT:

{ "sentiment": "positive", "summary": "Durable and engaging children's computer with intuitive interface and educational games. Volume could be louder.", "review": "I purchased this children's computer for my son, and he absolutely adores it. He spends hours exploring its various features and engaging with the educational games. The colorful design and intuitive interface make it easy for him to navigate. The computer is durable and built to withstand rough handling, which is perfect for active kids. My only minor gripe is that the volume could be a bit louder. Overall, it's an excellent educational toy that provides hours of fun and learning for my son. It arrived a day earlierthan expected, so I got to play with it myself before I gave it to him."
}

Som vi kan se fra resultatet, er anmeldelsen nøyaktig og godt strukturert den savner noe informasjon vi kan være interessert i som eiere av e-handelen, for eksempel informasjon om levering av produktet.

Oppsummer med fokus på

Vi kan iterativt forbedre forespørselen vår ved å be ChatGPT om å fokusere på visse ting i sammendraget. I dette tilfellet er vi interessert i alle detaljer gitt om frakt og levering:

prompt = f"""
Your task is to generate a short summary of a product review from an ecommerce site. Summarize the review below, delimited by triple backticks, in exactly 20 words and focusing on any aspects that mention shipping and delivery of the product. Output a json with the sentiment of the review, the summary and original review as keys. Review: ```{prod_review}``` """ response = get_completion(prompt)
print(response)

Denne gangen er ChatGPTs svar følgende:

{ "sentiment": "positive", "summary": "Durable and engaging children's computer with intuitive interface. Arrived a day earlier than expected.", "review": "I purchased this children's computer for my son, and he absolutely adores it. He spends hours exploring its various features and engaging with the educational games. The colorful design and intuitive interface make it easy for him to navigate. The computer is durable and built to withstand rough handling, which is perfect for active kids. My only minor gripe is that the volume could be a bit louder. Overall, it's an excellent educational toy that provides hours of fun and learning for my son. It arrived a day earlierthan expected, so I got to play with it myself before I gave it to him."
}

Nå er anmeldelsen mye mer komplett. Å gi detaljer om det viktige fokuset i den opprinnelige anmeldelsen er avgjørende for å unngå at ChatGPT hopper over noe informasjon som kan være verdifull for vår brukssituasjon.

Har du lagt merke til at selv om denne andre prøveperioden inkluderer informasjon om leveringen, hoppet den over det eneste negative aspektet ved den opprinnelige anmeldelsen?

La oss fikse det!

"Extraher" i stedet for "Susmarize"

Ved å undersøke oppsummeringsoppgaver fant jeg ut det oppsummering kan være en vanskelig oppgave for LLM-er hvis brukerforespørselen ikke er nøyaktig nok.

Når du ber ChatGPT om å gi et sammendrag av en gitt tekst, kan det hoppe over informasjon som kan være relevant for oss – som vi nylig har erfart – eller det vil gi samme betydning for alle emnene i teksten, bare gi en oversikt over hovedpunktene.

Eksperter på LLM bruker begrepet trekke ut og tilleggsinformasjon om deres fokus i stedet for oppsummere når du utfører slike oppgaver assistert av denne typen modeller.

Mens oppsummering tar sikte på å gi en kortfattet oversikt over tekstens hovedpunkter, inkludert emner som ikke er relatert til fokusemnet, fokuserer informasjonsutvinning på å hente spesifikke detaljer og kan gi oss det vi akkurat ser etter. La oss prøve da med utvinning!

prompt = f"""
Your task is to extract relevant information from a product review from an ecommerce site to give feedback to the Shipping department. From the review below, delimited by triple quotes extract the information relevant to shipping and delivery. Use 100 characters. Review: ```{prod_review}``` """ response = get_completion(prompt)
print(response)

I dette tilfellet, ved å bruke ekstraksjon, får vi kun informasjon om vårt fokustema: Shipping: Arrived a day earlier than expected.

Automatisering

Dette systemet fungerer for én enkelt anmeldelse. Ikke desto mindre, når du designer en melding for en konkret søknad, det er viktig å teste det i en gruppe med eksempler slik at vi kan fange opp eventuelle uteliggere eller feil oppførsel i modellen.

I tilfelle av å behandle flere anmeldelser, her er et eksempel på Python-kodestruktur som kan hjelpe.

reviews = [ "The children's computer I bought for my daughter is absolutely fantastic! She loves it and can't get enough of the educational games. The delivery was fast and arrived right on time. Highly recommend!", "I was really disappointed with the children's computer I received. It didn't live up to my expectations, and the educational games were not engaging at all. The delivery was delayed, which added to my frustration.", "The children's computer is a great educational toy. My son enjoys playing with it and learning new things. However, the delivery took longer than expected, which was a bit disappointing.", "I am extremely happy with the children's computer I purchased. It's highly interactive and keeps my kids entertained for hours. The delivery was swift and hassle-free.", "The children's computer I ordered arrived damaged, and some of the features didn't work properly. It was a huge letdown, and the delivery was also delayed. Not a good experience overall."
] prompt = f""" Your task is to generate a short summary of each product review from an e-commerce site. Extract positive and negative information from each of the given reviews below, delimited by triple backticks in at most 20 words each. Extract information about the delivery, if included. Review: ```{reviews}``` """

Her er sammendragene av våre anmeldelser:

1. Positive: Fantastic children's computer, fast delivery. Highly recommend.
2. Negative: Disappointing children's computer, unengaging games, delayed delivery.
3. Positive: Great educational toy, son enjoys it. Delivery took longer than expected.
4. Positive: Highly interactive children's computer, swift and hassle-free delivery.
5. Negative: Damaged children's computer, some features didn't work, delayed delivery.

⚠️ Merk at selv om ordbegrensningen i sammendragene våre var tydelige nok i forespørslene våre, kan vi lett se at denne ordbegrensningen ikke oppnås i noen av gjentakelsene.

Denne mismatchen i ordtelling skjer fordi LLM-er ikke har en presis forståelse av ord- eller tegntelling. Årsaken bak dette er avhengig av en av de viktigste viktige komponentene i deres arkitektur: tokenizeren.

Tokenizer

LLM-er som ChatGPT er designet for å generere tekst basert på statistiske mønstre lært fra enorme mengder språkdata. Selv om de er svært effektive til å generere flytende og sammenhengende tekst, mangler de presis kontroll over antall ord.

I eksemplene ovenfor, når vi har gitt instruksjoner om en veldig presis ordtelling, ChatGPT slet med å oppfylle disse kravene. I stedet har den generert tekst som faktisk er kortere enn det angitte ordantallet.

I andre tilfeller kan det generere lengre tekster eller ganske enkelt tekst som er altfor detaljert eller mangler detaljer. I tillegg, ChatGPT kan prioritere andre faktorer som koherens og relevans, fremfor streng overholdelse av ordtellingen. Dette kan resultere i tekst som er av høy kvalitet med tanke på innhold og sammenheng, men som ikke nøyaktig samsvarer med ordtellingskravet.

Tokenizeren er nøkkelelementet i arkitekturen til ChatGPT som tydelig påvirker antall ord i den genererte utgangen.

Selvlaget gif.

Tokenizer-arkitektur

Tokenizeren er det første trinnet i prosessen med tekstgenerering. Den er ansvarlig for å bryte ned teksten som vi legger inn til ChatGPT i individuelle elementer — tokens — , som deretter behandles av språkmodellen for å generere ny tekst.

Når tokenizeren bryter ned et stykke tekst til tokens, gjør den det basert på et sett med regler som er utformet for å identifisere de meningsfulle enhetene til målspråket. Disse reglene er imidlertid ikke alltid perfekte, og det kan være tilfeller der tokenizeren deler eller slår sammen tokens på en måte som påvirker det totale ordantallet i teksten.

Tenk for eksempel på følgende setning: "Jeg vil spise en peanøttsmørsmørbrød". Hvis tokenizeren er konfigurert til å dele tokens basert på mellomrom og tegnsetting, kan den dele denne setningen ned i følgende tokens med et totalt antall ord på 8, lik token-antallet.

Selvlaget bilde.

Imidlertid, hvis tokenizer er konfigurert til å behandle "peanøttsmør" som et sammensatt ord kan det bryte setningen ned i følgende symboler, med et totalt antall ord på 8, men et symbolantall på 7.

Dermed kan måten tokenizeren er konfigurert på påvirke det totale ordantallet i teksten, og dette kan påvirke evnen til LLM til å følge instruksjoner om nøyaktige ordtellinger. Mens noen tokenizere tilbyr alternativer for å tilpasse hvordan teksten tokeniseres, er ikke dette alltid tilstrekkelig for å sikre nøyaktig overholdelse av krav til ordtelling. For ChatGPT i dette tilfellet kan vi ikke kontrollere denne delen av arkitekturen.

Dette gjør ChatGPT ikke så god til å oppnå karakter- eller ordbegrensninger, men man kan prøve med setninger i stedet siden tokenizeren ikke påvirker antall setninger, men deres lengde.

Å være klar over denne begrensningen kan hjelpe deg med å lage den best passende forespørselen for applikasjonen din i tankene. Etter å ha denne kunnskapen om hvordan ordtelling fungerer på ChatGPT, la oss gjøre en siste iterasjon med forespørselen vår om e-handelsapplikasjonen!

Avslutning: E-handelsanmeldelser

La oss kombinere det vi har lært fra denne artikkelen til en siste forespørsel! I dette tilfellet vil vi be om resultatene i HTML format for en bedre utgang:

from IPython.display import display, HTML prompt = f"""
Your task is to extract relevant information from a product review from an ecommerce site to give feedback to the Shipping department and generic feedback from the product. From the review below, delimited by triple quotes construct an HTML table with the sentiment of the review, general feedback from
the product in two sentences and information relevant to shipping and delivery. Review: ```{prod_review}``` """ response = get_completion(prompt)
display(HTML(response))

Og her er den endelige utgangen fra ChatGPT:

Selvlaget skjermdump fra Jupyter Notebook med eksemplene som er brukt i denne artikkelen.

Oppsummering

I denne artikkelen, vi har diskutert de beste fremgangsmåtene for å bruke ChatGPT som en oppsummeringsagent for vår tilpassede applikasjon.

Vi har sett at når du bygger en applikasjon, er det ekstremt vanskelig å komme opp med den perfekte ledeteksten som samsvarer med søknadskravene dine i den første prøveperioden. Jeg tror en hyggelig melding med hjem er å tenke på spørsmål som en iterativ prosess hvor du avgrenser og modellerer forespørselen din til du får nøyaktig ønsket utgang.

Ved å iterativt avgrense forespørselen og bruke den på en rekke eksempler før du distribuerer den i produksjon, kan du sørge for utgangen er konsistent på tvers av flere eksempler og dekker avvikende svar. I vårt eksempel kan det skje at noen gir en tilfeldig tekst i stedet for en anmeldelse. Vi kan instruere ChatGPT til også å ha en standardisert utgang for å ekskludere disse avvikende svarene.

I tillegg, når du bruker ChatGPT for en spesifikk oppgave, er det også en god praksis å lære om fordeler og ulemper ved å bruke LLM-er for måloppgaven vår. Det var slik vi kom over at uttrekksoppgaver er mer effektive enn oppsummering når vi ønsker en felles menneskelignende oppsummering av en inputtekst. Vi har også lært at det å gi fokus på sammendraget kan være en game-changer angående det genererte innholdet.

Til slutt, mens LLM-er kan være svært effektive til å generere tekst, de er ikke ideelle for å følge nøyaktige instruksjoner om ordtelling eller andre spesifikke formateringskrav. For å nå disse målene kan det være nødvendig å holde seg til setningstelling eller bruke andre verktøy eller metoder, for eksempel manuell redigering eller mer spesialisert programvare.

Denne artikkelen ble opprinnelig publisert på Mot datavitenskap og publisert på nytt til TOPBOTS med tillatelse fra forfatteren.

Liker du denne artikkelen? Registrer deg for flere AI-forskningsoppdateringer.

Vi gir beskjed når vi gir ut flere sammendragsartikler som denne.

Tidstempel:

Mer fra TOPPBOTS