Projekt Gruppe 1

13.07.2019 - Gruppe 1 - Reading time ~92 Minutes

Einleitung “Wie wird die VR China thematisch im EU Parlament diskutiert?”

Die bilateralen Beziehungen zwischen der Europäische Union und Volksrepublik China sind für beide Seiten von großer Bedeutung, da es sich bei beiden um zwei der größten Handelsmächte der Welt handelt. China ist mittlerweile der zweitgrößte Handelspartner der EU und die EU Chinas größter Handelspartner (EU Commission, Countries and regions - China, 2019). Im Jahre 2013 wurde die letzte umfassende EU-China Strategie durch die EU Kommission veröffentlicht, bei der es vorrangig um wirtschaftliche Kooperation geht. In dem letzten Update der Strategie von 2019 wird China jedoch als “strategic rival” bezeichnet (EU Commission, EU-China strategy, 2019). Die Entwicklung von Kooperation zu Wettbewerbern ist besonders im geopolitischen Kontext als auch im Hinblick auf die rasante wirtschaftliche und technologische Entwicklung Chinas zu sehen. Spiegelt sich eine wirtschaftliche Perspektive Chinas auch in den Diskussionen innerhalb des Europäischen Parlaments wieder? Wie wurde China thematisch diskutiert?

Fallauswahl

Um festzustellen wie China thematisch diskutiert wird, haben wir uns den bereits aggregierten Europarl Datensatz angesehen, der die Protokolle von 1999 bis 2018 beinhaltet. DIeser Zeitraum ist besonders interessant, da im Zuge der wirtschaftlichen Öffnung Chinas der Handel mit Europa an Bedeutung gewann.

Unser Vorgehen

Pakete laden

library(ldatuning)
library(tibble)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(magrittr)
library(stringr)
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
library(topicmodels)
library(tidytext)
library(tidyr)
## 
## Attaching package: 'tidyr'
## The following object is masked from 'package:magrittr':
## 
##     extract
library(ggplot2)
library(stm)
## stm v1.3.3 (2018-1-26) successfully loaded. See ?stm for help. 
##  Papers, resources, and other materials at structuraltopicmodel.com
library(slam)
suppressPackageStartupMessages( library(tibble) ) 
suppressPackageStartupMessages( library(dplyr) ) 
suppressPackageStartupMessages( library(magrittr) ) 
suppressPackageStartupMessages( library(stringr) ) 
suppressPackageStartupMessages( library(quanteda) ) 
suppressPackageStartupMessages( library(lsa) )
suppressPackageStartupMessages( library(ldatuning) )
library("topicmodels")

Datensatz laden

#load("/Users/kangruiwang/Desktop/R Sprache/daten/daten/europarl_en_agg.rda")
load("../../../daten/EuroParl_UdS/europarl_en_agg.rda")

Exploration der Daten

Hier haben wir unseren Datensatz angepasst.

#Dimensionen
europarl_en_agg %>% 
  dim()
## [1] 261606     24
#Variablen(namen)
europarl_en_agg %>% 
  names()
##  [1] "f"              "cumsum_speaker" "sl"             "id"            
##  [5] "speaker_id"     "name"           "text"           "is_mep"        
##  [9] "mode"           "nationality"    "birth_date"     "birth_place"   
## [13] "n_party"        "p_group"        "m_state"        "sec_id"        
## [17] "sec_title"      "doc_id"         "doc_lang"       "doc_date"      
## [21] "doc_place"      "doc_edition"    "rowid"          "speaker"
#Übersicht
europarl_en_agg %>% 
  glimpse()
