Skript zur Gruppenaufteilung

03.05.2019 - Valentin Gold - Reading time ~15 Minutes


Der Versuch einer automatischen Gruppenaufteilung

Dies ist ein Versuch, die Gruppenaufteilung automatisch vorzunehmen, bzw. zumindest die Aufteilung zu unterstützen. Mal sehen, ob es mit Ihren Themen genauso “gut” funktioniert wie mit meinem fiktiven Beispieldatensatz.

Import der Datei

Copy und Paste der Datei aus StudIPad, speichern als .csv und Import in RStudio. Daher war es so wichtig, dass Sie ein bestimmtes Schema einhalten.

#import
library(tidyverse)
## Registered S3 method overwritten by 'rvest':
##   method            from
##   read_xml.response xml2
## ── Attaching packages ─────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.2.0     ✔ purrr   0.3.2
## ✔ tibble  2.1.3     ✔ dplyr   0.8.3
## ✔ tidyr   0.8.3     ✔ stringr 1.4.0
## ✔ readr   1.3.1     ✔ forcats 0.4.0
## ── Conflicts ────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
#expl <- read_delim("example.csv", 
expl <- read_delim("../../../gruppen/aufteilung/forschungsfragen.csv", 
                   delim = ";", 
                   col_names = TRUE, 
                   trim_ws = TRUE, 
                   locale = locale(encoding = "UTF-8"))
## Parsed with column specification:
## cols(
##   id = col_double(),
##   name = col_character(),
##   rq = col_character(),
##   data = col_character(),
##   method = col_character()
## )

Aufteilung nach denselben angegebenen Datensätzen

library(knitr)
expl %>% 
  group_by(data) %>% 
  select(id, data) %>% 
  arrange(data, id) %>% 
  DT::datatable(.)

Aufteilung nach denselben angegebenen Methoden

expl %>% 
  group_by(method) %>% 
  select(id, method) %>% 
  arrange(method, id) %>% 
  DT::datatable(.)

Aufteilung nach Ähnlichkeit der Themen

Die Idee hierbei ist, die Ähnlichkeit der angegeben Forschungsfragen zueinander zu bestimmen. 2 komplett identische Forschungsfragen haben einen Ähnlichkeitswert von 1; wenn 2 Forschungsfragen nicht über zumindest ein gleiches Wort verfügen, ist die Ähnlichkeit gleich 0 (zumindest mit dem hier benutzten Ähnlichkeitsmaß). Ich habe das Verfahren noch ein bisschen verfeinert und berücksichtige nur Nomen für die Berechnung der Ähnlichkeit – unter der Annahme, dass Nomen die Forschungsfrage bestimmen und nicht andere Satzbestandteile.

0a. (nachträglich hinzugefügt) Eine Forschungsfrage ist in Englisch \(\rightarrow\) Übersetzen!

expl <- expl %>%
  mutate(rq = case_when(
    id == 28 ~ "Messung der Persönlichkeit von Politikern und Politikerinnen auf Basis der Reden.", 
    TRUE ~ rq
  ))

0b. (nachträglich hinzugefügt) Datensatz und Methode als Feature

Falls Datensatz und Methode angegeben wurde, kann der Begriff der Forschungsfrage hinzufügt werden. Damit steht später dieser Begriff als Feature zur Verfügung (wenn der Begriff nicht durch andere Aufbereitungsschritte gelöscht wird, z.B. weil es kein Nomen ist).

expl <- expl %>% 
  mutate(rq = case_when(
    !is.na(data) ~ str_c(rq, data, sep=" "), 
    TRUE ~ rq
  )) %>% 
  mutate(rq = case_when(
    !is.na(method) ~ str_c(rq, method, sep=" "), 
    TRUE ~ rq
  ))
  1. Transfer des Datensatzes in ein quanteda Korpus
