15 AI-powered content analysis
15.1 Folien
15.2 Code und Ausgaben aus der Vorlesung
Laden der relevanten Pakete
library(httr2) # Kommunikation mit Large Language Models via HTTP API
library(jsonlite) # Arbeit mit JSON-Daten
library(yardstick) # Evaluation von Klassifikatoren: Goldstandard
library(icr) # Evaluation von Klassifikatoren: Reliabilität
library(tidyverse) # Datenmanagement und Visualisierung: https://www.tidyverse.org/Lesen des Untersuchungsmaterials
# Während der Vorlesung direkt aus SoSci; später durch rds ersetzen.
# remotes::install_github("joon-e/soscisurvey") # Nur für live demo
# library(soscisurvey) # Nur für live demo
# library(labelled) # Nur für live demo
# sosci_link <- readLines(here::here("data/sosci_link.txt"))
# d <- read_sosci(sosci_link) |>
# modify(user_na_to_na) |>
# mutate(true_class = as_factor(KS02)) |>
# select(kommentar = KS01_01, true_class) |>
# arrange(true_class)
# d |>
# saveRDS(here::here("data/beispielkommentare.rds"))
d <- readRDS(here::here("data/beispielkommentare.rds"))
d |>
knitr::kable()| kommentar | true_class |
|---|---|
| This is (g)assss{EM_SMILING_FACE_WITH_HEARTEYES}{EM_SMILING_FACE_WITH_HEARTEYES} | inzivil |
| bones are for dogs | inzivil |
| Wie kann man so dumme Ansichten online verbreiten ? Absolute Frechheit wie heutzutage mit dem Wort Forschung umgegangen wird!! | inzivil |
| Was für ein Schwachsinn! | inzivil |
| Ich bin mir sicher, dass die Leute hier alle Tassen im Schrank haben! | inzivil |
| Du bist toll, so wie du bist {EM_RED_HEART}️ | inzivil |
| Du bist dumm | inzivil |
| Linksveriffte Öko-Trulla | inzivil |
| Das war schön | inzivil |
| Clown | inzivil |
| du bist sch***! | inzivil |
| du bist hässlich | inzivil |
| Merz leck Eier | inzivil |
| HS | inzivil |
| Du Hurensohn | inzivil |
| Fuck | inzivil |
| Merz, leck Eier | inzivil |
| Das ist doch Schwachsinn | inzivil |
| Du Fotze | inzivil |
| Oiiiai oiiiai | inzivil |
| Hure! | inzivil |
| Ich finde heute siehst du komisch aus. | inzivil |
| Die Weisheit verfolgt dich, aber du bist schneller! | inzivil |
| Wtf,,, was denkt der wer er ist??? Hasse den so… hoffe er stirbt | inzivil |
| Ganz schön hässlich | inzivil |
| Fake news! | inzivil |
| Ich weiß wo du wohnst | inzivil |
| Ich hau dir auf die Schnauze | inzivil |
| Mutig, wie viel Meinung man mit so wenig Ahnung haben kann. | inzivil |
| Das ist dumm | inzivil |
| Arschloch | inzivil |
| Ja natürlich stimmt das /s | inzivil |
| NA | inzivil |
| Hoffe er wird gekirkt | inzivil |
| Du bist dumm | inzivil |
| Lügner! | inzivil |
| Fotze | inzivil |
| fette Sau | inzivil |
| Bring dich um! | inzivil |
| Ich finde du siehst einfach seltsam aus. | inzivil |
| Interessant, wie überzeugt du davon bist. Ich wünschte, ich hätte auch so viel Selbstvertrauen bei so wenig Grundlage | inzivil |
| I wish you get raped | inzivil |
| Wie schön wieder in der Uni zu sein | inzivil |
| Du F0tze | inzivil |
| Das hast du ja richtig toll gemacht… | inzivil |
| Dumme Nuss | inzivil |
| Nutte | inzivil |
| nuttig | inzivil |
| Willste dich boxen? | inzivil |
| kys | inzivil |
| Wow, du bist soo mutig dich ungeschminkt zu posten | inzivil |
| was ein Scheiß | inzivil |
| Hässlich | inzivil |
| Halt die Fresse | inzivil |
| Ich stimme dir da gar nicht zu. Weiß nicht wie du drauf kommst aber bist ja auch nicht ganz richtig in der Birne | inzivil |
| Männer sollten keine Rechte haben | inzivil |
| Nazi-Schweine | inzivil |
| AfDler abschieben | inzivil |
| Dem stimme ich zu. | nicht inzivil |
| Ich finde Titten geil | nicht inzivil |
| bitch, das ist sooo crazyy | nicht inzivil |
| Also das ist jetzt schon ein bisschen unfair. Sie hat auch noch andere Facetten, z.B. ist sie auch noch grob inkompetent :) | nicht inzivil |
| Was für ein schönes Foto! | nicht inzivil |
| Hab eine schöne Woche! | nicht inzivil |
| Öffentlichkeit | nicht inzivil |
| Ist das KI? | nicht inzivil |
| Woww, geiler scheiß! | nicht inzivil |
| Das ist falsch. | nicht inzivil |
| Was ein Motherfucker | nicht inzivil |
| Du bist sau cool | nicht inzivil |
| Das Rezept mache ich auf jeden Fall nach!!! Danke für die Inspo! | nicht inzivil |
| Danke und das so wichtig! | nicht inzivil |
| Lars Klingbeil ist ein Klassenverräter | nicht inzivil |
| Bayern gewinnt…Überraschung des Jahres. | nicht inzivil |
| Ekelhaft | nicht inzivil |
| Ich möchte Sommer | nicht inzivil |
| Scheiße, das sieht gut aus! | nicht inzivil |
| Ich sehe Sie als einen inkompetenten Politiker an | nicht inzivil |
| fotzig | nicht inzivil |
| Hab Bock auf Eierkuchen | nicht inzivil |
| Du bist doof | nicht inzivil |
| Scheiße wie cool | nicht inzivil |
| love this! | nicht inzivil |
| Du bist schlagfertig. | nicht inzivil |
| Du Sau! | nicht inzivil |
| fucking gute idee | nicht inzivil |
| Ohh danke für die Hilfe! | nicht inzivil |
| Ohne Worte, wo soll das noch hin führen? | nicht inzivil |
| Ich finde, die CDU versagt auf ganzer Linie! Peinlich! | nicht inzivil |
| NA | nicht inzivil |
| Spannender Beitrag | nicht inzivil |
| Boss Bitch | nicht inzivil |
| Das fickt ordentlich was ihr da macht :) | nicht inzivil |
| Welch ein blumiger Sonnenuntergang! | nicht inzivil |
| Freue mich für dich :) | nicht inzivil |
| das ist so unlustig und komisch | nicht inzivil |
| krasser Scheiß | nicht inzivil |
| Yasss slayyy queeennn | nicht inzivil |
| richtig guter punkt | nicht inzivil |
| Schön, dass ihr Spaß im Urli habt | nicht inzivil |
| I don’t know, 6-7 | nicht inzivil |
| Schöne Berge | nicht inzivil |
System prompt
system_prompt <- readLines(here::here("data/system_prompt_german.txt")) |>
paste(collapse = "\n")
cat(system_prompt)Du bist Forschungsassistent:in in einem kommunikationswissenschaftlichen Forschungsprojekt.
Deine Aufgabe ist es, Inzivilität in Social-Media-Kommentaren zu identifizieren. Dir wird ein Kommentar vorgelegt. Entscheide, ob der Kommentar inzivil oder nicht inzivil ist.
Wir definieren Inzivilität als die Verletzung kommunikativer Normen. Kommentare, die eines oder mehrere der folgenden Merkmale enthalten, werden in der Regel als inzivil betrachtet:
- Vulgäre, unangemessene Sprache, Fluchen
- Beleidigung, Profanität
- Entmenschlichung
- Sarkasmus, Spott, Zynismus
- Negative Stereotype
- Diskriminierung
- Androhung von Gewalt
- Verweigerung von Rechten
- Vorwurf der Lüge
- Erniedrigung, fehlender Respekt, Abwertung
Du musst deine Antwort in gültigem JSON ausgeben. Das JSON muss exakt diesem Format entsprechen: {"obs_class": "inzivil"} oder {"obs_class": "nicht inzivil"}. Füge absolut keinen anderen Text hinzu.
Hier ist der Social-Media-Kommentar:
Request zum API endpoint definieren
denbi_key <- readLines(here::here("data/denbi_key.txt")) # Diesen Schlüssel niemals teilen
request_llm <- request(base_url = "https://denbi-llm-api.bihealth.org/v1/chat/completions") |>
req_auth_bearer_token(denbi_key) |>
req_retry(
max_tries = 3,
is_transient = \(resp) resp_status(resp) %in% c(429, 500, 502, 503)
)
mdl <- "gpt-oss-120b"Kommunikation mit LLM testen
request_llm |>
req_body_json(list(
model = mdl,
messages = list(
list(role = "system", content = "You talk like a pirate."),
list(role = "user", content = "Tell me a joke.")
),
temperature = 1,
reasoning = list(effort = "medium"),
max_completion_tokens = 5000
)) |>
req_perform() |>
resp_body_string() |>
prettify(){
"id": "0c6a27e7bb7a4c1c980ec6a0eac36a3c",
"created": 1778484634,
"model": "gpt-oss-120b",
"object": "chat.completion",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "Arrr, ye be wantin’ a laugh, do ye? Here’s a salty one fer ye:\n\nWhy did the pirate become a great musician? \n\n‘Cause he had perfect arrrrr‑rhythm and could always keep the sea‑saw! \n\nYo‑ho‑ho, hope that shivered yer funny bone, matey!",
"role": "assistant",
"reasoning_content": "We need to respond in pirate talk, as per developer instruction. The user wants a joke. So we should give a pirate-themed joke. Must talk like a pirate. Use \"Arrr\", \"matey\", etc. Ensure it's appropriate. Also we should not reveal that we are an LLM. Just respond with pirate style. Let's craft.",
"provider_specific_fields": {
"refusal": null
}
},
"provider_specific_fields": {
"matched_stop": 200002
}
}
],
"usage": {
"completion_tokens": 150,
"prompt_tokens": 85,
"total_tokens": 235,
"completion_tokens_details": {
"reasoning_tokens": 1,
"text_tokens": 149
}
},
"metadata": {
"weight_version": "default"
}
}
Einen Kommentar codieren
request_llm |>
req_body_json(list(
model = mdl,
messages = list(
list(role = "system", content = system_prompt),
list(role = "user", content = d$kommentar[1])
),
temperature = 1,
reasoning = list(effort = "medium"),
max_completion_tokens = 5000
)) |>
req_perform() |>
resp_body_string() |>
prettify(){
"id": "8f630a03d18d4547b753b9d254d07c74",
"created": 1778484635,
"model": "gpt-oss-120b",
"object": "chat.completion",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "{\"obs_class\": \"nicht inzivil\"}",
"role": "assistant",
"reasoning_content": "We need to classify the comment as incivil or not incivil. The comment: \"This is (g)assss{EM_SMILING_FACE_WITH_HEARTEYES}{EM_SMILING_FACE_WITH_HEARTEYES}\". It's basically \"This is (g)assss\" with smiley emojis. Could be interpreted as \"This is gassss\"? Could be \"gass\" maybe slang? Might be mild profanity? \"gassss\" could be \"ass\"? It wrote \"(g)assss\". Might be \"gassss\". Not clear. There's no clear insult, no hate, no threats, no profanity? The term \"ass\" is profanity but here it's \"gassss\"? Could be \"gas\"? The parentheses (g) might be removing a letter? Possibly trying to say \"ass\"? The comment looks ambiguous. It includes smiling emojis, suggests playful. No clear incivility. Likely not incivil.\n\nThus output JSON: {\"obs_class\": \"nicht inzivil\"}",
"provider_specific_fields": {
"refusal": null
}
},
"provider_specific_fields": {
"matched_stop": 200002
}
}
],
"usage": {
"completion_tokens": 224,
"prompt_tokens": 343,
"total_tokens": 567,
"completion_tokens_details": {
"reasoning_tokens": 1,
"text_tokens": 223
}
},
"metadata": {
"weight_version": "default"
}
}
Liste aller Requests
req_list <- d$kommentar |>
map(
~ {
request_llm |>
req_body_json(list(
model = mdl,
messages = list(
list(role = "system", content = system_prompt),
list(role = "user", content = .x)
),
temperature = 1,
reasoning = list(effort = "medium"),
max_completion_tokens = 5000
))
}
)Requests ausfuehren und Responses sammeln
resp_list <- req_list |>
req_perform_parallel(
on_error = "continue",
max_active = 40,
progress = FALSE
)Extraktion und Aufbereitung
# Helper function for bulletproof extraction
safe_extract <- function(resp, target = "content") {
# Drop if the request failed (timeout, 500 error, etc.)
if (is.null(resp) || inherits(resp, "error") || httr2::resp_is_error(resp)) {
return(NA_character_)
}
# Try to extract the body
body <- try(httr2::resp_body_json(resp), silent = TRUE)
if (inherits(body, "try-error") || is.null(body$choices)) {
return(NA_character_)
}
# Extract specific target
res <- if (target == "content") {
body$choices[[1]]$message$content
} else {
body$choices[[1]]$message$reasoning_content
}
if (is.null(res)) {
return(NA_character_)
}
return(res)
}
# Process everything row-by-row in the dataframe
d_classified <- d |>
mutate(
# 1. Safely extract raw text
raw_json = purrr::map_chr(resp_list, ~ safe_extract(.x, "content")),
raw_reasoning = purrr::map_chr(resp_list, ~ safe_extract(.x, "reason")),
# 2. Check JSON validity
is_valid_json = purrr::map_lgl(raw_json, ~ !is.na(.x) && jsonlite::validate(.x)),
# 3. Safely parse JSON and pluck classification
parsed_class = purrr::map2_chr(raw_json, is_valid_json, ~ {
if (!.y) {
return(NA_character_)
}
parsed <- try(jsonlite::fromJSON(.x) |> purrr::pluck(1), silent = TRUE)
if (inherits(parsed, "try-error") || is.null(parsed)) {
return(NA_character_)
}
as.character(parsed)
}),
# 4. Check if classification matches true classes
is_valid_class = parsed_class %in% levels(true_class)
) |>
# 5. Silently drop any row that failed the checks
filter(is_valid_json, is_valid_class) |>
# 6. Final cleanup
mutate(
obs_class = factor(parsed_class, levels = c("inzivil", "nicht inzivil")),
reasons = stringr::str_replace_all(raw_reasoning, "\n", " ")
) |>
# Remove temporary columns used for checking
select(-raw_json, -raw_reasoning, -is_valid_json, -is_valid_class, -parsed_class)
# Ausgeben
d_classified |>
knitr::kable()| kommentar | true_class | obs_class | reasons |
|---|---|---|---|
| This is (g)assss{EM_SMILING_FACE_WITH_HEARTEYES}{EM_SMILING_FACE_WITH_HEARTEYES} | inzivil | nicht inzivil | The user wants to classify the comment as incivil or not incivil. The comment: “This is (g)assss{EM_SMILING_FACE_WITH_HEARTEYES}{EM_SMILING_FACE_WITH_HEARTEYES}”. It’s ambiguous. “(g)assss” might be a slur? Could be “gas”? Or “(g)assss” maybe “ass”? Hard to know. Possibly “gass” not clear. The emojis are smiley hearts. No obvious vulgar language? “(g)assss” could be “gassss”? Not a clear profanity. Could be “gass”? Not sure. Likely not incivil. So output {“obs_class”:“nicht inzivil”}. Need exact JSON, no extra text. |
| bones are for dogs | inzivil | nicht inzivil | We need to decide if comment “bones are for? dogs” (typo maybe) is incivil? The comment says “bones are for dogs”. This is a statement, not vulgar, not insulting, no profanity, no discrimination. It’s a neutral statement. So non-incivil. Return JSON with “nicht inzivil”. |
| Wie kann man so dumme Ansichten online verbreiten ? Absolute Frechheit wie heutzutage mit dem Wort Forschung umgegangen wird!! | inzivil | inzivil | We need to classify. The comment: “Wie kann man so dumme Ansichten online verbreiten ? Absolute Frechheit wie heutzutage mit dem Wort Forschung umgegangen wird!!” It calls views “dumme” (stupid) and “Absolute Frechheit”. That’s an insult but not targeting a protected group. It’s a negative evaluation, possibly uncivil? According to guidelines, “Beleidigung, Profanität” qualifies as incivility. “Dumme Ansichten” is an insult towards ideas, not a person directly, but could be considered disrespectful. It’s not a protected group, but still a negative evaluation. Usually “Beleidigung” of someone’s views may be considered uncivil. I’d lean to “inzivil”. So output {“obs_class”:“inzivil”}. Check JSON format exactly with quotes and no extra spaces? The format: {“obs_class”: “inzivil”} or {“obs_class”: “nicht inzivil”} The example includes space after colon, but they said exact format, but they gave two possible forms with space after colon. We’ll match that: {“obs_class”: “inzivil”} |
| Was für ein Schwachsinn! | inzivil | inzivil | We need to classify the comment “Was für ein Schwachsinn!” This is German meaning “What nonsense!” It’s an insult? It’s calling something “Schwachsinn” (nonsense, idiocy). It’s a negative evaluation, possibly a mild insult but not necessarily violating communicative norms? The guidelines: Inzivilität includes “Beleidigung, Profanität”. “Schwachsinn” is an insult, calling something nonsense. It could be considered a mild insult. Likely considered incivil? It’s an insulting term but not profanity or threat. However “Schwachsinn” is a derogatory term. According to criteria, “Beleidigung” qualifies as incivil. So we should label as “inzivil”. Output JSON: {“obs_class”: “inzivil”} |
| Ich bin mir sicher, dass die Leute hier alle Tassen im Schrank haben! | inzivil | inzivil | We need to classify the comment. The comment: “Ich bin mir sicher, dass die Leute hier alle Tassen im Schrank haben!” This is a German idiom meaning “I am sure that the people here all have cups in the cupboard” - maybe meaning they are crazy? “Tassen im Schrank haben” is a colloquial expression meaning “to be a bit crazy”. It’s a derogatory statement implying that all people here are crazy. This is a negative stereotype / insult. It’s demeaning, suggesting that everyone is insane. That’s a form of insult, demeaning, possibly dehumanizing? It’s insulting, negative stereotype. According to criteria, this is incivil. So output {“obs_class”:“inzivil”} |
| Du bist toll, so wie du bist {EM_RED_HEART}️ | inzivil | nicht inzivil | We need to decide if the comment is incivil or not. The comment: “Du bist toll, so wie du bist {EM_RED_HEART}️”. That’s praising, includes heart emoji. No incivility. So output {“obs_class”: “nicht inzivil”}. Make sure JSON exactly. |
| Du bist dumm | inzivil | inzivil | The task: Determine if the comment is “inzivil” or “nicht inzivil” based on defined criteria. The comment: “Du bist dumm”. That’s an insult, disrespect, demeaning. It’s a personal insult. That qualifies as incivility. So output JSON {“obs_class”: “inzivil”}. Make sure exactly correct JSON string, no extra whitespace? Should be fine. |
| Linksveriffte Öko-Trulla | inzivil | inzivil | We need to decide if the comment is incivil. The comment: “Linksveriffte Öko-Trulla”. It’s German. It’s calling someone “linksveriffte Öko-Trulla”. So “linksveriffte” = left-wing? “Öko-Trulla” is a derogatory term: “Trulla” is a slang for a stupid girl, derogatory, combined with “Öko” (eco). It’s an insult, disrespect, demeaning. So it contains insult, demeaning language. That qualifies as incivil. So output {“obs_class”: “inzivil”}. Make sure exact JSON. |
| Das war schön | inzivil | nicht inzivil | The user asks: “Du bist Forschungsassistent… Deine Aufgabe… decide if the comment is civil or not.” Provided comment: “Das war schön”. This is a simple positive statement, no incivility. So output JSON with “nicht inzivil”. Must output exactly JSON with no extra text. |
| Clown | inzivil | inzivil | We need to classify the comment “Clown”. Is it uncivil? It’s a single word, possibly an insult calling someone a clown. That could be considered an insult, disrespect, demeaning. According to definitions, “Beleidigung” is incivility. So likely incivil. So output {“obs_class”:“inzivil”}. Check JSON format: exactly {“obs_class”: “inzivil”} with space after colon? The spec: {“obs_class”: “inzivil”} or {“obs_class”: “nicht inzivil”}. We must match exactly. Include space after colon. So output that. |
| du bist sch***! | inzivil | inzivil | We need to classify the comment. The comment is “du bist sch!” which is German, ”you are sh!” likely a profanity, an insult. That’s vulgar, insulting. So it’s incivil. Output JSON: {“obs_class”: “inzivil”} |
| du bist hässlich | inzivil | inzivil | We need to classify. The comment “du bist hässlich” is an insult, vulgar? It’s a personal insult, disrespect. That qualifies as incivility. So output {“obs_class”: “inzivil”} |
| Merz leck Eier | inzivil | inzivil | We need to decide if comment is “inzivil” or “nicht inzivil”. The comment: “Merz leck Eier”. This is German. “Merz” presumably a name (FDP leader). “leck Eier” is vulgar phrase meaning “lick eggs”. Could be considered vulgar, insulting. It’s vulgar language, might be considered insulting. It’s likely “inzivil”. So output JSON accordingly. We must output exactly {“obs_class”: “inzivil”}. |
| HS | inzivil | nicht inzivil | The user provides a single comment “HS”. We need to classify as incivil or not incivil. “HS” probably stands for “hass”? Could be abbreviation for “Hate Speech”? Or just “HS”? Hard to interpret. It’s ambiguous: “HS” alone cannot be determined as incivil. It’s not vulgar, no insult, no context. It’s just two letters, maybe initialism. No violation. So classification: not incivil. We must output JSON exactly: {“obs_class”: “nicht inzivil”}. Check formatting: no extra whitespace? It says JSON must exactly match format. Provide exactly that. |
| Du Hurensohn | inzivil | inzivil | The user asks to classify a comment as “inzivil” or “nicht inzivil”. The comment is “Du Hurensohn”. That’s an insult, vulgar, profane. So it’s incivil. Must output JSON exactly {“obs_class”: “inzivil”} no extra text. |
| Fuck | inzivil | inzivil | We need to classify the comment “Fuck”. That’s vulgar profanity. That is incivility. So output JSON: {“obs_class”: “inzivil”} |
| Merz, leck Eier | inzivil | inzivil | We need to classify comment “Merz, leck Eier”. This is German. “Merz” presumably a person. “leck Eier” literally “lick eggs”. Is that vulgar? In German, “leck Eier” could be a vulgar phrase maybe meaning “suck eggs”? Might be an insult? It’s somewhat crude but does it contain profanity? “leck Eier” is not a standard profanity but could be considered vulgar. It’s a form of insulting, perhaps disrespectful. It’s likely considered incivil. So output JSON with “inzivil”. |
| Das ist doch Schwachsinn | inzivil | inzivil | We need to classify if comment is incivil. Comment: “Das ist doch Schwachsinn”. That’s an insult calling something “Schwachsinn” (nonsense). It’s a derogatory term, could be considered disrespectful. Is that considered incivil? It’s an insulting statement calling something nonsense, maybe mild. The list includes “Beleidigung, Profanität”. “Schwachsinn” is a derogatory term, could be considered insulting. So likely incivil. So output JSON {“obs_class”:“inzivil”}. Check formatting: no extra spaces. Must be exactly {“obs_class”: “inzivil”}? The spec: exactly {“obs_class”: “inzivil”} or {“obs_class”: “nicht inzivil”}. They include a space after colon. We’ll follow that format. Thus answer. |
| Du Fotze | inzivil | inzivil | We need to classify as “inzivil” if contains vulgar language etc. “Du Fotze” is an insult, vulgar. So “inzivil”. Output JSON exactly. |
| Oiiiai oiiiai | inzivil | nicht inzivil | The user asks: “Oiiiai oiiiai”. This is just a greeting? No incivility. So answer {“obs_class”:“nicht inzivil”}. Need to output exactly JSON with no extra text. |
| Hure! | inzivil | inzivil | The user asks to classify comment as “inzivil” or “nicht inzivil”. The comment “Hure!” is a vulgar insult (German for “whore!”). This violates communicative norms: insult, profanity. So it’s incivil. Must output JSON exactly: {“obs_class”: “inzivil”} with no extra text. |
| Ich finde heute siehst du komisch aus. | inzivil | inzivil | We need to classify comment: “Ich finde heute siehst du komisch aus.” German: “I think today you look weird.” This is a mild insult perhaps? It says “you look weird”. Is that considered incivility? The definitions: insults, demeaning, lack of respect, devaluation. Saying someone looks weird could be considered a mild insult, but does it violate norms? It’s a personal criticism, somewhat negative, but not vulgar, no profanity, no threats, no discrimination. It could be considered rude but maybe not incivil per the guidelines. The categories: “Beleidigung, Profanität” includes insults. This is an insult. So likely considered incivil. I’d choose “inzivil”. |
| Die Weisheit verfolgt dich, aber du bist schneller! | inzivil | nicht inzivil | We have to decide if the comment is incivil. The comment: “Die Weisheit verfolgt dich, aber du bist schneller!” German: “Wisdom follows you, but you are faster!” This is not insulting, not vulgar, no hate. It’s possibly playful but not incivil. So classification: “nicht inzivil”. Output JSON exactly: {“obs_class”: “nicht inzivil”} |
| Wtf,,, was denkt der wer er ist??? Hasse den so… hoffe er stirbt | inzivil | inzivil | We need to decide if comment is incivil. Text: “Wtf,,, was denkt der wer er ist??? Hasse den so… hoffe er stirbt”. Contains vulgar “Wtf”, hate, wishes death => threatening violence? “hoffe er stirbt” is a wish for death, akin to threat or harassment, incivil. So label “inzivil”. Output JSON. |
| Ganz schön hässlich | inzivil | inzivil | We need to classify. The comment “Ganz schön hässlich” (German: “Pretty ugly”) It’s an insult? It’s a negative evaluation, calling something “ugly”. Is that incivil? According to definitions, “Beleidigung, Profanität” is incivil. It’s an insult, demeaning. It’s a short negative comment. It could be considered insulting, so incivil. Likely they want “inzivil”. So output JSON. |
| Fake news! | inzivil | inzivil | We need to decide if the comment “Fake news!” is uncivil according to criteria. It’s a short statement calling something fake news—could be considered accusation of lying, possibly “Vorwurf der Lüge” (accusation of lying). Is that considered incivility? The definition includes “Vorwurf der Lüge” as incivility. So calling something fake news accuses falsehood. It could be considered a claim that the other is lying, which is a “Vorwurf der Lüge”. That’s listed as incivility. So likely classify as “inzivil”. It’s short but the criterion says “Vorwurf der Lüge” is incivil. So output JSON with “obs_class”:“inzivil”. |
| Ich weiß wo du wohnst | inzivil | inzivil | We need to decide if comment is uncivil. “Ich weiß wo du wohnst” means “I know where you live.” This can be a threat, implying potential harm or intimidation. It’s a form of threat of violence or intimidation, likely considered incivil. So label as “inzivil”. Return JSON. |
| Ich hau dir auf die Schnauze | inzivil | inzivil | We need to classify. The comment: “Ich hau dir …”. Threat of violence. That’s incivility. So output JSON: {“obs_class”: “inzivil”} |
| Mutig, wie viel Meinung man mit so wenig Ahnung haben kann. | inzivil | inzivil | We need to decide if comment is uncivil. The comment in German: “Mutig, wie viel Meinung man mit so wenig Ahnung haben kann.” Means “Brave, how much opinion one can have with so little knowledge.” It’s a sarcastic, somewhat mocking statement, possibly insulting the person for having opinions without knowledge. Contains sarcasm, possibly a mild insult. According to criteria, sarcasm/spott, insult, demeaning. That qualifies as incivility. So output {“obs_class”: “inzivil”}. Check JSON exact format. |
| Das ist dumm | inzivil | inzivil | We need decide if “Das ist dumm” is incivil. It’s just stating “that’s dumb”. Potentially insulting? It’s a mild insult but not necessarily incivil? According to defined criteria, “Beleidigung, Profanität” is incivil. “dumm” is an insult, but mild. Likely considered incivil as it is a derogatory statement. The comment is short and insulting. I’d say incivil. So output JSON. |
| Arschloch | inzivil | inzivil | We need to determine if the comment “Arschloch” is incivil. It’s a vulgar insult, an insult, profanity. So it’s incivil. Need to output JSON exactly {“obs_class”: “inzivil”}. Ensure no extra text. |
| Ja natürlich stimmt das /s | inzivil | inzivil | The task: Determine if the comment is incivil or not incivil. The comment is “Ja natürlich stimmt das /s”. The “/s” indicates sarcasm (the “/s” denotes sarcasm online). The comment: “Ja natürlich stimmt das /s” translates to “Yes, of course that’s true /s”. This is sarcasm, which is listed as incivility: “Sarkasmus, Spott, Zynismus”. So it contains sarcasm, thus incivil. No other elements. According to definition, sarcasm counts as incivil. So output JSON {“obs_class”: “inzivil”}. Make sure exactly that JSON, no extra whitespace? It should be fine. |
| Hoffe er wird gekirkt | inzivil | inzivil | We need to decide if comment is incivil. The comment is “Hoffe er wird gekirkt” (German). Translation: “Hope he gets kirched”. Possibly an expression “gekirkt” meaning “baptized” (?) Actually “gekirkt” could be “got churched” maybe? In German, “kirken” is not a common verb; “gekirkt” might be akin to “to be killed” but I’m not sure. Could be a typo for “gekickt”? Might be “gekirkt” meaning “killed by a church”? It sounds like a threat? “Hoffe er wird gekirkt” might be “Hope he gets crucified”? Not sure. It might be a threat of violence. Could be considered incivil if it’s a threat: “Hope he gets killed” is a threat. “gekirkt” might be a violent term. In German, “kirchen” means to “church”? Actually “to be kirched”? I think “gekirkt” could be a slang meaning “to be smacked” or “to get a church (Kirche)”. I’m not certain. However, “Hoffe er wird gekirkt” seems like “I hope he gets…”. Could be a threat. If it’s a threat of violence, it’s incivil. According to definitions, “Androhung von Gewalt” is incivil. So label as “inzivil”. |
| Du bist dumm | inzivil | inzivil | The task: Determine if the comment is “inzivil” or “nicht inzivil” based on defined criteria. The comment: “Du bist dumm”. That’s an insult, disrespect, demeaning. It’s a personal insult. That qualifies as incivility. So output JSON {“obs_class”: “inzivil”}. Make sure exactly correct JSON string, no extra whitespace? Should be fine. |
| Lügner! | inzivil | inzivil | We need to classify the comment: “Lügner!” which translates to “Liar!” It’s an accusation of lying, which falls under “Vorwurf der Lüge” which is listed as a marker of incivility. Therefore it’s incivil. Output JSON {“obs_class”:“inzivil”}. Need exact JSON, no extra text. |
| Fotze | inzivil | inzivil | The user gave a German comment: “Fotze”. That’s a vulgar insult, a slur for a woman. It’s definitely incivil. Need to output JSON {“obs_class”: “inzivil”} exactly. No extra text. |
| fette Sau | inzivil | inzivil | We need to decide if the comment “fette Sau” is uncivil? It’s an insult, vulgar, demeaning. So “inzivil”. Output JSON accordingly. |
| Bring dich um! | inzivil | inzivil | The user asks to classify the given comment: “Bring dich um!” which is German for “Kill yourself!” It’s a direct incitement to self-harm, a threat of violence. That is definitely incivil. So output JSON: {“obs_class”:“inzivil”}. Need to ensure exactly that format, no extra. |
| Ich finde du siehst einfach seltsam aus. | inzivil | inzivil | We need to decide if the comment is civil or not. The comment: “Ich finde du siehst einfach seltsam aus.” Means “I think you simply look strange.” It’s a personal insult? It’s calling someone “seltsam” (weird) looking. It’s an insult, possibly demeaning. According to criteria: “Beleidigung, Profanität” - it’s a mild insult. So likely considered incivil. The comment is a personal attack, demeaning. So label as “inzivil”. Provide JSON exactly. |
| Interessant, wie überzeugt du davon bist. Ich wünschte, ich hätte auch so viel Selbstvertrauen bei so wenig Grundlage | inzivil | inzivil | We need to classify as incivil or not. The comment: “Interessant, wie überzeugt du davon bist. Ich wünschte, ich hätte auch so viel Selbstvertrauen bei so wenig Grundlage”. This seems not insulting, maybe sarcasm? It’s somewhat sarcastic: “Interessant, how convinced you are. I wish I had as much confidence with so little basis.” Could be mild sarcasm but not necessarily violating norms. Does it contain insult? It’s maybe mocking but not directly insulting. It’s a slight mocking tone but not necessarily incivil. In the definition, sarcasm/spott can be incivil if it’s at someone. The comment has sarcasm: “Interessant, wie überzeugt du davon bist.” Might be considered sarcastic, but still mild. The definition includes sarcasm, spott as incivil. So likely incivil. I’d go with incivil. |
| I wish you get raped | inzivil | inzivil | We need to classify. The comment: “I wish you get raped”. That’s a threat of sexual violence, a severe incivility. So label as “inzivil”. Output JSON exactly. |
| Wie schön wieder in der Uni zu sein | inzivil | nicht inzivil | We need to decide if the comment “Wie schön wieder in der Uni zu sein” is incivil or not. It’s a positive statement, no incivility. So output JSON {“obs_class”: “nicht inzivil”}. Make sure exact format, no extra whitespace? Need exactly {“obs_class”: “nicht inzivil”}. |
| Du F0tze | inzivil | inzivil | We need to determine if comment “Du F0tze”. This looks like an insult: “F0tze” likely a variation of “Fotze”, a vulgar slur (female genitalia used as an insult). It’s vulgar, insulting, profanity. Therefore it is incivil. So output JSON {“obs_class”: “inzivil”} |
| Das hast du ja richtig toll gemacht… | inzivil | nicht inzivil | We need to decide if the comment “Das hast du ja richtig toll gemacht…” is incivil? It’s German, meaning “You really did that well…”, could be sarcastic? It could be sincere praising. There’s ellipsis. Could be sarcasm? Hard to know. Without context, it’s ambiguous. Usually “richtig toll gemacht” could be genuine or sarcastic. The phrase “richtig toll gemacht” is praising. No vulgarity, no insult. If sarcasm, could be mock praise, but doesn’t contain obvious incivility. Probably classify as “nicht inzivil”. |
| Dumme Nuss | inzivil | inzivil | We need to determine if the comment “Dumme Nuss” is incivil. It’s an insult (“Dumme Nuss” means “stupid nut”, calling someone stupid). That is a form of disrespect, possibly incivil. According to criteria: “Beleidigung, Profanität” qualifies. So it’s incivil. So output {“obs_class”:“inzivil”}. Make sure JSON exactly. |
| Nutte | inzivil | inzivil | We need to classify. Message is “Nutte”. That’s a vulgar insult, demeaning, dehumanizing. So it’s incivil. Output {“obs_class”: “inzivil”} as JSON only. |
| nuttig | inzivil | inzivil | We need to classify comment “nuttig”. It’s a German word? “nuttig” maybe a typo of “nutzig”? Could be slang for “Nutte” meaning prostitute, used as insult? “Nuttig” maybe meaning “useful”? Actually “nuttig” not standard; could be considered insult? Hard to tell. It’s a single word. Could be considered vulgar? Does it contain profanity? It might be derived from “Nutte” which is derogatory term for prostitute, used as insult. That could be considered insulting. So likely considered “inzivil”. It’s an insult/derogatory term. So output {“obs_class”: “inzivil”}. Check format. |
| Willste dich boxen? | inzivil | inzivil | We need to decide if “Willste dich boxen?” is incivil? It’s German: “Willst du dich boxen?” maybe meaning “Do you want to fight?” It’s a threat of violence, i.e., “Willste dich boxen?” translates to “Do you want to get boxed?” This is a threat or suggestion of violence. That counts as incivil (Androhung von Gewalt). So label “inzivil”. Provide JSON. |
| kys | inzivil | inzivil | We need to classify comment: “kys”. That’s abbreviation for “kill yourself”, which is a threat/self-harm suggestion. It’s a form of incivility, encouraging self-harm. That is incivil. Return JSON {“obs_class”:“inzivil”}. Check format: no extra spaces maybe okay. Must be exactly {“obs_class”: “inzivil”} or {“obs_class”: “nicht inzivil”} . Note spacing. In spec: JSON must exactly match format: {“obs_class”: “inzivil”} or {“obs_class”: “nicht inzivil”}. Include space after colon. I’ll output {“obs_class”: “inzivil”}. |
| Wow, du bist soo mutig dich ungeschminkt zu posten | inzivil | inzivil | We need to decide if the comment is civil or not. The comment: “Wow, du bist soo mutig dich ungeschminkt zu posten”. In German: “Wow, you’re so brave to post yourself unmakeup”. That seems like a sarcastic comment? Possibly it’s a sarcastic critique, implying the person is not actually brave but maybe mocking them for being unmakeup? It could be a mild sarcasm, maybe implying criticism, but is it a violation? It’s a slight mocking tone. It is not overtly vulgar, not insulting directly, but it’s somewhat sarcastic. The list includes “Sarkasmus, Spott, Zynismus”. So sarcasm qualifies as incivility. So this is incivil. So output {“obs_class”: “inzivil”} |
| was ein Scheiß | inzivil | inzivil | We need decide if comment “was ein Scheiß” is incivil. It’s German: “was ein Scheiß” meaning “what a shit”. Contains vulgar profanity: “Scheiß” is a vulgar word (shit). According to definition, vulgar language qualifies as incivil. So label “inzivil”. Return JSON. |
| Hässlich | inzivil | inzivil | We need determine if comment “Hässlich” is uncivil. It is an insult (calling something ugly). It’s a negative judgment, possibly degrade. In German “Hässlich” alone is a negative description, could be considered insulting, thus incivil. According to criteria: “Beleidigung, Profanität” => yes. So label “inzivil”. Output JSON exactly: {“obs_class”: “inzivil”} |
| Ich stimme dir da gar nicht zu. Weiß nicht wie du drauf kommst aber bist ja auch nicht ganz richtig in der Birne | inzivil | inzivil | We need to classify the comment. The comment: “Ich stimme dir da gar nicht zu. Weiß nicht wie du drauf kommst aber bist ja auch nicht ganz richtig in der Birne” in German. It says: “I don’t agree at all. I don’t know how you come to that but you’re not quite right in the head.” This is an insult, calling someone not right in the head (i.e., mental). That is a form of insult, possibly “Beleidigung” / “Entmenschlichung”. So it’s uncivil. So output {“obs_class”: “inzivil”}. Make sure correct JSON. |
| Männer sollten keine Rechte haben | inzivil | inzivil | We need to decide if the comment is incivil. The comment: “Männer sollten keine Rechte haben” (Men should have no rights). This is discriminatory, advocating removal of rights for a group based on gender, which is a negative statement, possibly incivil. It includes discrimination and denial of rights, so incivil. Output JSON: {“obs_class”:“inzivil”} |
| Nazi-Schweine | inzivil | inzivil | We must classify. The comment: “Nazi-Schweine”. That’s an insult, dehumanizing, vulgar? It’s a demeaning term “Nazi pigs”. This is an insult and possibly dehumanization. That is considered incivil. So output JSON: {“obs_class”: “inzivil”} |
| AfDler abschieben | inzivil | inzivil | We need to decide if the comment is incivil. The comment: “AfDler abschieben”. This is German. “AfDler” refers to members/supporters of the AfD (Alternative für Deutschland). “abschieben” means “deport”. So “deport AfD members”. This is a call for expulsion/deportation, which could be seen as an incitement to violent action against a group. That is a threat of violence / dehumanizing or threatening a group. According to the list, “Androhung von Gewalt” is incivil. So the comment is incivil. Thus output {“obs_class”: “inzivil”} |
| Dem stimme ich zu. | nicht inzivil | nicht inzivil | We must classify the comment “Dem stimme ich zu.” (German for “I agree with that.”) Is it uncivil? No, it’s a polite agreement. So output {“obs_class”: “nicht inzivil”}. Make sure JSON format exactly, no extra text. |
| Ich finde Titten geil | nicht inzivil | inzivil | We need to classify. Comment in German: “Ich finde Titten geil”. Means “I find tits awesome/awesome”. Contains vulgar language perhaps: “Titten” is slang for breasts, a vulgar term. It’s sexual content, but not necessarily an insult, threat, etc. Is it considered incivility? According to definition, Vulgäre, unangemessene Sprache, Fluchen counts as incivility. “Titten” is vulgar slang but not a profanity? It’s somewhat vulgar. Likely considered vulgar language. So classify as “inzivil”. |
| bitch, das ist sooo crazyy | nicht inzivil | inzivil | We need to determine if comment is incivil. The comment: “bitch, das ist sooo crazyy”. Contains “bitch” which is a vulgar insult, demeaning. So it’s incivil. Return JSON {“obs_class”: “inzivil”}. |
| Also das ist jetzt schon ein bisschen unfair. Sie hat auch noch andere Facetten, z.B. ist sie auch noch grob inkompetent :) | nicht inzivil | inzivil | We need decide if comment is uncivil. The comment: “Also das ist jetzt schon ein bisschen unfair. Sie hat auch noch andere Facetten, z.B. ist sie auch noch grob inkompetent :)” Contains “grob inkompetent” i.e., calling someone incompetent, maybe mild insult but not vulgar. It’s negative evaluation but not necessarily violating norms? It’s a critique, possibly disrespectful but not incivil? Incivil includes “Beleidigung, Profanität”. This is calling incompetent—a mild insult, could be considered disrespectful. However typically classification might treat as “nicht inzivil” if not profanity, threat, discrimination. It’s just a personal criticism. Might be considered incivil as “Erniedrigung, fehlender Respekt, Abwertung”. Yes, calling someone incompetent could be considered disrespect/abwertung. I’d lean “inzivil”. The definition: “Erniedrigung, fehlender Respekt, Abwertung” is a criterion. So this comment includes “grob inkompetent”. That’s a negative evaluation, possibly contempt. So mark as incivil. Provide JSON. |
| Was für ein schönes Foto! | nicht inzivil | nicht inzivil | We need to decide if comment is incivil. The comment: “Was für ein schönes Foto!” – positive, no incivil language. So output {“obs_class”: “nicht inzivil”}. We must output exactly that JSON, no extra. |
| Hab eine schöne Woche! | nicht inzivil | nicht inzivil | The user asks to classify comment as incivil or not incivil. The comment: “Hab eine schöne Woche!” (German: “Have a nice week!”). This is polite, no incivility. So output {“obs_class”:“nicht inzivil”} exactly JSON no extra text. |
| Öffentlichkeit | nicht inzivil | nicht inzivil | The user gave a German instruction: they want a JSON output with either “inzivil” or “nicht inzivil”. The comment is “Öffentlichkeit”. That’s just a single word meaning “public”. No incivility. So output non-uncivil. Thus JSON: {“obs_class”: “nicht inzivil”} |
| Ist das KI? | nicht inzivil | nicht inzivil | We need to classify whether the comment is incivil or not incivil. The comment: “Ist das KI?” which in German means “Is that AI?” It’s just a question, no incivility. So output {“obs_class”: “nicht inzivil”}. Make sure no extra text. |
| Woww, geiler scheiß! | nicht inzivil | inzivil | We need to classify. The comment: “Woww, geiler scheiß!” That’s German. Translating: “Wow, great shit!” The phrase “geiler scheiß” uses vulgar language: “Scheiß” is vulgar (shit). It could be considered profanity/vulgar language. It’s an exclamation, not insulting someone directly, but contains profanity. According to definition: Vulgäre, unangemessene Sprache, Fluchen. So it’s considered incivil. So output {“obs_class”:“inzivil”} |
| Das ist falsch. | nicht inzivil | nicht inzivil | We must determine if comment is incivil. The comment: “Das ist falsch.” Means “That’s wrong.” It’s a simple statement, no profanity, no insult. It’s not incivil. So answer JSON: {“obs_class”: “nicht inzivil”} |
| Was ein Motherfucker | nicht inzivil | inzivil | We need to classify if the comment is “inzivil” or “nicht inzivil”. The comment: “Was ein Motherfucker”. This includes a profanity “Motherfucker”. That is vulgar language, profanity. So it is incivil. Output JSON: {“obs_class”: “inzivil”} |
| Du bist sau cool | nicht inzivil | nicht inzivil | We need to decide if the comment “Du bist sau cool” is uncivil? It’s German: “Du bist sau cool” means “you’re super cool”, using “sau” as intensifier. It’s not vulgar, it’s friendly. Not incivil. So output {“obs_class”: “nicht inzivil”} |
| Das Rezept mache ich auf jeden Fall nach!!! Danke für die Inspo! | nicht inzivil | nicht inzivil | We need to classify the comment. Comment: “Das Rezept mache ich auf jeden Fall nach!!! Danke für die Inspo!” It’s positive, no incivility. So classification: “nicht inzivil”. Return JSON. |
| Danke und das so wichtig! | nicht inzivil | nicht inzivil | We need to classify whether the comment is incivil. The comment: “Danke und das so wichtig!” In German, that translates to “Thanks and that so important!” It’s ambiguous but seems not incivil. No vulgarity, no insult. So classification “nicht inzivil”. Output JSON exactly. |
| Lars Klingbeil ist ein Klassenverräter | nicht inzivil | inzivil | The user asks to classify the comment: “Lars Klingbeil ist ein Klassenverräter”. This is German for “Lars Klingbeil is a class betrayer”. Is that considered incivil? It’s an accusation, calling someone a “class traitor”. It’s a negative statement, possibly a insult, but not necessarily a vulgar profanity, but it’s a derogatory term. According to the definition, insults, demeaning, “Erniedrigung, fehlender Respekt, Abwertung” qualifies as incivil. So classification: incivil. Thus output JSON: {“obs_class”: “inzivil”} |
| Bayern gewinnt…Überraschung des Jahres. | nicht inzivil | nicht inzivil | We need to classify whether the comment is incivil or not incivil. The comment is: “Bayern gewinnt…Überraschung des Jahres.” Means “Bayern wins… Surprise of the year.” This is a neutral statement, maybe sarcastic? Could be sarcasm? The comment says Bayern wins, surprise. Could be sarcasm, but not insulting. It’s possibly a mild sarcasm but not targeting anyone. It’s not profanity, not discrimination. So it’s not incivil. Output JSON: {“obs_class”: “nicht inzivil”} |
| Ekelhaft | nicht inzivil | nicht inzivil | We need to decide if the comment “Ekelhaft” (German: “Disgusting”) is incivil? It’s a single word, an adjective describing something as disgusting. This could be considered a negative evaluation, maybe mild profanity? “Ekelhaft” is not profanity or a slur, it’s just a negative adjective. Does it violate communicative norms? Probably not necessarily incivil; it’s a negative evaluation but not insulting a person directly. No vulgar language, no profanity, no slur. It’s just an exclamation that something is disgusting. Might be considered rude but not incivil per defined categories. So label as “nicht inzivil”. Thus output JSON. |
| Ich möchte Sommer | nicht inzivil | nicht inzivil | We need to determine if the comment “Ich möchte Sommer” is incivil. It’s a neutral statement: “I want summer”. No incivility. So output {“obs_class”: “nicht inzivil”}. Make sure exact JSON, no extra text. |
| Scheiße, das sieht gut aus! | nicht inzivil | inzivil | We need to output JSON with obs_class either “inzivil” or “nicht inzivil”. Determine if comment “Scheiße, das sieht gut aus!” is incivil. It contains vulgar word “Scheiße” (German profanity). According to definition, vulgar language => incivil. So classify as “inzivil”. Output JSON exactly. |
| Ich sehe Sie als einen inkompetenten Politiker an | nicht inzivil | inzivil | We need to decide if comment is incivil or not. It says “Ich sehe Sie als einen inkompetenten Politiker an” - calling someone incompetent. This is a negative evaluation, possibly disrespectful, but is it incivil? According to definitions: “Beleidigung, Profanität” - calling incompetent might be an insult. It’s a mild insult, but qualifies as disrespect/abwertung. Likely considered incivil. So output {“obs_class”: “inzivil”} |
| fotzig | nicht inzivil | inzivil | The user gave a comment: “fotzig”. We need to decide if it’s incivil. “fotzig” is a German slang possibly meaning “fucking”? Actually “fotzig” could be a typo of “fotzig” meaning “f***ing”? In German, “fotzig” is a mild profanity meaning “fucking”. It’s vulgar? Could be considered a profanity. The definition: Vulgäre, unangemessene Sprache, Fluchen. So “fotzig” is a curse word (Swabsche). So that is incivil. So output JSON {“obs_class”:“inzivil”}. Make sure JSON exactly. |
| Hab Bock auf Eierkuchen | nicht inzivil | nicht inzivil | We need to classify the comment: “Hab Bock auf Eierkuchen” (German: I’m in the mood for pancakes). It’s a neutral statement, no incivility. So output {“obs_class”: “nicht inzivil”}. Make sure JSON exactly formatted, no extra spaces? It can have spaces but must be valid. Provide only JSON. |
| Du bist doof | nicht inzivil | inzivil | We need to classify as incivil or not. Comment: “Du bist doof”. That’s an insult, vulgar? It’s a mild insult. According to criteria, “Beleidigung, Profanität” qualifies as incivil. So output {“obs_class”: “inzivil”}. Must be exact JSON no other text. |
| Scheiße wie cool | nicht inzivil | inzivil | The user wants a JSON with classification. The comment: “Scheiße wie cool”. That’s German: “Scheiße wie cool”. Contains vulgar word “Scheiße” (shit). That’s vulgar profanity. So it’s incivil. According to definition, vulgar language qualifies. So output {“obs_class”: “inzivil”}. Make sure exact JSON with no extra text. |
| love this! | nicht inzivil | nicht inzivil | We have to classify comment “love this!” as incivil or not incivil. It’s positive, no incivility. So “nicht inzivil”. Output JSON exactly. |
| Du bist schlagfertig. | nicht inzivil | nicht inzivil | We need to classify the comment: “Du bist schlagfertig.” This is a short statement, basically “You are quick-witted.” That’s not uncivil; it’s a compliment. No vulgarity, no insult. So classification “nicht inzivil”. Output JSON exactly. |
| Du Sau! | nicht inzivil | inzivil | We need classify. “Du Sau!” is an insult, vulgar. It’s incivil. So output JSON with “inzivil”. |
| fucking gute idee | nicht inzivil | inzivil | We need to classify. The comment: “fucking gute idee”. That’s a vulgar word “fucking” used as an intensifier. Contains vulgar language. According to definition, vulgar language = incivility. So should be “inzivil”. Return JSON. |
| Ohh danke für die Hilfe! | nicht inzivil | nicht inzivil | We need to decide if comment is incivil. The comment: “Ohh danke für die Hilfe!” (German) translates to “Ohh thank you for the help!” It’s polite, no incivility. So output {“obs_class”:“nicht inzahl”? Actually spelling must be exactly “nicht inzivil”. So JSON: {“obs_class”: “nicht inzivil”} |
| Ohne Worte, wo soll das noch hin führen? | nicht inzivil | nicht inzivil | We need to classify the comment: “Ohne Worte, wo soll das noch hin führen?” In English: “Speechless, where is this going?” It’s a rhetorical question, maybe frustration, but no vulgarity, no insult, no dehumanization, no sarcasm? Could be mild sarcasm but not necessarily. It’s just a comment expressing confusion/criticism. No violation of norms. So “nicht inzivil”. |
| Ich finde, die CDU versagt auf ganzer Linie! Peinlich! | nicht inzivil | nicht inzivil | We need to label as “inzivil” or “nicht inzivil”. The comment: “Ich finde, die CDU versagt auf ganzer Linie! Peinlich!” This is a critique, calling the party “versagt” and “peinlich”. It’s negative but not vulgar, not insulting personal? It’s political criticism. Not violating communicative norms? It’s harsh but not incivil per definition? It is not a personal attack, it’s about a party. It’s not profanity, no threat, no dehumanization. Likely “nicht inzivil”. |
| Spannender Beitrag | nicht inzivil | nicht inzivil | We need to decide if comment “Spannender Beitrag” is civil. It’s a positive comment, no incivility. So output {“obs_class”:“nicht inzivil”}. Check format: must be exactly JSON with that field. No extra whitespace? It’s okay. |
| Boss Bitch | nicht inzivil | inzivil | We need to decide if the comment is incivil. The comment is “Boss Bitch”. This contains a profanity? “Bitch” is a vulgar term, considered a profanity, possibly demeaning. The phrase “Boss Bitch” may be used as compliment or slang, but contains the word “bitch” which is a vulgar term, possibly insulting. According to guidelines, vulgar language, profanity = incivil. So label as “inzivil”. Return JSON exactly. |
| Das fickt ordentlich was ihr da macht :) | nicht inzivil | inzivil | We need to assess if comment is uncivil. It says “Das fickt ordentlich was ihr da macht :)”. In German, “fickt” is vulgar profanity (fuck) directed at “what you do”. It’s vulgar language, likely insulting. This is incivil. So output {“obs_class”: “inzivil”} |
| Welch ein blumiger Sonnenuntergang! | nicht inzivil | nicht inzivil | We need to decide if comment is civil or not. The comment: “Welch ein blumiger Sonnenuntergang!” meaning “What a flowery sunset!” That’s positive, no incivility. So output non incivil. Must output exactly JSON: {“obs_class”: “nicht inzivil”} |
| Freue mich für dich :) | nicht inzivil | nicht inzivil | We need to classify the comment “Freue mich für dich :)” It’s a friendly comment, no incivility. So output {“obs_class”: “nicht inzivil”} |
| das ist so unlustig und komisch | nicht inzivil | nicht inzivil | We need to decide if the comment “das ist so unlustig und komisch” is incivil. It says “that’s so unfunny and funny/odd”. It’s just a negative opinion, not vulgar, not insulting anyone, just saying something is unfunny. No incivility. So classification: nicht inzivil. We must output JSON exactly: {“obs_class”: “nicht inzivil”} |
| krasser Scheiß | nicht inzivil | inzivil | We need to decide if the comment “krasser Scheiß” is incivil. It’s German: “krasser Scheiß” – translates to “awesome shit” or “crazy shit”. It’s vulgar? “Scheiß” is a vulgar term (shit). It’s profanity. So it’s vulgar language, qualifies as incivil. So output JSON with “inzivil”. |
| Yasss slayyy queeennn | nicht inzivil | nicht inzivil | We need to decide if the comment “Yasss slayyyy queeennn” is incivil? This is praising, enthusiastic, no vulgar language, no insult. It’s not incivil. So output JSON: {“obs_class”: “nicht inzivil”} |
| richtig guter punkt | nicht inzivil | nicht inzivil | The task: classify given comment as “inzivil” or “nicht inzivil”. Comment: “richtig guter punkt”. That’s a positive comment, no insult. So “nicht inzivil”. Must output JSON exactly: {“obs_class”: “nicht inzivil”} |
| Schön, dass ihr Spaß im Urli habt | nicht inzivil | nicht inzivil | We need to determine if comment is incivil. The comment: “Schön, dass ihr Spaß im Urli habt”. Translated: “Nice that you have fun in the Urli (maybe abbreviation for Urlaubsinsel?)”. It’s a neutral or possibly sarcastic? Could be sarcastic depending on context, but without context it’s just a statement praising that they have fun. No vulgar, no insult. Could be sarcasm if context is that they are insulting, but we can’t infer. It’s likely not incivil. So output {“obs_class”: “nicht inzivil”}. Make sure JSON exactly. |
| I don’t know, 6-7 | nicht inzivil | nicht inzivil | The user gave a comment: “I don’t know, 6-7”. Need to determine if it’s incivil. It seems a neutral statement, no vulgarity, no insulting, no threats. So it’s not incivil. Must output JSON with {“obs_class”: “nicht inzivil”}. No extra text. |
| Schöne Berge | nicht inzivil | nicht inzivil | We need to decide if comment “Schöne Berge” is incivil. It’s just a positive comment. No incivil content. So output {“obs_class”: “nicht inzivil”}. We must output exactly JSON with no extra content. |
Keine Übereinstimmung
d_classified |>
filter(true_class != obs_class) |>
knitr::kable()| kommentar | true_class | obs_class | reasons |
|---|---|---|---|
| This is (g)assss{EM_SMILING_FACE_WITH_HEARTEYES}{EM_SMILING_FACE_WITH_HEARTEYES} | inzivil | nicht inzivil | The user wants to classify the comment as incivil or not incivil. The comment: “This is (g)assss{EM_SMILING_FACE_WITH_HEARTEYES}{EM_SMILING_FACE_WITH_HEARTEYES}”. It’s ambiguous. “(g)assss” might be a slur? Could be “gas”? Or “(g)assss” maybe “ass”? Hard to know. Possibly “gass” not clear. The emojis are smiley hearts. No obvious vulgar language? “(g)assss” could be “gassss”? Not a clear profanity. Could be “gass”? Not sure. Likely not incivil. So output {“obs_class”:“nicht inzivil”}. Need exact JSON, no extra text. |
| bones are for dogs | inzivil | nicht inzivil | We need to decide if comment “bones are for? dogs” (typo maybe) is incivil? The comment says “bones are for dogs”. This is a statement, not vulgar, not insulting, no profanity, no discrimination. It’s a neutral statement. So non-incivil. Return JSON with “nicht inzivil”. |
| Du bist toll, so wie du bist {EM_RED_HEART}️ | inzivil | nicht inzivil | We need to decide if the comment is incivil or not. The comment: “Du bist toll, so wie du bist {EM_RED_HEART}️”. That’s praising, includes heart emoji. No incivility. So output {“obs_class”: “nicht inzivil”}. Make sure JSON exactly. |
| Das war schön | inzivil | nicht inzivil | The user asks: “Du bist Forschungsassistent… Deine Aufgabe… decide if the comment is civil or not.” Provided comment: “Das war schön”. This is a simple positive statement, no incivility. So output JSON with “nicht inzivil”. Must output exactly JSON with no extra text. |
| HS | inzivil | nicht inzivil | The user provides a single comment “HS”. We need to classify as incivil or not incivil. “HS” probably stands for “hass”? Could be abbreviation for “Hate Speech”? Or just “HS”? Hard to interpret. It’s ambiguous: “HS” alone cannot be determined as incivil. It’s not vulgar, no insult, no context. It’s just two letters, maybe initialism. No violation. So classification: not incivil. We must output JSON exactly: {“obs_class”: “nicht inzivil”}. Check formatting: no extra whitespace? It says JSON must exactly match format. Provide exactly that. |
| Oiiiai oiiiai | inzivil | nicht inzivil | The user asks: “Oiiiai oiiiai”. This is just a greeting? No incivility. So answer {“obs_class”:“nicht inzivil”}. Need to output exactly JSON with no extra text. |
| Die Weisheit verfolgt dich, aber du bist schneller! | inzivil | nicht inzivil | We have to decide if the comment is incivil. The comment: “Die Weisheit verfolgt dich, aber du bist schneller!” German: “Wisdom follows you, but you are faster!” This is not insulting, not vulgar, no hate. It’s possibly playful but not incivil. So classification: “nicht inzivil”. Output JSON exactly: {“obs_class”: “nicht inzivil”} |
| Wie schön wieder in der Uni zu sein | inzivil | nicht inzivil | We need to decide if the comment “Wie schön wieder in der Uni zu sein” is incivil or not. It’s a positive statement, no incivility. So output JSON {“obs_class”: “nicht inzivil”}. Make sure exact format, no extra whitespace? Need exactly {“obs_class”: “nicht inzivil”}. |
| Das hast du ja richtig toll gemacht… | inzivil | nicht inzivil | We need to decide if the comment “Das hast du ja richtig toll gemacht…” is incivil? It’s German, meaning “You really did that well…”, could be sarcastic? It could be sincere praising. There’s ellipsis. Could be sarcasm? Hard to know. Without context, it’s ambiguous. Usually “richtig toll gemacht” could be genuine or sarcastic. The phrase “richtig toll gemacht” is praising. No vulgarity, no insult. If sarcasm, could be mock praise, but doesn’t contain obvious incivility. Probably classify as “nicht inzivil”. |
| Ich finde Titten geil | nicht inzivil | inzivil | We need to classify. Comment in German: “Ich finde Titten geil”. Means “I find tits awesome/awesome”. Contains vulgar language perhaps: “Titten” is slang for breasts, a vulgar term. It’s sexual content, but not necessarily an insult, threat, etc. Is it considered incivility? According to definition, Vulgäre, unangemessene Sprache, Fluchen counts as incivility. “Titten” is vulgar slang but not a profanity? It’s somewhat vulgar. Likely considered vulgar language. So classify as “inzivil”. |
| bitch, das ist sooo crazyy | nicht inzivil | inzivil | We need to determine if comment is incivil. The comment: “bitch, das ist sooo crazyy”. Contains “bitch” which is a vulgar insult, demeaning. So it’s incivil. Return JSON {“obs_class”: “inzivil”}. |
| Also das ist jetzt schon ein bisschen unfair. Sie hat auch noch andere Facetten, z.B. ist sie auch noch grob inkompetent :) | nicht inzivil | inzivil | We need decide if comment is uncivil. The comment: “Also das ist jetzt schon ein bisschen unfair. Sie hat auch noch andere Facetten, z.B. ist sie auch noch grob inkompetent :)” Contains “grob inkompetent” i.e., calling someone incompetent, maybe mild insult but not vulgar. It’s negative evaluation but not necessarily violating norms? It’s a critique, possibly disrespectful but not incivil? Incivil includes “Beleidigung, Profanität”. This is calling incompetent—a mild insult, could be considered disrespectful. However typically classification might treat as “nicht inzivil” if not profanity, threat, discrimination. It’s just a personal criticism. Might be considered incivil as “Erniedrigung, fehlender Respekt, Abwertung”. Yes, calling someone incompetent could be considered disrespect/abwertung. I’d lean “inzivil”. The definition: “Erniedrigung, fehlender Respekt, Abwertung” is a criterion. So this comment includes “grob inkompetent”. That’s a negative evaluation, possibly contempt. So mark as incivil. Provide JSON. |
| Woww, geiler scheiß! | nicht inzivil | inzivil | We need to classify. The comment: “Woww, geiler scheiß!” That’s German. Translating: “Wow, great shit!” The phrase “geiler scheiß” uses vulgar language: “Scheiß” is vulgar (shit). It could be considered profanity/vulgar language. It’s an exclamation, not insulting someone directly, but contains profanity. According to definition: Vulgäre, unangemessene Sprache, Fluchen. So it’s considered incivil. So output {“obs_class”:“inzivil”} |
| Was ein Motherfucker | nicht inzivil | inzivil | We need to classify if the comment is “inzivil” or “nicht inzivil”. The comment: “Was ein Motherfucker”. This includes a profanity “Motherfucker”. That is vulgar language, profanity. So it is incivil. Output JSON: {“obs_class”: “inzivil”} |
| Lars Klingbeil ist ein Klassenverräter | nicht inzivil | inzivil | The user asks to classify the comment: “Lars Klingbeil ist ein Klassenverräter”. This is German for “Lars Klingbeil is a class betrayer”. Is that considered incivil? It’s an accusation, calling someone a “class traitor”. It’s a negative statement, possibly a insult, but not necessarily a vulgar profanity, but it’s a derogatory term. According to the definition, insults, demeaning, “Erniedrigung, fehlender Respekt, Abwertung” qualifies as incivil. So classification: incivil. Thus output JSON: {“obs_class”: “inzivil”} |
| Scheiße, das sieht gut aus! | nicht inzivil | inzivil | We need to output JSON with obs_class either “inzivil” or “nicht inzivil”. Determine if comment “Scheiße, das sieht gut aus!” is incivil. It contains vulgar word “Scheiße” (German profanity). According to definition, vulgar language => incivil. So classify as “inzivil”. Output JSON exactly. |
| Ich sehe Sie als einen inkompetenten Politiker an | nicht inzivil | inzivil | We need to decide if comment is incivil or not. It says “Ich sehe Sie als einen inkompetenten Politiker an” - calling someone incompetent. This is a negative evaluation, possibly disrespectful, but is it incivil? According to definitions: “Beleidigung, Profanität” - calling incompetent might be an insult. It’s a mild insult, but qualifies as disrespect/abwertung. Likely considered incivil. So output {“obs_class”: “inzivil”} |
| fotzig | nicht inzivil | inzivil | The user gave a comment: “fotzig”. We need to decide if it’s incivil. “fotzig” is a German slang possibly meaning “fucking”? Actually “fotzig” could be a typo of “fotzig” meaning “f***ing”? In German, “fotzig” is a mild profanity meaning “fucking”. It’s vulgar? Could be considered a profanity. The definition: Vulgäre, unangemessene Sprache, Fluchen. So “fotzig” is a curse word (Swabsche). So that is incivil. So output JSON {“obs_class”:“inzivil”}. Make sure JSON exactly. |
| Du bist doof | nicht inzivil | inzivil | We need to classify as incivil or not. Comment: “Du bist doof”. That’s an insult, vulgar? It’s a mild insult. According to criteria, “Beleidigung, Profanität” qualifies as incivil. So output {“obs_class”: “inzivil”}. Must be exact JSON no other text. |
| Scheiße wie cool | nicht inzivil | inzivil | The user wants a JSON with classification. The comment: “Scheiße wie cool”. That’s German: “Scheiße wie cool”. Contains vulgar word “Scheiße” (shit). That’s vulgar profanity. So it’s incivil. According to definition, vulgar language qualifies. So output {“obs_class”: “inzivil”}. Make sure exact JSON with no extra text. |
| Du Sau! | nicht inzivil | inzivil | We need classify. “Du Sau!” is an insult, vulgar. It’s incivil. So output JSON with “inzivil”. |
| fucking gute idee | nicht inzivil | inzivil | We need to classify. The comment: “fucking gute idee”. That’s a vulgar word “fucking” used as an intensifier. Contains vulgar language. According to definition, vulgar language = incivility. So should be “inzivil”. Return JSON. |
| Boss Bitch | nicht inzivil | inzivil | We need to decide if the comment is incivil. The comment is “Boss Bitch”. This contains a profanity? “Bitch” is a vulgar term, considered a profanity, possibly demeaning. The phrase “Boss Bitch” may be used as compliment or slang, but contains the word “bitch” which is a vulgar term, possibly insulting. According to guidelines, vulgar language, profanity = incivil. So label as “inzivil”. Return JSON exactly. |
| Das fickt ordentlich was ihr da macht :) | nicht inzivil | inzivil | We need to assess if comment is uncivil. It says “Das fickt ordentlich was ihr da macht :)”. In German, “fickt” is vulgar profanity (fuck) directed at “what you do”. It’s vulgar language, likely insulting. This is incivil. So output {“obs_class”: “inzivil”} |
| krasser Scheiß | nicht inzivil | inzivil | We need to decide if the comment “krasser Scheiß” is incivil. It’s German: “krasser Scheiß” – translates to “awesome shit” or “crazy shit”. It’s vulgar? “Scheiß” is a vulgar term (shit). It’s profanity. So it’s vulgar language, qualifies as incivil. So output JSON with “inzivil”. |
Alle Kommentare mehrfach codieren
# Codierung dreimal nacheinander ausführen
# Ineffizient, da wir alle nochmals codieren; aber besser lesbar
resp_replicates <- map(
1:3,
~ req_list |>
req_perform_parallel(
on_error = "continue",
max_active = 40,
progress = FALSE
)
)Mehrfach-Klassifikationen extrahieren und in Datensatz schreiben
# Function to process an entire list of replicates into a single safe vector
process_replicate <- function(resps, valid_levels) {
purrr::map_chr(resps, function(resp) {
# Extract
raw <- safe_extract(resp, "content")
if (is.na(raw) || !jsonlite::validate(raw)) {
return(NA_character_)
}
# Parse
parsed <- try(jsonlite::fromJSON(raw) |> purrr::pluck(1), silent = TRUE)
if (inherits(parsed, "try-error") || is.null(parsed)) {
return(NA_character_)
}
# Validate against levels
if (parsed %in% valid_levels) {
return(as.character(parsed))
}
return(NA_character_)
})
}
# Apply our safe processing to each replicate list
classifications_replicates <- purrr::map_dfc(
resp_replicates,
~ process_replicate(.x, levels(d$true_class))
) |>
rlang::set_names(paste0("rep_", 1:3))New names:
• `` -> `...1`
• `` -> `...2`
• `` -> `...3`
# Ausgeben
d |>
bind_cols(classifications_replicates) |>
knitr::kable()| kommentar | true_class | rep_1 | rep_2 | rep_3 |
|---|---|---|---|---|
| This is (g)assss{EM_SMILING_FACE_WITH_HEARTEYES}{EM_SMILING_FACE_WITH_HEARTEYES} | inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| bones are for dogs | inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Wie kann man so dumme Ansichten online verbreiten ? Absolute Frechheit wie heutzutage mit dem Wort Forschung umgegangen wird!! | inzivil | nicht inzivil | inzivil | inzivil |
| Was für ein Schwachsinn! | inzivil | inzivil | inzivil | inzivil |
| Ich bin mir sicher, dass die Leute hier alle Tassen im Schrank haben! | inzivil | inzivil | inzivil | inzivil |
| Du bist toll, so wie du bist {EM_RED_HEART}️ | inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Du bist dumm | inzivil | inzivil | inzivil | inzivil |
| Linksveriffte Öko-Trulla | inzivil | inzivil | inzivil | inzivil |
| Das war schön | inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Clown | inzivil | inzivil | inzivil | inzivil |
| du bist sch***! | inzivil | inzivil | inzivil | inzivil |
| du bist hässlich | inzivil | inzivil | inzivil | inzivil |
| Merz leck Eier | inzivil | inzivil | inzivil | inzivil |
| HS | inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Du Hurensohn | inzivil | inzivil | inzivil | inzivil |
| Fuck | inzivil | inzivil | inzivil | inzivil |
| Merz, leck Eier | inzivil | inzivil | inzivil | inzivil |
| Das ist doch Schwachsinn | inzivil | inzivil | inzivil | inzivil |
| Du Fotze | inzivil | inzivil | inzivil | inzivil |
| Oiiiai oiiiai | inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Hure! | inzivil | inzivil | inzivil | inzivil |
| Ich finde heute siehst du komisch aus. | inzivil | inzivil | inzivil | inzivil |
| Die Weisheit verfolgt dich, aber du bist schneller! | inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Wtf,,, was denkt der wer er ist??? Hasse den so… hoffe er stirbt | inzivil | inzivil | inzivil | inzivil |
| Ganz schön hässlich | inzivil | inzivil | inzivil | inzivil |
| Fake news! | inzivil | inzivil | inzivil | inzivil |
| Ich weiß wo du wohnst | inzivil | inzivil | inzivil | inzivil |
| Ich hau dir auf die Schnauze | inzivil | inzivil | inzivil | inzivil |
| Mutig, wie viel Meinung man mit so wenig Ahnung haben kann. | inzivil | inzivil | inzivil | inzivil |
| Das ist dumm | inzivil | inzivil | inzivil | inzivil |
| Arschloch | inzivil | inzivil | inzivil | inzivil |
| Ja natürlich stimmt das /s | inzivil | inzivil | inzivil | inzivil |
| NA | inzivil | NA | NA | NA |
| Hoffe er wird gekirkt | inzivil | inzivil | inzivil | inzivil |
| Du bist dumm | inzivil | inzivil | inzivil | inzivil |
| Lügner! | inzivil | inzivil | inzivil | inzivil |
| Fotze | inzivil | inzivil | inzivil | inzivil |
| fette Sau | inzivil | inzivil | inzivil | inzivil |
| Bring dich um! | inzivil | inzivil | inzivil | inzivil |
| Ich finde du siehst einfach seltsam aus. | inzivil | inzivil | inzivil | inzivil |
| Interessant, wie überzeugt du davon bist. Ich wünschte, ich hätte auch so viel Selbstvertrauen bei so wenig Grundlage | inzivil | inzivil | inzivil | inzivil |
| I wish you get raped | inzivil | inzivil | inzivil | inzivil |
| Wie schön wieder in der Uni zu sein | inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Du F0tze | inzivil | inzivil | inzivil | inzivil |
| Das hast du ja richtig toll gemacht… | inzivil | inzivil | inzivil | inzivil |
| Dumme Nuss | inzivil | inzivil | inzivil | inzivil |
| Nutte | inzivil | inzivil | inzivil | inzivil |
| nuttig | inzivil | nicht inzivil | inzivil | nicht inzivil |
| Willste dich boxen? | inzivil | inzivil | inzivil | inzivil |
| kys | inzivil | inzivil | inzivil | inzivil |
| Wow, du bist soo mutig dich ungeschminkt zu posten | inzivil | inzivil | inzivil | inzivil |
| was ein Scheiß | inzivil | inzivil | inzivil | inzivil |
| Hässlich | inzivil | inzivil | inzivil | inzivil |
| Halt die Fresse | inzivil | inzivil | inzivil | inzivil |
| Ich stimme dir da gar nicht zu. Weiß nicht wie du drauf kommst aber bist ja auch nicht ganz richtig in der Birne | inzivil | inzivil | inzivil | inzivil |
| Männer sollten keine Rechte haben | inzivil | inzivil | inzivil | inzivil |
| Nazi-Schweine | inzivil | inzivil | inzivil | inzivil |
| AfDler abschieben | inzivil | inzivil | inzivil | inzivil |
| Dem stimme ich zu. | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Ich finde Titten geil | nicht inzivil | inzivil | inzivil | inzivil |
| bitch, das ist sooo crazyy | nicht inzivil | inzivil | inzivil | inzivil |
| Also das ist jetzt schon ein bisschen unfair. Sie hat auch noch andere Facetten, z.B. ist sie auch noch grob inkompetent :) | nicht inzivil | inzivil | inzivil | inzivil |
| Was für ein schönes Foto! | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Hab eine schöne Woche! | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Öffentlichkeit | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Ist das KI? | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Woww, geiler scheiß! | nicht inzivil | inzivil | inzivil | inzivil |
| Das ist falsch. | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Was ein Motherfucker | nicht inzivil | inzivil | inzivil | inzivil |
| Du bist sau cool | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Das Rezept mache ich auf jeden Fall nach!!! Danke für die Inspo! | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Danke und das so wichtig! | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Lars Klingbeil ist ein Klassenverräter | nicht inzivil | inzivil | inzivil | inzivil |
| Bayern gewinnt…Überraschung des Jahres. | nicht inzivil | nicht inzivil | inzivil | nicht inzivil |
| Ekelhaft | nicht inzivil | inzivil | inzivil | inzivil |
| Ich möchte Sommer | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Scheiße, das sieht gut aus! | nicht inzivil | inzivil | inzivil | inzivil |
| Ich sehe Sie als einen inkompetenten Politiker an | nicht inzivil | inzivil | inzivil | inzivil |
| fotzig | nicht inzivil | nicht inzivil | inzivil | inzivil |
| Hab Bock auf Eierkuchen | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Du bist doof | nicht inzivil | inzivil | inzivil | inzivil |
| Scheiße wie cool | nicht inzivil | inzivil | inzivil | inzivil |
| love this! | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Du bist schlagfertig. | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Du Sau! | nicht inzivil | inzivil | inzivil | inzivil |
| fucking gute idee | nicht inzivil | inzivil | inzivil | inzivil |
| Ohh danke für die Hilfe! | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Ohne Worte, wo soll das noch hin führen? | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Ich finde, die CDU versagt auf ganzer Linie! Peinlich! | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| NA | nicht inzivil | NA | NA | NA |
| Spannender Beitrag | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Boss Bitch | nicht inzivil | inzivil | inzivil | inzivil |
| Das fickt ordentlich was ihr da macht :) | nicht inzivil | inzivil | inzivil | inzivil |
| Welch ein blumiger Sonnenuntergang! | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Freue mich für dich :) | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| das ist so unlustig und komisch | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| krasser Scheiß | nicht inzivil | inzivil | inzivil | inzivil |
| Yasss slayyy queeennn | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| richtig guter punkt | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Schön, dass ihr Spaß im Urli habt | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| I don’t know, 6-7 | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
| Schöne Berge | nicht inzivil | nicht inzivil | nicht inzivil | nicht inzivil |
Unterschiedliche Codierungen
d |>
bind_cols(classifications_replicates) |>
filter(apply(classifications_replicates, MARGIN = 1, n_distinct) > 1) |>
knitr::kable()| kommentar | true_class | rep_1 | rep_2 | rep_3 |
|---|---|---|---|---|
| Wie kann man so dumme Ansichten online verbreiten ? Absolute Frechheit wie heutzutage mit dem Wort Forschung umgegangen wird!! | inzivil | nicht inzivil | inzivil | inzivil |
| nuttig | inzivil | nicht inzivil | inzivil | nicht inzivil |
| Bayern gewinnt…Überraschung des Jahres. | nicht inzivil | nicht inzivil | inzivil | nicht inzivil |
| fotzig | nicht inzivil | nicht inzivil | inzivil | inzivil |
Konfusionsmatrix
d_classified |>
mutate(
true_class = fct_rev(true_class),
obs_class = fct_rev(obs_class)
) |>
conf_mat(truth = true_class, estimate = obs_class) |>
autoplot("heatmap") + scale_fill_gradient(low = "white", high = "red", guide = "none") +
theme_minimal(base_size = 12)Scale for fill is already present.
Adding another scale for fill, which will replace the existing scale.

