top of page

Bruk av store språkmodeller til å skrape data på nettet

15. sep.
3 min lesing
  1. april 2024 (oppdatert 8. mai 2024)

Nettskraping (web scraping) kan virke skremmende og overveldende hvis du ikke forstår strukturen på nettsiden. Store språkmodeller (LLM-er) kan imidlertid hjelpe deg på en svært effektiv måte. Her vil jeg introdusere to metoder for nettskraping.

Den første metoden er for nybegynnere, der du bare skraper én eller to nettsider. Tekstbasert skraping innebærer å kopiere HTML-koden til målnettsiden og deretter bruke en tilfeldig LLM til å hente ut dataene du trenger. Du kan gjøre dette ved å lime HTML-koden inn i en LLM som ChatGPT, som deretter returnerer dataene du ba om.

Den andre metoden krever bruk av Python. Videoen nedenfor forklarer hvordan du lager en nettskraper med Python og AI-chatboten GPT-4. Skraperen kan oppsummere informasjon fra flere nettsider og svare på spørsmålene dine om innholdet.

Først må du registrere deg for en OpenAI-konto og få en API-nøkkel.

Du må også installere et Python-bibliotek som heter LayeredChain.

Koden består av en funksjon som heter web_QA, som tar en liste over nettadresser og et spørsmål som inndata.

Funksjonen bruker LayeredChain til å laste nettsidene inn i en vektordatabase, og bruker deretter OpenAI API til å kalle GPT-4 for å svare på spørsmålene dine om innholdet på nettsidene.

Videoen demonstrerer koden med et eksempel der brukeren ønsker å lære om Idiom AI. Brukeren limer inn fire nettadresser om Idiom AI i koden og ber GPT-4 om å oppsummere hva Idiom AI er, hva det gjør, hvordan det brukes, og gir også fem interessante prompter som brukeren kan bruke med Idiom AI.

Her er videoen.

Her er skriptet.

from langchain.document_loaders import WebBaseLoader

from langchain.indexes import VectorstoreIndexCreator

from langchain.chat_models.openai import ChatOpenAI

from datetime import datetime

import dotenv

dotenv.load_dotenv()

def web_qa(url_list, query, out_name):

openai = ChatOpenAI(

model_name="gpt-3.5-turbo",

max_tokens=2048

)

loader_list = []

for i in url_list:

print('loading url: %s' % i)

loader_list.append(WebBaseLoader(i))

index = VectorstoreIndexCreator().from_loaders(loader_list)

ans = index.query(question=query,

llm=openai)

print("")

print(ans)

outfile_name = out_name + datetime.now().strftime("%m-%d-%y-%H%M%S") + ".out"

with open(outfile_name, 'w') as f:

f.write(ans)

url_list = [

"https://openaimaster.com/how-to-use-ideogram-ai/",

"https://dataconomy.com/2023/08/28/what-is-ideogram-ai-and-how-to-use-it/",

"https://ideogram.ai/launch",

"https://venturebeat.com/ai/watch-out-midjourney-ideogram-launches-ai-image-generator-with-impressive-typography/"

]

prompt = '''

Given the context, please provide the following:

  1. summary of what it is

  2. summary of what it does

  3. summary of how to use it

  4. Please provide 5 interesting prompts that could be used with this AI.

'''

web_qa(url_list, prompt, "summary")

I tillegg finner du nedenfor en retningslinje fra Journal of Marketing om nettskraping i forskning.

I et nettinar fra Journal of Marketing med tittelen «Web Data Scraping for Marketing Research» diskuteres viktigheten av webdata i markedsføringsforskning og utfordringene ved å samle inn disse dataene. Panelet introduserer et nytt metodisk rammeverk som hjelper forskere med å samle inn webdata på en valid og pålitelig måte.

Rammeverket består av tre faser: å velge kilde, utforme innsamlingen og hente ut dataene. Forskere må nøye vurdere en rekke faktorer i hver fase, for eksempel:

Valg av kilde

Kvalitet: Forskere bør vurdere kvaliteten på dataene på de potensielle kildewebsidene. Dette kan innebære å vurdere dataenes nøyaktighet, fullstendighet og relevans.

Stabilitet: De valgte nettstedene bør være stabile og lite sannsynlig å gjennomgå betydelige endringer i struktur eller innhold. Dette bidrar til å sikre at dataene som samles inn, er konsistente over tid.

Enkel tilgang: Forskere må vurdere hvor enkelt det er å få tilgang til dataene på nettstedene de har valgt. Noen nettsteder kan gjøre det vanskelig eller umulig å skrape data automatisk.

Utforming av innsamling

Metoder for datautvinning: Forskere må bestemme hvordan de skal hente ut dataene fra nettstedene de har valgt. Dette kan innebære å skrive skript for å automatisere datainnsamlingsprosessen.

Utvalg: Forskere må bestemme hvordan de skal trekke utvalg fra dataene på nettstedene de har valgt. Dette avhenger av forskningsspørsmålet og dataenes art.

Juridiske og etiske hensyn: Det er viktig å sikre at dataskrapingsprosessen er lovlig og etisk. Forskere bør respektere robots.txt-filene på nettstedene de skraper, og unngå å samle inn data som er beskyttet av opphavsrett eller personvernlovgivning.

Datautvinning

Datarensing: Når dataene er hentet ut, er det viktig å rense dem for å fjerne eventuelle feil eller inkonsekvenser. Dette kan innebære å fjerne dupliserte oppføringer, formatere dataene konsekvent og kontrollere for manglende verdier.

Dataovervåking: Forskere bør overvåke datautvinningsprosessen for å sikre at de får de dataene de forventer. Dette kan innebære å jevnlig kontrollere dataene for feil.

Foredragsholderen diskuterer også viktigheten av dokumentasjon og replikerbarhet i nettskraping. Hun anbefaler at forskere nøye dokumenterer datainnsamlingsprosessen sin, slik at andre kan replikere resultatene.

Alt i alt gir videoen en verdifull oversikt over nettskraping for markedsføringsforskning. Det er en utmerket ressurs for forskere som er interessert i å bruke webdata i arbeidet sitt.

Her er noen av de viktigste poengene fra videoen:

Webdata er en verdifull ressurs for markedsføringsforskning, men det er viktig å samle dem inn på en valid og pålitelig måte.

Det nye metodiske rammeverket kan hjelpe forskere med å vurdere viktige faktorer i hver fase av dataskrapingsprosessen.

Det må tas nøye hensyn til juridiske og etiske spørsmål ved dataskraping.

Dokumentasjon er avgjørende for replikerbarhet.

Stikkord: veiledning

Kommentarer


Dette initiativet støttes av følgende organisasjoner:

  • Twitter
  • LinkedIn
  • YouTube
logo_edited.png
bottom of page