library(quanteda)
## Package version: 1.4.3
## Parallel computing: 2 of 4 threads used.
## See https://quanteda.io for tutorials and examples.
## 
## Attaching package: 'quanteda'
## The following object is masked from 'package:utils':
## 
##     View
expl_corpus <- corpus(x = expl$rq, #Variable "rq" beinhaltet den Text 
                      docvars = expl %>% select(id, rq, data, method)) #Alle relevanten Variablen mitnehmen
summary(expl_corpus)
## Corpus consisting of 33 documents:
## 
##    Text Types Tokens Sentences id
##   text1    12     12         2  2
##   text2    13     13         2  3
##   text3    17     17         2  4
##   text4     0      0         0  5
##   text5    10     11         1  6
##   text6    19     22         2  7
##   text7     0      0         0  8
##   text8    14     14         2  9
##   text9    17     20         2 10
##  text10    12     12         2 11
##  text11     0      0         0 12
##  text12    11     11         1 13
##  text13    14     15         2 14
##  text14    15     15         2 15
##  text15    13     13         2 16
##  text16     0      0         0 17
##  text17    15     17         1 18
##  text18    12     13         2 19
##  text19    21     22         3 20
##  text20    14     14         2 21
##  text21    16     17         2 22
##  text22     0      0         0 23
##  text23    17     17         2 24
##  text24    17     18         2 25
##  text25    15     16         2 26
##  text26     9      9         2 27
##  text27    19     20         2 28
##  text28    11     11         2 29
##  text29     9      9         1 30
##  text30    11     12         1 31
##  text31     0      0         0 32
##  text32    19     20         3 33
##  text33    13     13         1 34
##                                                                                                                                                                               rq
##                                                                                                            Wie wird die VR China thematisch im EU Parlament diskutiert? EuroParl
##                                                                      Haben sich Parteipositionen zur Wohnungspolitik in den letzten zwei Legislaturperioden verändert? GermaParl
##                                                                   Welche thematischen Schwerpunktsetzungen gab es von 2007 bis 2015 und wie haben sich diese verändert? EUSpeech
##                                                                                                                                                                             <NA>
##                                                                          Wie verändern sich ideologische Positionen der Parteien hinsichtlich der Migrationsbewegungen GermaParl
##  Migrationsbewegung in Deutschland: wie entwickeln sich ideologische Positionen der Parteien in Deutschland hinsichtlich Migrationsbewegungen? GermaParl Ideological Scaling (?)
##                                                                                                                                                                             <NA>
##                                                                          Wie wird das Problem der Separatistenbewegungen im Europäischen Parlament gesprochen? EuroParl/EuSpeech
##                                         Wie wirken die Menschrechte der Politiks der Europearländer zu Flüchtlingen auf die Auswahl des Zielland der Geflüchteten aus? GermaParl
##                                                                                                            Wie wird die VR China thematisch im EU Parlament diskutiert? EuroParl
##                                                                                                                                                                             <NA>
##                                                                                          Wie äußern sich Staatsvertreter zum politischen Islam in der UN-Generalversammlung UNGA
##                                                                        Wie verändern sich die Debatten für die Auslandseinsätze der Bundeswehr im deutschen Parlament? GermaParl
##                                                        Wie verändern sich die ideologischen, parteilichen Postionen bezüglich der Migrationsbewegungen in Deutschland? GermaParl
##                                                                                   Erinnerungspolitische Wende mit Einzug der AfD in den Bundestag? GermaParl Ideological Scaling
##                                                                                                                                                                             <NA>
##                                                               wie verändert sich die Einstellung der Menschen zur Auswahl der Regierungschef in EU Staats durch die Flüchtlingen
##                                                                                                       Wie verändert sich das Thema "Migranten" im deutschen Parlament? GermaParl
##                  Die EU und der Bundestag. Werden Plenarsitzungen im Bundestag seit 1994 zunehmend aus einer europäischen statt einzelstaatlicher Perspektive geführt? GermaParl
##                                                                              Wie geht die Europäische Union mit seperatistischen Bewegungen in den Mitgliedsstaaten um? EUSpeech
##                                                                                   Veränderte sich seit dem Einzug der AFD die Art und Weise der Diskurse im Bundestag? GermaParl
##                                                                                                                                                                             <NA>
##                                                                   Welche thematischen Schwerpunktsetzungen gab es von 2007 bis 2015 und wie haben sich diese verändert? EUSpeech
##                                                           Wie hat sich die Sichtweise der deutschen Parteien im Hinblick auf die Flüchtlingskrise seit 2015 verändert? GermaParl
##                                                                                     Ist das Thema "Demokratie" in der deutschen Politik seit 2014 relevanter geworden? GermaParl
##                                                                                                               wie verändert sich Frauenthema in der UN-Generalversammlung ? UNGA
##                                                 Messung der Persönlichkeit von Politikern und Politikerinnen auf Basis der Reden. EUSpeech Support Vector Mashines (naive bayes)
##                                                                                         Erinnerungspolitische Wende zum Thema Holocaust seit 2013? GermaParl Ideological Scaling
##                                                                                                               Wie beeinflusst die Anzahl der Kinder das Bildungsniveau GermaParl
##                                                                      Wie äußert sich aktuell der Wandel gesellschaftlicher Diversifizierungsprozesse der deutschen Gesellschaft?
##                                                                                                                                                                             <NA>
##                            Wie wird in Parlamenten über Fragen des Umweltschutzes gesprochen? Sind zeitliche Veränderungen bemerkbar? GermaParl oder EuroParl sentiment analysis
##                                                                                        In welchen Zusammenhängen ist das Thema KI politisch diskutiert worden EUSpeech/GermaParl
##                     data                                method
##                 EuroParl                                  <NA>
##                GermaParl                                  <NA>
##                 EUSpeech                                  <NA>
##                     <NA>                                  <NA>
##                GermaParl                                  <NA>
##                GermaParl               Ideological Scaling (?)
##                     <NA>                                  <NA>
##        EuroParl/EuSpeech                                  <NA>
##                GermaParl                                  <NA>
##                 EuroParl                                  <NA>
##                     <NA>                                  <NA>
##                     UNGA                                  <NA>
##                GermaParl                                  <NA>
##                GermaParl                                  <NA>
##                GermaParl                   Ideological Scaling
##                     <NA>                                  <NA>
##                     <NA>                                  <NA>
##                GermaParl                                  <NA>
##                GermaParl                                  <NA>
##                 EUSpeech                                  <NA>
##                GermaParl                                  <NA>
##                     <NA>                                  <NA>
##                 EUSpeech                                  <NA>
##                GermaParl                                  <NA>
##                GermaParl                                  <NA>
##                     UNGA                                  <NA>
##                 EUSpeech Support Vector Mashines (naive bayes)
##                GermaParl                   Ideological Scaling
##                GermaParl                                  <NA>
##                     <NA>                                  <NA>
##                     <NA>                                  <NA>
##  GermaParl oder EuroParl                    sentiment analysis
##       EUSpeech/GermaParl                                  <NA>
## 
## Source: /Users/vgold/Documents/teaching/goettingen/-2019.1_mmzs12/webpage/content/intro/* on x86_64 by vgold
## Created: Fri Jul 12 16:18:47 2019
## Notes:
  1. Anwendung Part-of-Speech Tagging