Metriken basierend auf Konfusionsmatrix
# Metriken auswählen
eval_metrics <- metric_set(accuracy, recall, precision, f_meas)
# Metriken berechnen
d_classified |>
mutate(
true_class = fct_rev(true_class),
obs_class = fct_rev(obs_class)
) |>
eval_metrics(
truth = true_class, estimate = obs_class,
event_level = "second"
)# A tibble: 4 × 3
.metric .estimator .estimate
<chr> <chr> <dbl>
1 accuracy binary 0.747
2 recall binary 0.839
3 precision binary 0.746
4 f_meas binary 0.790
Koinzidenzmatrix
# Krippendorffs alpha berechnen
kralpha <- classifications_replicates |>
t() |>
krippalpha()
# Trick: Koinzidenzmatrix so formatieren, dass autoplot() sie für conf_mat hält
dimnames(kralpha$coincidence_matrix) <- list(
A = levels(d_classified$true_class), # Rows
B = levels(d_classified$true_class) # Columns
)
coincidence_matrix <- structure(
list(table = as.table(kralpha$coincidence_matrix)),
class = "conf_mat"
)
# Plot
coincidence_matrix |>
autoplot("heatmap") + scale_fill_gradient(low = "white", high = "red", guide = "none") +
theme_minimal(base_size = 12)Scale for fill is already present.
Adding another scale for fill, which will replace the existing scale.