## Observations: 261,606
## Variables: 24
## $ f              <chr> "19990720.EN.xml", "19990720.EN.xml", "19990720.E…
## $ cumsum_speaker <dbl> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,…
## $ sl             <chr> "unknown", "en", "unknown", "it", "unknown", "en"…
## $ id             <chr> "2-001", "2-002", "2-003", "2-005", "2-006", "2-0…
## $ speaker_id     <chr> "1103", "2109", "1103", "4740", "1103", "2155", "…
## $ name           <chr> "Giorgio NAPOLITANO", "Brian CROWLEY", "Giorgio N…
## $ text           <chr> "I declare resumed the session of the European Pa…
## $ is_mep         <fct> True, True, True, True, True, True, True, True, T…
## $ mode           <chr> "spoken", "spoken", "spoken", "spoken", "spoken",…
## $ nationality    <chr> "Italy", "Ireland", "Italy", "Italy", "Italy", "U…
## $ birth_date     <chr> "1925-06-29", "1964-03-04", "1925-06-29", "1971-0…
## $ birth_place    <chr> "Napoli", "Dublin", "Napoli", "Milano", "Napoli",…
## $ n_party        <chr> "Democratici di Sinistra (Italy)", "Fianna Fáil P…
## $ p_group        <chr> "Group of the Party of European Socialists", "Uni…
## $ m_state        <chr> "IT", "IE", "IT", "IT", "IT", "GB", "IT", "FR", "…
## $ sec_id         <chr> "creitem1", "creitem1", "creitem1", "creitem2", "…
## $ sec_title      <chr> "Resumption of the session", "Resumption of the s…
## $ doc_id         <chr> "19990720.EN", "19990720.EN", "19990720.EN", "199…
## $ doc_lang       <fct> en, en, en, en, en, en, en, en, en, en, en, en, e…
## $ doc_date       <chr> "1999-07-20", "1999-07-20", "1999-07-20", "1999-0…
## $ doc_place      <chr> "Strasbourg", "Strasbourg", "Strasbourg", "Strasb…
## $ doc_edition    <chr> "OJ edition", "OJ edition", "OJ edition", "OJ edi…
## $ rowid          <int> 1, 3, 9, 17, 18, 20, 21, 27, 28, 30, 31, 48, 55, …
## $ speaker        <chr> "1103", "2109", "1103", "4740", "1103", "2155", "…
#Ansicht der Daten
europarl_en_agg %>% 
  slice(1:50) %>%
  select(f, cumsum_speaker, name, nationality, n_party, text) %>% 
  DT::datatable()

Quanteda Korpus und tokens

Anschließend haben wir einen Corpus gebildet und eine KWIC Analyse mit dem Wort “chin” durchgeführt. Daraus haben wir noch einen Corpus gebildet.

corp_chin <- corpus(europarl_en_agg)
toks_chin <- tokens(corp_chin)
kw_chin <- kwic(toks_chin, pattern =  'chin*', window = 10)
head(kw_chin, 10)
##                        
##   [19990721.EN.18, 804]
##     [19990723.EN.5, 89]
##   [19990915.EN.32, 210]
##   [19990915.EN.145, 78]
##  [19990915.EN.148, 176]
##  [19990915.EN.200, 155]
##   [19990915.EN.201, 91]
##   [19990915.EN.203, 27]
##   [19990915.EN.255, 57]
##   [19990915.EN.255, 72]
##                                                                     
##                  it has been possible to present a united front to |
##                       two of these delegations, i.e. for Japan and |
##                     human rights, while we know full well that the |
##                      to the peacekeeping force. They are too late. |
##                     Indonesia to the Chile of the Chicago Boys, to |
##     that when we have political discussions with countries such as |
##        which we maintain political and economic relations, such as |
##  will go ahead with negotiations with certain countries, including |
##     reason for constructing this power station is because there is |
##                       is to say that it seems that the Republic of |
##                                                                      
##   China  | and the Near East in terms of human rights policy         
##   China  | . In actual fact, colleague Jarzembowski has become deputy
##  Chinese | have a quite different view. All we are doing             
##   China  | , Russia, South Korea and Malaysia have indicated their   
##   China  | and Korea, those countries where, for the sake            
##   China  | , Iran and the United States we try and raise             
##   China  | , the Council can have an influence, maintaining a        
##   China  | , with a view to abolishing the death penalty.            
##  Chinese | aid available. That is to say that it seems               
##   China  | is prepared to offer money for the construction of a
corp_toks_chin<-kw_chin %>%
  corpus()

corp_toks_chin %>% 
  summary(5)