Identifikation der Wortarten unter Verwendung der Klassifikationen auf https://spacy.io/ und Anwendung des Paketes spacyr.

library(spacyr)
spacy_initialize(python_executable="/anaconda/bin/python", model="de") #Anaconda Python laden
## Found 'spacy_condaenv'. spacyr will use this environment
## successfully initialized (spaCy Version: 2.0.12, language model: de)
## (python options: type = "condaenv", value = "spacy_condaenv")
expl_tagged <- spacy_parse(expl_corpus, pos = TRUE, tag = TRUE) #Anwendung POS-Tagging
## Warning in spacy_parse.character(texts(x), ...): lemmatization may not work
## properly in model 'de'
expl_tagged %>% 
  head(20)
##    doc_id sentence_id token_id            token            lemma   pos
## 1   text1           1        1              Wie              wie   ADV
## 2   text1           1        2             wird           werden   AUX
## 3   text1           1        3              die              der   DET
## 4   text1           1        4               VR               VR  NOUN
## 5   text1           1        5            China            China PROPN
## 6   text1           1        6       thematisch       thematisch   ADJ
## 7   text1           1        7               im               im   ADP
## 8   text1           1        8               EU               EU PROPN
## 9   text1           1        9        Parlament        Parlament  NOUN
## 10  text1           1       10       diskutiert      diskutieren  VERB
## 11  text1           1       11                ?                ? PUNCT
## 12  text1           2        1         EuroParl         EuroParl PROPN
## 13  text2           1        1            Haben            haben   AUX
## 14  text2           1        2             sich             sich  PRON
## 15  text2           1        3 Parteipositionen Parteipositionen  NOUN
## 16  text2           1        4              zur              zur   ADP
## 17  text2           1        5  Wohnungspolitik  Wohnungspolitik  NOUN
## 18  text2           1        6               in               in   ADP
## 19  text2           1        7              den              der   DET
## 20  text2           1        8          letzten            letzt   ADJ
##        tag entity
## 1     PWAV       
## 2    VAFIN       
## 3      ART       
## 4       NN  LOC_B
## 5       NE  LOC_I
## 6     ADJD       
## 7  APPRART       
## 8       NE  ORG_B
## 9       NN  ORG_I
## 10    VVPP       
## 11      $.       
## 12      NE MISC_B
## 13   VAFIN       
## 14     PRF       
## 15      NN       
## 16 APPRART       
## 17      NN       
## 18    APPR       
## 19     ART       
## 20    ADJA
  1. Aggregation zurück auf Ebene der Personen