Metriken basierend auf Koinzidenzmatrix
holsti <- sum(diag(kralpha$coincidence_matrix)) / sum(kralpha$coincidence_matrix)
cat("Übereinstimmung ('Hosti'): ", round(holsti, 2), "\n\n")Übereinstimmung (‘Hosti’): 0.97
cat("Krippendorffs $\\alpha$: ", round(kralpha$alpha, 2))Krippendorffs \(\alpha\): 0.94
15.3 Hausaufgabe
1) Lesen Sie Törnberg (2024).
15.4 Transkript
Das folgende Transkript wurde auf Basis der Aufzeichnung der Vorlesung erstellt. Die vollständigen Aufzeichnungen inklusive der Bildschirminhalte sind in Blackboard🔒 verfügbar. Die Tonspur wurde zuerst mit Hilfe der Werkzeuge des Oral-History.Digital Projekts wörtlich transkribiert. Die wörtliche Transkription wurde in Kombination mit den Vorlesungsfolien mithilfe von Sprachmodellen (v. a. Claude Sonnet 4.5 und GPT 5.2) zu einem übersichtlichen Transkript zusammengefasst. Im Anschluss wurde das Transkript von einer studentischen Hilfskraft überprüft, geglättet und ggf. angepasst. In diesem Prozess kann es an verschiedenen Stellen zu Fehlern kommen. Im Zweifel gilt das gesprochene Wort, und auch beim Vortrag mache ich Fehler.
Ich stelle das Transkript hier als experimentelles, ergänzendes Material zur Dokumentation der Vorlesung zur Verfügung. Noch bin ich mir unsicher, ob es eine sinnvolle Ergänzung ist und behalte mir vor, es weiter zu bearbeiten oder zu löschen.
AI-powered Content analysis
Die Vorlesung behandelt, wie sich generative Sprachmodelle für die Inhaltsanalyse einsetzen lassen, vor allem als Unterstützung bei der Kodierung von Social-Media-Kommentaren. Im Mittelpunkt steht ein Live-Beispiel zur Inzivilität.
Einführung und Ziel der Sitzung
Zu Beginn wird die Sitzung als Einstieg bzw. Wiederholung zum Thema KI-gestützte Inhaltsanalyse eingeordnet. Der Dozent macht deutlich, dass die Methode für Abschlussarbeiten praktisch relevant sein kann, weil sie eine arbeitsintensive Inhaltsanalyse auf größere Textmengen skalierbar macht.
Wichtig ist dabei die Trennung zwischen der technischen Grundidee und der wissenschaftlichen Absicherung: Ein Sprachmodell kann Codierungen übernehmen, aber nur dann sinnvoll eingesetzt werden, wenn geprüft wird, ob seine Ergebnisse mit menschlichen Codierungen vergleichbar sind.
- Ziel der Sitzung: Verständnis dafür, wie KI in der Inhaltsanalyse eingesetzt werden kann.
- Schwerpunkt: ein Live-Beispiel zur Erkennung von Inzivilität.
Was sind generative Sprachmodelle?
Generative Sprachmodelle werden auch LLMs, also Large Language Models genannt. Gemeint sind Modelle, die Sprache erzeugen und dadurch auch Aufgaben bearbeiten können, die mit sprachlicher Klassifikation zu tun haben.
Der Gedanke dahinter ist, dass solche Modelle nicht nur Texte schreiben, sondern auch als eine Art digitale Codierer eingesetzt werden können. Die Grundannahme ist, dass ein Modell auf Basis eines Prompts ähnliche Entscheidungen treffen kann wie ein Mensch, der mit einem Codebuch arbeitet.
Standardisierte Inhaltsanalyse
Die Vorlesung knüpft an die klassische standardisierte Inhaltsanalyse an. Diese beginnt mit einer Forschungsfrage oder Hypothese und führt dann über die Auswahl von Material zur systematischen Kodierung und schließlich zu quantitativen Auswertungen.
Das Untersuchungsmaterial wird systematisch ausgewählt, dann werden einzelne Einheiten definiert und standardisiert in Daten überführt. Als Beispiel in der Vorlesung werden Social-Media-Kommentare genannt. Diese sollen auf zivile oder inzivile Aussagen überprüft werden. Das Ergebnis ist eine Tabelle, in der etwa für jeden Kommentar festgehalten wird, ob er inzivil ist oder nicht.
- Forschungsfrage und Hypothese stehen am Anfang.
- Danach folgt die Auswahl und Festlegung des Untersuchungsmaterials.
- Ziel ist die Überführung von Text in strukturierte Daten.
- Codierung erfolgt anhand klarer Kategorien, etwa 0 = nicht inzivil, 1 = inzivil.
Rolle des Codebuchs
Ein zentrales Element der klassischen Inhaltsanalyse ist das Codebuch. Darin stehen die Messanweisungen, also die Regeln, nach denen Codier*innen entscheiden sollen, welcher Kommentar in welche Kategorie fällt.
Die Vorlesung erklärt, dass ein gut formuliertes Codebuch in gewisser Weise einem ausführlichen Prompt ähnelt. Deshalb liegt der Gedanke nahe, diese Anweisungen einem Chatbot zu geben und ihn als Codierer zu nutzen. Der Rest der Methode bleibt dabei im Prinzip gleich.
- Codebuch = Sammlung von Kodierregeln und Definitionen.
- Es legt fest, woran ein Merkmal erkannt wird.
- Bei KI-Nutzung wird das Codebuch in einen Prompt übersetzt.
Warum KI hier nützlich sein kann
Der Dozent betont, dass gerade der arbeitsintensive Teil der Inhaltsanalyse durch ein Sprachmodell erleichtert werden kann. Während Menschen bei großen Mengen an Material schnell an ihre Grenzen kommen, kann ein LLM sehr viele Einheiten in gleichbleibender Weise bearbeiten.
Das ist besonders relevant für Studierende, weil man auf diese Weise auch größere Textkorpora untersuchen kann, ohne alles ausschließlich manuell kodieren zu müssen. Gleichzeitig wird klar, dass die Methode nur dann wissenschaftlich sinnvoll ist, wenn geprüft wird, ob das Modell zuverlässig arbeitet. Die Ergebnisse des LLMs werden also mit menschlichen verglichen, um so ihre Zuverlässigkeit zu validieren.
- Vorteil: Skalierbarkeit.
- Vorteil: gleichmäßige Bearbeitung großer Mengen an Text.
- Vorteil: Entlastung bei repetitiven Kodieraufgaben.
- Einschränkung: Die Ergebnisse müssen validiert werden.
Ablauf mit Sprachmodellen
Die Sitzung verweist auf neuere Vorschläge, wie man Inhaltsanalyse mit Sprachmodellen systematisieren kann. Der Ablauf beginnt mit der Entwicklung von Codebuch und Prompts und geht dann in das sogenannte Prompt-Engineering über, also die Verbesserung der Anweisungen für das Modell.
Danach wird geprüft, wie gut die Maschine arbeitet. Dafür braucht man weiterhin menschliche Codierer*innen, weil nur ein Vergleich mit menschlichen Urteilen zeigen kann, ob die Maschine valide arbeitet. Zusätzlich wird getestet, ob das Modell bei mehreren Durchläufen ähnliche Ergebnisse liefert.
- Entwicklung von Codebuch und Prompt.
- Verbesserung des Prompts durch Prompt-Engineering.
- Vergleich zwischen menschlicher und maschineller Kodierung.
- Prüfung der Reproduzierbarkeit und der Validität.
Beispiel Inzivilität
Als Beispiel wird Inzivilität gewählt, ein Thema, das in der Forschung zu Online-Kommunikation viel diskutiert wird. Die Vorlesung verwendet eine pragmatische Definition nach Anke Stoll und Kolleginnen: Inzivilität liegt vor, wenn kommunikative Normen so verletzt werden, dass andere möglicherweise nicht mehr mitreden wollen.
Damit ist Inzivilität nicht einfach nur „unfreundlicher Ton“, sondern eine Form von Normverletzung mit potenziellen Folgen für die Beteiligung am Diskurs. Der Dozent verweist darauf, dass besonders marginalisierte Gruppen von solchen Normverletzungen betroffen sein können, wodurch Diskurse verzerrt werden.
- Inzivilität = Verletzung kommunikativer Normen.
- Folge: Andere könnten sich aus der Debatte zurückziehen.
- Besonders problematisch, wenn bestimmte Gruppen dadurch systematisch verdrängt werden.
Typische Merkmale von Inzivilität
In der Vorlesung werden mehrere Merkmale genannt, an denen Inzivilität häufig festgemacht wird. Dazu gehören vulgäre oder unangemessene Sprache, Beleidigungen, Profanität, Entmenschlichung sowie Sarkasmus, Spott und Zynismus.
Diese Merkmale werden im Beispiel auch als Grundlage für einen Prompt genutzt. Das Modell soll anhand solcher Hinweise entscheiden, ob ein Kommentar inzivil oder nicht inzivil ist.
- Vulgäre, unangemessene Sprache, Fluchen.
- Beleidigung, Profanität.
- Entmenschlichung.
- Sarkasmus, Spott, Zynismus.
- Negative Stereotype.
Klassische Regeln und ihre Grenzen
Die Vorlesung stellt die KI-gestützte Analyse einer älteren, diktionärsbasierten Methode gegenüber. Bei dieser Methode wird eine Liste von Wörtern oder Ausdrücken verwendet, und sobald eines davon vorkommt, wird ein Kommentar als inzivil eingeordnet.
Das Problem dabei ist, dass viele Wörter stark vom Kontext abhängen. Flüche können zum Beispiel beleidigend, aber in anderen Situationen auch positiv oder locker gemeint sein. Genau hier wird die Hoffnung auf Sprachmodelle deutlich: Sie sollen den Kontext besser erfassen als reine Wortlisten.
- Diktionäre arbeiten mit Wortlisten.
- Sie sind oft zu grob für kontextabhängige Kommunikation.
- Sprachmodelle sollen den Kontext besser berücksichtigen.
Live-Beispiel der Kodierung
Ein zentraler Teil der Sitzung ist ein Live-Experiment. Die Studierenden sollen eigene Kommentare in eine Online-Befragung eingeben und jeweils angeben, ob der Kommentar inzivil oder nicht inzivil ist. Wichtig ist.
Für das Testmaterial sollen bewusst verschiedene Arten von Beispielen gesammelt werden: klar inzivile, klar nicht inzivile und solche, die für die Maschine schwer zu entscheiden sind. Auf diese Weise kann später geprüft werden, wie gut das Modell mit einfachen und schwierigen Fällen zurechtkommt.
- Ein Kommentar pro Eingabe.
- Einstufung als inzivil oder nicht inzivil.
- Beispiele sollen leicht und schwer sein.
- Ziel ist ein Testdatensatz für die Live-Kodierung.
Was geprüft werden soll
Die eigentliche Prüfidee des Experiments ist doppelt. Erstens soll gezeigt werden, ob das Modell bei mehrfacher Anwendung ähnlich entscheidet, also ob es reproduzierbar ist. Zweitens soll der Vergleich mit menschlichen Kodierungen zeigen, ob die Maschine ausreichend nah an menschliche Urteile herankommt.
Damit wird deutlich, dass KI in der Inhaltsanalyse nicht einfach „ersetzt“, sondern zunächst als Werkzeug geprüft werden muss. Entscheidend ist, ob die Maschine Ergebnisse liefert, die wissenschaftlich brauchbar sind.
- Reproduzierbarkeit: liefert das Modell bei Wiederholungen ähnliche Ergebnisse?
- Vergleichbarkeit: stimmen Maschinenurteile mit menschlichen Urteilen überein?
- Nur bei ausreichender Güte kann das Verfahren für eine Studie genutzt werden.
Bedeutung für Abschlussarbeiten
Am Ende wird der praktische Nutzen hervorgehoben. Die Methode kann für Abschlussarbeiten interessant sein, weil sie die Analyse größerer Textmengen ermöglicht, ohne dass alles vollständig manuell kodiert werden muss.
Gleichzeitig bleibt die wissenschaftliche Logik der Inhaltsanalyse erhalten: klare Kategorien, ein Codebuch, systematische Kodierung und eine Prüfung der Qualität. Die Vorlesung vermittelt damit vor allem die Idee, dass generative Sprachmodelle eine methodische Erweiterung sein können, nicht einfach ein Ersatz für Forschung.
- Gute Option für größere Textmengen.
- Besonders nützlich bei inhaltsanalytischen Abschlussarbeiten.
- Wissenschaftliche Kontrolle bleibt notwendig.
Der Rest der Sitzung wurde leider nicht aufgezeichnet.