improve comment parsing and add comment commentator redner matching

This commit is contained in:
2021-07-01 11:05:50 +02:00
parent ab55363c4e
commit f09cbac172
2 changed files with 56 additions and 10 deletions
+14 -6
View File
@@ -28,9 +28,14 @@ read_all <- function(path="records/") {
distinct() ->
talks
lapply(res, `[[`, "comments") %>%
bind_rows() %>%
distinct() ->
comments
if (length(available_protocols) == 0)
warning("The given directory is empty or does not exist.")
list(redner = redner, reden = reden, talks = talks)
list(redner = redner, reden = reden, talks = talks, comments = comments)
}
# this reads all currently parseable data from one xml
@@ -99,7 +104,8 @@ parse_rede <- function(rede_xml) {
content = cur_content)
reden <- c(reden, list(rede))
cur_content <- ""
} else {
}
if (is.na(principal_redner) && xml_name(node) != "name") {
principal_redner <- xml_child(node) %>% xml_attr("id")
}
if (xml_name(node) == "name") {
@@ -144,9 +150,10 @@ parse_comment <- function(comment, rede_id, on_redner) {
# - actually separate content properly
# - differentiate between [AfD] and AfD in by
if(str_detect(comment, "Beifall")) {
c(base, type = "applause", by = by, content = comment)
c(base, type = "applause", fraktion = by, kommentator = NA_character_, content = comment)
} else {
c(base, type = "comment", by = by, content = comment)
ps <- str_match(comment, "(.*) \\[(.*?)\\]: (.*)")[1,]
c(base, type = "comment", fraktion = ps[3], kommentator = ps[2], content = ps[4])
}
}
@@ -163,7 +170,8 @@ parse_redenliste <- function(redenliste_xml) {
comments = tibble(rede_id = comments["rede_id",],
on_redner = comments["on_redner",],
type = comments["type",],
by = comments["by",],
fraktion = comments["fraktion",],
kommentator = comments["kommentator",],
content = comments["content", ]))
}
@@ -183,7 +191,7 @@ parse_rednerliste <- function(rednerliste_xml) {
# EXAMPLE USE
# make sure data ist downloaded via fetch.R
res <- read_one("records/19126-data.xml")
# res <- read_one("records/19126-data.xml")
#
# res$redner
# res$reden