## Corpus consisting of 30230 documents, showing 5 documents:
## 
##       Text Types Tokens Sentences         docname from  to keyword context
##  text1.pre     9     10         1  19990721.EN.18  804 804   China     pre
##  text2.pre    10     10         1   19990723.EN.5   89  89   China     pre
##  text3.pre    10     10         1  19990915.EN.32  210 210 Chinese     pre
##  text4.pre     9     10         2 19990915.EN.145   78  78   China     pre
##  text5.pre     8     10         1 19990915.EN.148  176 176   China     pre
## 
## Source: Corpus created from kwic(x, keywords = "")
## Created: Fri Jul 12 16:21:04 2019
## Notes:
chin_termp <- kw_chin %>%
  as_tibble() %>%
  mutate(text= str_c(pre," ",keyword, " ", post)) %>%
  select(docname, text, from)

chin_termp %>%
  select(text) %>%
  head()
## # A tibble: 6 x 1
##   text                                                                     
##   <chr>                                                                    
## 1 it has been possible to present a united front to China and the Near Eas…
## 2 two of these delegations , i.e . for Japan and China . In actual fact , …
## 3 human rights , while we know full well that the Chinese have a quite dif…
## 4 to the peacekeeping force . They are too late . China , Russia , South K…
## 5 Indonesia to the Chile of the Chicago Boys , to China and Korea , those …
## 6 that when we have political discussions with countries such as China , I…
corp_toks_chin <- chin_termp %>%
  corpus()

docnames(corp_toks_chin) <- chin_termp %>%
  mutate(docname= str_c(docname, "_", from)) %>%
  pull(docname)

corp_toks_chin %>%
  summary(5)
## Corpus consisting of 15115 documents, showing 5 documents:
## 
##                 Text Types Tokens Sentences         docname from
##   19990721.EN.18_804    20     21         1  19990721.EN.18  804
##     19990723.EN.5_89    19     21         2   19990723.EN.5   89
##   19990915.EN.32_210    20     21         2  19990915.EN.32  210
##   19990915.EN.145_78    19     21         3 19990915.EN.145   78
##  19990915.EN.148_176    16     21         1 19990915.EN.148  176
## 
## Source: /Users/vgold/Documents/teaching/goettingen/-2019.1_mmzs12/webpage/content/post/* on x86_64 by vgold
## Created: Fri Jul 12 16:21:04 2019
## Notes:

dfm

chin_dfm <- corp_toks_chin %>% 
  dfm(remove_punct = TRUE, #Punktuation löschen
      remove_numbers = TRUE, #Zahlen löschen
      remove = stopwords("english"), #Englische Stoppwörter löschen
      stem = TRUE) #Zurückführen auf Wortstamm

chin_dfm %>% 
  dim()
## [1] 15115  6739
chin_dfm[1:10, 1:5]
## Document-feature matrix of: 10 documents, 5 features (74.0% sparse).
## 10 x 5 sparse Matrix of class "dfm"
##                      features
## docs                  possibl present unit front china
##   19990721.EN.18_804        1       1    1     1     1
##   19990723.EN.5_89          0       0    0     0     1
##   19990915.EN.32_210        0       0    0     0     0
##   19990915.EN.145_78        0       0    0     0     1
##   19990915.EN.148_176       0       0    0     0     1
##   19990915.EN.200_155       0       0    1     0     1
##   19990915.EN.201_91        0       0    0     0     1
##   19990915.EN.203_27        0       0    0     0     1
##   19990915.EN.255_57        0       0    0     0     0
##   19990915.EN.255_72        0       0    0     0     1

topic modelling lda

Zuerst hatten wir uns überlegt, den zweiten Corpus mit lda zu untersuchen und ein bisschen rumprobiert, wie viele topics am meisten diskutiert wurden.

#Konvertierung
input_dfm <- convert(chin_dfm, to ="topicmodels")
str(input_dfm)
## List of 6
##  $ i       : int [1:145739] 1 24 80 511 538 583 640 702 785 1010 ...
##  $ j       : int [1:145739] 1 1 1 1 1 1 1 1 1 1 ...
##  $ v       : num [1:145739] 1 1 1 1 1 1 1 1 1 1 ...
##  $ nrow    : int 15115
##  $ ncol    : int 6739
##  $ dimnames:List of 2
##   ..$ Docs : chr [1:15115] "19990721.EN.18_804" "19990723.EN.5_89" "19990915.EN.32_210" "19990915.EN.145_78" ...
##   ..$ Terms: chr [1:6739] "possibl" "present" "unit" "front" ...
##  - attr(*, "class")= chr [1:2] "DocumentTermMatrix" "simple_triplet_matrix"
##  - attr(*, "weighting")= chr [1:2] "term frequency" "tf"
#Features Löschen
summary(col_sums(input_dfm))
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##     1.00     1.00     2.00    22.23    11.00 12783.00
term_tfidf <- tapply(
  input_dfm$v /
    row_sums(input_dfm)[input_dfm$i], input_dfm$j, mean) *
  log2(nrow(input_dfm)/col_sums(input_dfm > 0))
