Sentimentanalyse in R

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
Jolli88
Beiträge: 3
Registriert: Mo Okt 16, 2023 6:06 pm

Sentimentanalyse in R

Beitrag von Jolli88 »

Ich bin am überlegen eine Thesis im Bereich Zentralbankkommunikation zu schreiben (WiWi-Stduent). Ich behersche Grundlagen in R. Jedoch ahbe ich währedend des Studiums nichts mit der Sentimentanalyse zu tun gehabt. Ich habe mich schon etwas reingelsen. Mein Professor hat mir eine Reihe von Papieren, die die Kommunikation der EZB bzw. der Fed mit Hilfe von Sentimentanalysen quantifizieren, geschickt. Nun soll ich eine geeignete Methode finden, um die Reden der EZB auszuwerten und welche Pakete dafür benötigt werden. Sein genaues Ziel bzw. die Aufgabe wäre: "Aus meiner Sicht wäre es interessant, wenn Sie das Sentiment der Reden quantifizieren, darstellen und mit anderen ökonomischen Zeitreihen (Inflation, Wachstum) vergleichen würden." Ist dies eine machbare Aufgabe für den Bachelor? Ich kam mithilfe von google und ChatGPT nicht wirklich weiter, da es viele Fehlermeldungen im Code gab. Wie gehe ich am besten vor? Wie umfangreich wäre sowas? Wo finde ich Hilfe, um eine genaue Vorgensweise zu erörtern, da ich mir mit dem coden nicht ganz so leicht tue? Ich denke, dass sich ein lexikonbasierter Ansatz eignet und die Wörter von negativ bis positiv über die Zeit skaliert werden sollten, also die Sentimente, da der Ton der EZB über die Zeit hinweg dargestellt werden soll damit ein Vergleich mit anderen Zeitreihen möglich ist. Müsste ich eins selber erstellen oder gibt es schon vorgefertigte, die sich eignen? Falls es eher ein zu umfangreiches und schwer umsetzbares Projekt mit Grundlagenwissen ist, würde ich mir eher ein anderes Thema aussuchen.
Dies ist der Link zu dem Datensatz: https://www.ecb.europa.eu/press/key/htm ... ds.en.html
Die Ansätze sind gefühlt eher Mist.
Bisherige Ansätze:

Code: Alles auswählen

reden_data <- read.csv("Dateipfad", header = TRUE, sep = "|")
str(reden_data)

library(tm)
corpus <- iconv(reden_data$contents)
corpus <- Corpus(VectorSource(corpus))
corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeNumbers)
cleanset <- tm_map(corpus, removeWords, stopwords('english'))
cleanset <- tm_map(cleanset, stemDocument)
cleanset <- tm_map(cleanset, stripWhitespace)
tdm <- TermDocumentMatrix(cleanset)
tdm <- as.matrix(tdm)
dim(tdm)
library(dplyr)
library(textdata)
library(tidytext)
corpus_text <- sapply(corpus, as.character)
sentiments <- get_sentiments("afinn")
reden_sentiment <- data.frame(word = unlist(strsplit(corpus_text, "\\s+")))
reden_sentiment <- reden_sentiment %>%
  left_join(sentiments, by = "word")
# Summieren der Sentiments für jede Rede
reden_sentiment_summary <- reden_sentiment %>%
  group_by(word) %>%
  summarize(sentiment_score = sum(value))
# Ergebnisse anzeigen
head(reden_sentiment_summary)

Ansatz 2:
#install.packages("NLP")
#library(NLP)
reden_data <- read.csv("Dateipfad", header = TRUE, sep = "|")
#reden_data_cleaned <- reden_data[reden_data$speakers != "", ]
#library(tm)
#library(quanteda)
reden_data$contents <- iconv(reden_data$contents, from = "UTF-8", to = "UTF-8", sub = "")
corpus <- Corpus(VectorSource(reden_data$contents))
# Bereinigung der Daten
corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, removeWords, stopwords("german"))
dtm <- DocumentTermMatrix(corpus)
#install.packages("quanteda")
#library(dplyr)
#library(textdata)
#library(tidytext)
# Jetzt wandeln wir corpus in einen Zeichenvektor um
corpus_text <- sapply(corpus, as.character)
# Beispiel: Verwenden des sentimentr-Pakets und eines vordefinierten Wörterbuchs
sentiments <- get_sentiments("afinn")
reden_sentiment <- data.frame(word = unlist(strsplit(corpus_text, "\\s+")))
reden_sentiment <- reden_sentiment %>%
  left_join(sentiments, by = "word")
# Summieren der Sentiments für jede Rede
reden_sentiment_summary <- reden_sentiment %>%
  group_by(Document) %>%
  summarize(sentiment_score = sum(value))
# Ergebnisse anzeigen
head(reden_sentiment_summary)
install.packages("xml2")
library(devtools)
Antworten