Anwendung Funktionen aus dem tidyverse, mit dem Ziel, den Datensatz wieder auf Personenebene zu aggregieren.

expl_agg <- expl_tagged %>% 
  mutate(nouns = case_when( #neue Variable "nouns" (nur Nomen und proper nouns)
    pos == "NOUN" | pos == "PROPN" ~ lemma, 
    TRUE ~ ""
  )) %>% 
  #select(doc_id, lemma, nouns) %>% 
  #head()
  group_by(doc_id) %>% #Gruppierung nach Id
  summarise(token = str_c(token, collapse=" "), #Aggregation tokens
            lemma = str_c(lemma, collapse=" "), #Aggregation lemmas
            nouns = str_c(nouns, collapse=" ")) %>% #Aggregation nouns
  mutate(nouns = str_replace_all(nouns, '[:space:]{2,}', ' '), #doppelte Leerzeichen löschen
         nouns = str_trim(nouns, side="both")) #Leerzeichen am Anfang und Ende löschen

expl_agg
## # A tibble: 27 x 4
##    doc_id token                  lemma                  nouns              
##    <chr>  <chr>                  <chr>                  <chr>              
##  1 text1  Wie wird die VR China… wie werden der VR Chi… VR China EU Parlam…
##  2 text10 Wie wird die VR China… wie werden der VR Chi… VR China EU Parlam…
##  3 text12 Wie äußern sich Staat… wie äußern sich Staat… Staatsvertreter Is…
##  4 text13 Wie verändern sich di… wie verändern sich de… Debatte Auslandsei…
##  5 text14 Wie verändern sich di… wie verändern sich de… Postionen Migratio…
##  6 text15 Erinnerungspolitische… Erinnerungspolitische… Wende Einzug AfD B…
##  7 text17 wie verändert sich di… wie verändern sich de… Einstellung Mensch…
##  8 text18 "Wie verändert sich d… "wie verändern sich d… Thema Migranten Pa…
##  9 text19 Die EU und der Bundes… der EU und der Bundes… EU Bundestag Plena…
## 10 text2  Haben sich Parteiposi… haben sich Parteiposi… Parteipositionen W…
## # … with 17 more rows
  1. Mergen mit Originaldatensatz

Zur Identifikation der Personen wird der Datensatz wieder mit dem Ursprungsdatensatz zusammengefügt.