summary(term_tfidf)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.03969 1.02218 1.16983 1.20454 1.38837 5.20639
input_dfm <- input_dfm[, term_tfidf >= median(term_tfidf)]
input_dfm <- input_dfm[row_sums(input_dfm) > 0, ] 
summary(col_sums(input_dfm))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   1.000   1.000   2.062   2.000  29.000
#Inspektion
input_dfm %>% 
  dim()
## [1] 5074 3377
input_dfm %>% 
  glimpse()
## List of 6
##  $ i       : int [1:6818] 1 1205 2023 2253 2700 3423 1 1003 2 2544 ...
##  $ j       : int [1:6818] 1 1 1 1 1 1 2 2 3 3 ...
##  $ v       : num [1:6818] 1 1 1 1 1 1 1 1 1 1 ...
##  $ nrow    : int 5074
##  $ ncol    : int 3377
##  $ dimnames:List of 2
##   ..$ Docs : chr [1:5074] "19990723.EN.5_89" "19990915.EN.145_78" "19990915.EN.148_176" "19990915.EN.255_163" ...
##   ..$ Terms: chr [1:3377] "i.e" "jarzembowski" "peacekeep" "chile" ...
##  - attr(*, "class")= chr [1:2] "DocumentTermMatrix" "simple_triplet_matrix"
##  - attr(*, "weighting")= chr [1:2] "term frequency" "tf"

Identifikation Anzahl der Topics

#Identifikation Anzahl der Topics
number_topics <- FindTopicsNumber(
  input_dfm, 
  topics = seq(from = 5, to = 150, by = 10), 
  metrics = c("Griffiths2004", "CaoJuan2009", "Arun2010", "Deveaud2014"),
  method = "Gibbs",
  control = list(seed = 42),
  mc.cores = 2L,
  verbose = TRUE
)

save(number_topics, file="number_topics.rda")

Ergebnisse

#Ergebnis laden
load("../../../webpage_gruppen/gruppe1/number_topics.rda")

#Inspektion
number_topics %>% 
  str()
## 'data.frame':    15 obs. of  5 variables:
##  $ topics       : num  145 135 125 115 105 95 85 75 65 55 ...
##  $ Griffiths2004: num  -55659 -55568 -55541 -55493 -55460 ...
##  $ CaoJuan2009  : num  0.44 0.424 0.408 0.39 0.371 ...
##  $ Arun2010     : num  5821 5859 5901 5943 5992 ...
##  $ Deveaud2014  : num  0.154 0.164 0.176 0.189 0.205 ...
#Ergebnisse anzeigen
number_topics %>% 
  DT::datatable()
#Grafische Darstellung
number_topics %>% 
  FindTopicsNumber_plot()

Anhand der Grafik haben wir abgelesen, dass es ungefähr 40 Topics gibt, die wir uns dann angesehen haben.

#lda

chin_lda <- input_dfm %>% 
  LDA(k = 40)

#Ergebnis speichern
save(chin_lda, file="chin_lda.rda")

Die lda Ergebnisse

Leider waren die Ergebnisse nicht aussagekräftig, sodass wir uns für eine zweite Analysemethode entschieden haben.

#Ergebnis laden
load("../../../webpage_gruppen/gruppe1/chin_lda.rda")

#Topfeatures
chin_lda %>% 
  get_terms(10) %>% 
  t() %>% #Ansicht drehen
  DT::datatable()

stm modelling

Als Alternative haben wir uns für stm modelling entschieden.

chin_dfm %>% 
  dim()
