Slik identifiserer du hovedtemaer i en tekst
april 2024 (oppdatert 8. mai 2024)
Det er mye enklere å bruke store språkmodeller (LLMs) til å identifisere temaer i tekstdata. Disse modellene representerer en betydelig forbedring sammenlignet med eldre teknikker som manuell identifisering eller Latent Dirichlet Allocation (LDA). Denne veiledningen beskriver tre robuste strategier for å bruke store språkmodeller til å identifisere temaer på en effektiv måte, også i korte tekster.
Før vi går inn på metodene, anbefaler jeg å lese en preprint-artikkel (http://doi.org/10.2196/preprints.53376) som gir en grundig gjennomgang av disse strategiene og deres respektive fordeler. Du kan også øve med datasettet på GitHub (https://github.com/lanceyuu/LLMforTM.git). Det er viktig å være klar over visse begrensninger, for eksempel begrensninger i hvor lange tekster språkmodellene kan analysere.
1. Bruk av språkmodellverktøy
Til tekstanalyse kan du bruke hvilket som helst tilgjengelig språkmodellverktøy i verktøykassen. Besøk verktøykassen vår (Toolkit). For lange tekster anbefales det å bruke enten GPT-4 eller en GPT jeg har utviklet (Topic Modeller). Andre modeller som Le Chat og Claude har også vist at de kan håndtere store tekster, mens Llama kan ha begrensninger. For kinesiske tekster anbefales Kimi. Gemini Pro 1.5 kan dessuten håndtere opptil én million tokens.
Eksempel på prompt (beholdt på engelsk):
You are a qualitative researcher and your task is to identify the topics in the text. When generating the topics, prioritize correctness and ensure that your response is accurate and grounded in the context of the text.
Your summary should include three components: the first one is the title of the topic; the second one is the definition of the topic; the third one is the number of occurrences of the topic.
insert topic 1: Title, definition, occurrence
insert topic 2: Title, definition, occurrence
insert topic 3: Title, definition, occurrence
…
Here is the text
[paste your text here]
2. Python-skript for analyse av strukturerte data
Hvis du har strukturerte data, for eksempel en CSV-fil, eller trenger å analysere mange tekster, kan et Python-skript gi en mer systematisk fremgangsmåte enn manuell inntasting. Her er skriptet. Erstatt API-nøkkelen med din egen nøkkel, og importer datasettet via filstien.
!pip install openai==0.28
!pip install evaluate
!pip install rouge_score
!pip install panda
import openai
import evaluate
import pandas as pd
# Initialize OpenAI API with your key
openai_api_key = "your_openai_api_key"
openai.api_key = openai_api_key
# Load your test data
test_data_path = 'path/to/your/test.csv'
test_data = pd.read_csv(test_data_path)
# Define the summarization instruction within a chat interaction context
def generate_summary(review):
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are an AI trained to summarize product reviews."},
{"role": "user", "content": review}
]
)
return response.choices[0].message['content']
# Generate summaries
results = []
actual_summaries = test_data['summary'].tolist() # Adjust the column name if needed
for review in test_data['reviews']: # Adjust the column name if needed
summary = generate_summary(review)
results.append(summary)
# Evaluate the summaries using ROUGE
rouge_scorer = evaluate.load('rouge')
rouge_scores = rouge_scorer.compute(predictions=results, references=actual_summaries)
# Directly print the ROUGE-1 score, assuming it's a numerical value
print("ROUGE-1 F1 Score:", rouge_scores['rouge1'])
For de med avansert kompetanse er det mulig å erstatte GPT-4 med alternative modeller som Yi eller Qwen. Se denne lenken for åpne språkmodeller: https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard
Google Colab anbefales for å kjøre skriptet. For å finne ut hvor godt prompten fungerer, kan du beregne ROUGE-1-skåren og justere prompten ved behov. En senere veiledning vil gi råd om hvordan resultatene av temamodellering kan evalueres.
Etter at temaene er identifisert, kan et hjelpeskript brukes til å knytte hvert tekstutdrag til relevante temaer.
import csv
import requests
import openai
# Initialize the OpenAI API client
openai.api_key = 'please paste your API here'
# Open the tweet.csv file, you should upload it to colab or open it in your local enviroment.
with open("tweet.csv", "r") as csvfile:
reader = csv.DictReader(csvfile)
# Create a new file called: tweet_results.csv to store the results
with open("tweet_results.csv", "w") as csv_file: # you can change the name to newname.csv
writer = csv.DictWriter(csv_file, fieldnames=["tweet", "answer"]) # replace tweet and answer with the new variable name A and B you like.
writer.writeheader()
# Iterate over each tweet
for row in reader:
# Get the tweet text
tweet_text = row["tweet"] # here please replace tweet with the variable name of the text in your csv file.
# Ask ChatGPT 4.0 if the tweet contains related content
prompt = f"you are now a researcher and you will tell me if the following reply belongs to which topic. In total there are xxx number of topics: Topic 1 xxx; Topic 2 xxx \"{tweet_text}\""
response= openai.ChatCompletion.create(model="gpt-4",messages=[{"role": "user", "content": prompt}])
# Get the response from ChatGPT
#response_text = response["choices"][0]["text"]
response_text = response["choices"][0]["message"]["content"]
answer = response_text # replace answer with your new variable name B
# Write the results to the file
writer.writerow({"tweet": tweet_text, "answer": answer}) # replace tweet with your new variable name A, and answer with you new variable name B
Et nettbasert verksted om denne metoden vil bli lansert i september 2024. Abonner for å holde deg oppdatert.
3. IBM Watsonx AI
Min nylige deltakelse i et IBM-hackathon viste hvor nyttig Watsonx AI er i denne sammenhengen. Verktøyet gjør det enklere å finjustere prompter og teste modeller. Dette vil bli beskrevet i detalj i en kommende veiledning.
Disse metodene er utformet for å styrke arbeidet ditt med tekstanalyse. Jeg håper de vil være nyttige i forskningen din.
Stikkord: tekstanalyse





Kommentarer