#Extraktion Ids 
expl_agg <- expl_agg %>% 
  mutate(id = str_extract(doc_id, "[0-9]{1,2}"), #Extraktion Zahlen aus doc_id
         id = as.numeric(id) + 1) %>% #Konvertierung in numerisch
  arrange(id)

#Datensätze zusammenfügen (join)
expl_agg <- left_join(expl_agg, expl, by="id") %>% 
  select(id, rq, nouns, data, method)
  1. Erneut Korpus bilden, diesmal nur für Nomen

Erneut Korpus bilden–mit dem Unterschied, dass diesmal nur die Nomen die relevanten Texteinheiten sind. Zusätzlich wird vorher noch der Personenname abgekürzt mit dem Schema “Nachname_erster Buchstabe des Vornamens”. Textdokumente werden mittels der ID angegeben.

#Dokumentenname ist Nachname_V
# expl_agg <- expl_agg %>% 
#   mutate(nachname = str_replace_all(name, ".*\\s", ""), #Alles vor dem letzten Leerzeichen löschen
#          first_letter = str_extract(name, "[A-Z]"), #Extraktion des ersten Buchstabens
#          name_short = str_c(nachname, first_letter, sep="_")) #Zusammenfügen

#Lösche fehlende Werte
expl_agg <- expl_agg %>% 
  filter(!is.na(nouns) & !nouns=="")

#Generiere Korpus
expl_agg_corpus <- corpus(expl_agg$nouns, #Für Nomen
                          docvars = expl_agg, #Alle anderen Variablen mitnehmen
                          docnames = expl_agg %>% pull(id)) #Dokumentenname ist Nachname_V