## [1] 15115  6739
chin_tfidf <- chin_dfm %>% 
  dfm_tfidf(scheme_tf = "prop", 
            scheme_df = "inverse")
chin_tfidf[1:5, 1:5]
## Document-feature matrix of: 5 documents, 5 features (68.0% sparse).
## 5 x 5 sparse Matrix of class "dfm"
##                      features
## docs                    possibl   present      unit     front       china
##   19990721.EN.18_804  0.1890034 0.2027289 0.1260924 0.2786786 0.009638161
##   19990723.EN.5_89    0         0         0         0         0.009638161
##   19990915.EN.32_210  0         0         0         0         0          
##   19990915.EN.145_78  0         0         0         0         0.011779974
##   19990915.EN.148_176 0         0         0         0         0.013252471
summary(colSums(chin_tfidf))
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##   0.2612   0.4644   0.9635   4.3768   3.3509 246.8330
chin_dfm_trim <- chin_dfm %>% 
  dfm_trim(min_docfreq = 0.001, 
           max_docfreq = 0.95, 
           docfreq_type = "prop")

chin_dfm_trim %>% 
  dim()
## [1] 15115  1321
chin_dfm_trim[1:5, 1:5]
## Document-feature matrix of: 5 documents, 5 features (68.0% sparse).
## 5 x 5 sparse Matrix of class "dfm"
##                      features
## docs                  possibl present unit china near
##   19990721.EN.18_804        1       1    1     1    1
##   19990723.EN.5_89          0       0    0     1    0
##   19990915.EN.32_210        0       0    0     0    0
##   19990915.EN.145_78        0       0    0     1    0
##   19990915.EN.148_176       0       0    0     1    0
#Konvertierung
input_stm <- chin_dfm_trim %>% 
  convert(to = "stm")

Zuerst haben wir berechnet wie viele Topics es gibt.

#Verschiedene Modelle berechnen
stm_store <- searchK(input_stm$documents,
                     vocab = input_stm$vocab,
                     K = seq(5, 100, by=10),
                     #prevalence = ~ name + s(cumsum_speaker),
                     #content = ~ p_group,
                     data = input_stm$meta,
                     max.em.its = 125,
                     init.type = "Spectral")

#Ergebnis speichern
save(stm_store, file="stm_store.rda")

Aus den Ergebnissen leiten wir ab, dass es 45 Topics gibt.

#save(stm_store, file="stm_store.rda")
load("../../../webpage_gruppen/gruppe1/stm_store.rda")
stm_store %>% 
  plot(cex=1.5)
stm_store %>% 
  plot()

k <- 45

input_stm$meta %>%
  names()


res_stm <- stm(documents = input_stm$documents,
               vocab = input_stm$vocab,
               K = k,
               #prevalence = ~ name + s(cumsum_speaker),
               #content = ~ p_group,
               data = input_stm$meta,
               max.em.its = 125,
               init.type = "Spectral")


#Ergebnis speichern
save(res_stm, file="res_stm.rda")

Analyse und Interpretation

  1. Topic 44:
  2. Topic 15: EU-China Handelsbeziehungen
  3. Topic 2: BRICS Staaten
  4. Topic 10: Meinungsfreiheit?
  5. Topic 6: Menschenrechte
  6. Topic 29 : US-China-Beziehung
  7. Topic 12 : Wirtschaftlicher Wettbewerb
  8. Topic 26: FDI
  9. Topic 39 :…
  10. Topic 11: Produktionskosten (Wirtschaft)

Von den zehn meistdiskutierten Topics beziehen sich min. fünf auf die Wirtschaft. Das dominanteste Thema in der EU in Bezug auf China ist die Wirtschaft, gefolgt von Menschenrechten, chin. Außenpolitik und Chinas politischem System.

#Analyse und Interpretation
#Ergebnis laden
load("../../../webpage_gruppen/gruppe1/res_stm.rda")

#Anzahl Themen
k <- 45

#Label topics
res_stm %>% 
  labelTopics(c(1:10), n=10)