summary(expl_agg_corpus)
## Corpus consisting of 27 documents:
## 
##  Text Types Tokens Sentences id
##     2     5      5         1  2
##     3     4      4         1  3
##     4     2      2         1  4
##     6     4      4         1  6
##     7     7      8         1  7
##     9     3      3         1  9
##    10     8      8         1 10
##    11     5      5         1 11
##    13     4      4         1 13
##    14     5      5         1 14
##    15     4      4         1 15
##    16     7      7         1 16
##    18     7      7         1 18
##    19     4      4         1 19
##    20     5      6         1 20
##    21     4      4         1 21
##    22     8      8         1 22
##    24     2      2         1 24
##    25     5      5         1 25
##    26     4      4         1 26
##    27     3      3         1 27
##    28    10     10         1 28
##    29     6      6         1 29
##    30     4      4         1 30
##    31     3      3         1 31
##    33     6      6         1 33
##    34     6      6         1 34
##                                                                                                                                                                               rq
##                                                                                                            Wie wird die VR China thematisch im EU Parlament diskutiert? EuroParl
##                                                                      Haben sich Parteipositionen zur Wohnungspolitik in den letzten zwei Legislaturperioden verändert? GermaParl
##                                                                   Welche thematischen Schwerpunktsetzungen gab es von 2007 bis 2015 und wie haben sich diese verändert? EUSpeech
##                                                                          Wie verändern sich ideologische Positionen der Parteien hinsichtlich der Migrationsbewegungen GermaParl
##  Migrationsbewegung in Deutschland: wie entwickeln sich ideologische Positionen der Parteien in Deutschland hinsichtlich Migrationsbewegungen? GermaParl Ideological Scaling (?)
##                                                                          Wie wird das Problem der Separatistenbewegungen im Europäischen Parlament gesprochen? EuroParl/EuSpeech
##                                         Wie wirken die Menschrechte der Politiks der Europearländer zu Flüchtlingen auf die Auswahl des Zielland der Geflüchteten aus? GermaParl
##                                                                                                            Wie wird die VR China thematisch im EU Parlament diskutiert? EuroParl
##                                                                                          Wie äußern sich Staatsvertreter zum politischen Islam in der UN-Generalversammlung UNGA
##                                                                        Wie verändern sich die Debatten für die Auslandseinsätze der Bundeswehr im deutschen Parlament? GermaParl
##                                                        Wie verändern sich die ideologischen, parteilichen Postionen bezüglich der Migrationsbewegungen in Deutschland? GermaParl
##                                                                                   Erinnerungspolitische Wende mit Einzug der AfD in den Bundestag? GermaParl Ideological Scaling
##                                                               wie verändert sich die Einstellung der Menschen zur Auswahl der Regierungschef in EU Staats durch die Flüchtlingen
##                                                                                                       Wie verändert sich das Thema "Migranten" im deutschen Parlament? GermaParl
##                  Die EU und der Bundestag. Werden Plenarsitzungen im Bundestag seit 1994 zunehmend aus einer europäischen statt einzelstaatlicher Perspektive geführt? GermaParl
##                                                                              Wie geht die Europäische Union mit seperatistischen Bewegungen in den Mitgliedsstaaten um? EUSpeech
##                                                                                   Veränderte sich seit dem Einzug der AFD die Art und Weise der Diskurse im Bundestag? GermaParl
##                                                                   Welche thematischen Schwerpunktsetzungen gab es von 2007 bis 2015 und wie haben sich diese verändert? EUSpeech
##                                                           Wie hat sich die Sichtweise der deutschen Parteien im Hinblick auf die Flüchtlingskrise seit 2015 verändert? GermaParl
##                                                                                     Ist das Thema "Demokratie" in der deutschen Politik seit 2014 relevanter geworden? GermaParl
##                                                                                                               wie verändert sich Frauenthema in der UN-Generalversammlung ? UNGA
##                                                 Messung der Persönlichkeit von Politikern und Politikerinnen auf Basis der Reden. EUSpeech Support Vector Mashines (naive bayes)
##                                                                                         Erinnerungspolitische Wende zum Thema Holocaust seit 2013? GermaParl Ideological Scaling
##                                                                                                               Wie beeinflusst die Anzahl der Kinder das Bildungsniveau GermaParl
##                                                                      Wie äußert sich aktuell der Wandel gesellschaftlicher Diversifizierungsprozesse der deutschen Gesellschaft?
##                            Wie wird in Parlamenten über Fragen des Umweltschutzes gesprochen? Sind zeitliche Veränderungen bemerkbar? GermaParl oder EuroParl sentiment analysis
##                                                                                        In welchen Zusammenhängen ist das Thema KI politisch diskutiert worden EUSpeech/GermaParl
##                                                                                                  nouns
##                                                                         VR China EU Parlament EuroParl
##                                          Parteipositionen Wohnungspolitik Legislaturperioden GermaParl
##                                                                          Schwerpunktsetzungen EUSpeech
##                                                         Position Partei Migrationsbewegungen GermaParl
##  Migrationsbewegung Deutschland Position Partei Deutschland Migrationsbewegungen GermaParl Ideological
##                                                               Problem Separatistenbewegungen Parlament
##                 Menschrechte Politiks Europearländer Flüchtling Auswahl Zielland Geflüchtete GermaParl
##                                                                         VR China EU Parlament EuroParl
##                                                       Staatsvertreter Islam UN-Generalversammlung UNGA
##                                                Debatte Auslandseinsätze Bundeswehr Parlament GermaParl
##                                                   Postionen Migrationsbewegungen Deutschland GermaParl
##                                               Wende Einzug AfD Bundestag GermaParl Ideological Scaling
##                                          Einstellung Mensch Auswahl Regierungschef EU Staat Flüchtling
##                                                                    Thema Migranten Parlament GermaParl
##                                           EU Bundestag Plenarsitzungen Bundestag Perspektive GermaParl
##                                                               Union Bewegung Mitgliedsstaaten EUSpeech
##                                             verändert Einzug AFD Art Weise Diskurs Bundestag GermaParl
##                                                                          Schwerpunktsetzungen EUSpeech
##                                                  Sichtweise Partei Hinblick Flüchtlingskrise GermaParl
##                                                                     Thema Demokratie Politik GermaParl
##                                                                 Frauenthema UN-Generalversammlung UNGA
##               Messung Persönlichkeit Politiker Politikerin Basis Rede EUSpeech Support Vector Mashines
##                                                    Wende Thema Holocaust GermaParl Ideological Scaling
##                                                                   Anzahl Kind Bildungsniveau GermaParl
##                                                         wandeln Diversifizierungsprozesse Gesellschaft
##                                          Parlament Frage Umweltschutzes Veränderung GermaParl EuroParl
##                                                               Zusammenhang Thema KI EUSpeech/GermaParl
##                     data                                method
##                 EuroParl                                  <NA>
##                GermaParl                                  <NA>
##                 EUSpeech                                  <NA>
##                GermaParl                                  <NA>
##                GermaParl               Ideological Scaling (?)
##        EuroParl/EuSpeech                                  <NA>
##                GermaParl                                  <NA>
##                 EuroParl                                  <NA>
##                     UNGA                                  <NA>
##                GermaParl                                  <NA>
##                GermaParl                                  <NA>
##                GermaParl                   Ideological Scaling
##                     <NA>                                  <NA>
##                GermaParl                                  <NA>
##                GermaParl                                  <NA>
##                 EUSpeech                                  <NA>
##                GermaParl                                  <NA>
##                 EUSpeech                                  <NA>
##                GermaParl                                  <NA>
##                GermaParl                                  <NA>
##                     UNGA                                  <NA>
##                 EUSpeech Support Vector Mashines (naive bayes)
##                GermaParl                   Ideological Scaling
##                GermaParl                                  <NA>
##                     <NA>                                  <NA>
##  GermaParl oder EuroParl                    sentiment analysis
##       EUSpeech/GermaParl                                  <NA>
## 
## Source: /Users/vgold/Documents/teaching/goettingen/-2019.1_mmzs12/webpage/content/intro/* on x86_64 by vgold
## Created: Fri Jul 12 16:18:53 2019
## Notes:
  1. Document-Feature-Matrix bilden