## Topic 1 Top Words:
##       Highest Prob: relat, china, area, current, citizen, effort, establish, given, diplomat, hold 
##       FREX: relat, area, effort, diplomat, hold, promot, travel, citizen, current, contact 
##       Lift: acknowledg, tourism, trust, visa, area, travel, contact, diplomat, effort, hold 
##       Score: relat, passport, citizen, area, china, diplomat, current, effort, hold, establish 
## Topic 2 Top Words:
##       Highest Prob: china, india, russia, brazil, africa, includ, emerg, south, usa, region 
##       FREX: brazil, emerg, asia, usa, south, bric, includ, russia, mexico, india 
##       Lift: asia, mexico, brazil, bric, emerg, middl, asean, usa, superpow, south 
##       Score: india, russia, bric, brazil, china, south, africa, emerg, includ, usa 
## Topic 3 Top Words:
##       Highest Prob: now, say, taiwan, well, cours, know, mention, thing, differ, happen 
##       FREX: say, thing, differ, happen, know, mention, well, now, taiwan, might 
##       Lift: happen, doubl, island, know, might, thing, differ, quit, say, mention 
##       Score: island, taiwan, now, say, well, know, thing, mention, cours, differ 
## Topic 4 Top Words:
##       Highest Prob: govern, work, compani, communist, regim, parti, possibl, reason, end, american 
##       FREX: communist, parti, american, regim, possibl, indian, tell, leader, reason, compani 
##       Lift: communist, surpris, indian, american, buy, exploit, japanes, parti, tell, leader 
##       Score: indian, govern, communist, compani, parti, regim, work, american, possibl, reason 
## Topic 5 Top Words:
##       Highest Prob: one, polici, toward, foreign, forc, accept, implement, principl, critic, accord 
##       FREX: one, polici, toward, accept, critic, consequ, pursu, forc, nevertheless, attitud 
##       Lift: abort, consequ, critic, nevertheless, accept, aggress, attitud, credibl, desir, one 
##       Score: polici, one, one-child, toward, foreign, forc, accept, implement, principl, critic 
## Topic 6 Top Words:
##       Highest Prob: right, human, china, situat, respect, improv, violat, serious, fundament, record 
##       FREX: right, human, situat, respect, improv, violat, fundament, record, criticis, abus 
##       Lift: abus, activist, criticis, fundament, improv, record, respect, right, violat, human 
##       Score: right, human, situat, respect, activist, violat, china, improv, serious, fundament 
## Topic 7 Top Words:
##       Highest Prob: recent, last, discuss, meet, said, rais, visit, summit, minist, subject 
##       FREX: recent, discuss, meet, said, visit, summit, minist, next, week, month 
##       Lift: ambassador, brussel, communic, tomorrow, meet, visit, counterpart, discuss, health, minist 
##       Score: prime, recent, meet, last, discuss, visit, minist, summit, said, rais 
## Topic 8 Top Words:
##       Highest Prob: product, global, problem, certain, manufactur, control, restrict, danger, obvious, safeti 
##       FREX: product, problem, certain, control, danger, obvious, elsewher, earth, absolut, global 
##       Lift: absolut, cut, earth, element, product, qualiti, certain, control, danger, elsewher 
##       Score: product, rare, global, problem, certain, manufactur, control, earth, restrict, danger 
## Topic 9 Top Words:
##       Highest Prob: intern, china, polit, continu, role, standard, play, involv, social, recognis 
##       FREX: intern, polit, role, play, communiti, reform, consider, standard, continu, stage 
##       Lift: ratifi, stage, communiti, coven, exert, intern, play, role, consider, polit 
##       Score: intern, polit, continu, coven, role, play, standard, social, communiti, china 
## Topic 10 Top Words:
##       Highest Prob: chines, author, ask, demonstr, noth, line, local, deni, campaign, monk 
##       FREX: author, ask, chines, monk, local, warn, line, polic, publish, deni 
##       Lift: detain, publish, warn, monk, author, polic, ask, local, book, deni 
##       Score: chines, author, detain, ask, demonstr, monk, noth, local, polic, line
#Graphische Darstellung
res_stm %>% 
  plot(type = "labels", 
       topics = c(1:20),
       n = 10, 
       text.cex = 0.7)

res_stm %>% 
  plot(type = "summary", 
       xlim = c(0, .2), 
       text.cex = .7)

res_stm %>% 
  plot(type = "hist", 
       topics = c(1:20))