Der Korpus wird in eine Dokumenten-Feature-Matrix (DFM) konvertiert. Das ist das Ausgangsformat für die Berechnung von Ähnlichkeiten.

expl_dfm <- dfm(expl_agg_corpus) #Konvertierung
expl_dfm
## Document-feature matrix of: 27 documents, 82 features (93.9% sparse).
expl_dfm[1:(nrow(expl_dfm)-1), 1:4]
## Document-feature matrix of: 26 documents, 4 features (86.5% sparse).
  1. Ähnlichkeiten berechnen und grafisch darstellen

Die Funktion textstat_simil berechnet die Kosinus-Ähnlichkeit der Dokumente (basierend auf der Häufigkeitsverteilung der Features in der DFM).

expl_simil <- textstat_simil(expl_dfm,
                             margin = "documents", #Ähnlichkeit über Dokumente
                             method = "cosine") %>% #Kosinus Ähnlichkeit
  as.matrix() #Übertragung in Matrix zur grafischen Darstellung

#Hinzufügen von "id" vor Id-Nummer
rownames(expl_simil) <- str_c("id", rownames(expl_simil))
colnames(expl_simil) <- str_c("id", colnames(expl_simil))

library(ggcorrplot) 
ggcorrplot(expl_simil, 
           hc.order = TRUE, #Sortierung nach Clusterverfahren
           type = "lower") #nur untere Dreiecksmatrix

Ähnlichkeit auf Basis eines Clusterverfahrens

Gerade eben wurde die grafische Darstellung bereits sortiert unter Verwendung eines Clusterverfahrens. Dieses Verfahren lässt sich auch anders grafisch darstellen.

#Konvertierung in Matrix
expl_matrix  <- as.matrix(expl_dfm)

#Distanzmessung, hier: Euclidean
distMatrix <- dist(expl_matrix, method="euclidean")
#distMatrix <- dist(m, method="cosine")

#Anwendung hierarchisches Clusterverfahren Ward D
groups <- hclust(distMatrix, method="ward.D")

#Grafische Darstellung
plot(groups, cex=0.9)
rect.hclust(groups, k=6)