Description
Legislative Speeches.
Description
Converts the floor speeches of Uruguayan legislators, extracted from the parliamentary minutes, to tidy data.frame where each observation is the intervention of a single legislator.
README.md
The speech
package
Nicolás Schmidt, Diego Luján, Juan Andrés Moraes
Description
Converts the floor speeches of Uruguayan legislators, extracted from the parliamentary minutes, to tidy data.frame where each observation is the intervention of a single legislator.
Installation
# Install speech from CRAN
install.packages("speech")
# The development version from GitHub:
if (!require("remotes")) install.packages("remotes")
remotes::install_github("Nicolas-Schmidt/speech")
Data generation process
1 - Floor speeches
2 - Data extraction
3 - First construction of the data set: speech::speech_build()
4 - Final data set: speech::speech_build(., compiler = TRUE)
Example
You can see more complex examples in the following link.
library(speech)
url <- "https://parlamento.gub.uy/documentosyleyes/documentos/diario-de-sesion/comisionpermanente/6084/IMG/0?width=800&height=600&hl=en_US1&iframe=true&rel=nofollow"
text <- speech::speech_build(file = url)
text
#> # A tibble: 24 x 7
#> legislator speech chamber date legislature id sex
#> <chr> <chr> <chr> <date> <int> <chr> <dbl>
#> 1 BORDABERRY SEÑOR BORDABERRY. Pido~ COMISI~ 2019-09-17 48 0?wi~ 1
#> 2 BORDABERRY SEÑOR BORDABERRY. Prop~ COMISI~ 2019-09-17 48 0?wi~ 1
#> 3 AVIAGA SEÑORA AVIAGA. Pido la~ COMISI~ 2019-09-17 48 0?wi~ 0
#> 4 AVIAGA SEÑORA AVIAGA. En el m~ COMISI~ 2019-09-17 48 0?wi~ 0
#> 5 GOÑI SEÑOR GOÑI. Pido la pa~ COMISI~ 2019-09-17 48 0?wi~ 1
#> 6 GOÑI SEÑOR GOÑI. El Frente ~ COMISI~ 2019-09-17 48 0?wi~ 1
#> 7 MAHIA SEÑOR MAHIA. Pido la p~ COMISI~ 2019-09-17 48 0?wi~ 1
#> 8 MAHIA SEÑOR MAHIA. Gracias, ~ COMISI~ 2019-09-17 48 0?wi~ 1
#> 9 ABDALA SEÑOR ABDALA. Voto por~ COMISI~ 2019-09-17 48 0?wi~ 1
#> 10 ASTI SEÑOR ASTI. Obviamente~ COMISI~ 2019-09-17 48 0?wi~ 1
#> # ... with 14 more rows
speech_check(text, initial = c("A", "M"))
#> $A
#> legislator
#> 1 ABDALA
#> 2 ASTI
#> 3 AVIAGA
#>
#> $M
#> legislator
#> 1 MAHIA
#> 2 MERONI
text <- speech::speech_build(file = url, compiler = TRUE)
text
#> # A tibble: 11 x 7
#> legislator legislature chamber date id speech sex
#> <chr> <int> <chr> <date> <chr> <chr> <dbl>
#> 1 ABDALA 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 1
#> 2 ASTI 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 1
#> 3 AVIAGA 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 0
#> 4 BORDABERRY 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 1
#> 5 GOÑI 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 1
#> 6 LAZO 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 0
#> 7 MAHIA 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 1
#> 8 MERONI 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 1
#> 9 PEREYRA 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 0
#> 10 TOURNE 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 0
#> 11 VIERA 48 COMISION PERMANENTE 2019-09-17 0?width=8~ SEÑOR~ 1
text$word <- speech_word_count(text$speech)
dplyr::glimpse(text)
#> Rows: 11
#> Columns: 8
#> $ legislator <chr> "ABDALA", "ASTI", "AVIAGA", "BORDABERRY", "GOÑI", "LAZO", ~
#> $ legislature <int> 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48
#> $ chamber <chr> "COMISION PERMANENTE", "COMISION PERMANENTE", "COMISION PE~
#> $ date <date> 2019-09-17, 2019-09-17, 2019-09-17, 2019-09-17, 2019-09-17~
#> $ id <chr> "0?width=800&height=600&hl=en_US1&iframe=true&rel=nofollo~
#> $ speech <chr> "SEÑOR ABDALA. Voto por la señora legisladora Daisy Tourné~
#> $ sex <dbl> 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1
#> $ word <int> 398, 46, 105, 951, 98, 103, 126, 12, 12, 111, 8
Possible application
library(magrittr)
minchar <- function(string, min = 3){
string <- stringr::str_remove_all(string, "[[:punct:]]")
string <- unlist(strsplit(string, " "))
string[nchar(string) > min]
}
text$speech %>%
minchar(., min = 4) %>%
quanteda::corpus() %>%
quanteda::dfm(remove = c("señor", "señora")) %>%
quanteda.textplots::textplot_wordcloud(color = rev(RColorBrewer::brewer.pal(10, "RdBu")))
library(ggplot2)
text$speech %>%
minchar(., min = 4) %>%
tibble::enframe() %>%
tidytext::unnest_tokens(word, value) %>%
dplyr::count(word, sort = TRUE) %>%
dplyr::mutate(word = stats::reorder(word, n)) %>%
dplyr::filter(!stringr::str_detect(word, "^señor")) %>%
.[1:40,] %>%
ggplot(aes(word, n)) +
geom_col(col = "black", fill = "#00A08A", width = .7) +
labs(x = "", y = "") +
coord_flip() +
theme_minimal()
Detecting roll-call votes in parliamentary speeches
urls <- speech_url(chamber = "D", days = c("12-06-2002", "14-04-2004"))
rollcall <- speech_rollcall(file = urls)
rollcall
#> # A tibble: 165 x 10
#> legislator vote argument speech chamber date legislature rollcall
#> <chr> <dbl> <dbl> <chr> <chr> <date> <int> <int>
#> 1 ABDALA 0 0 SEÑOR~ CAMARA~ 2002-06-12 45 1
#> 2 AGAZZI 1 1 SEÑOR~ CAMARA~ 2002-06-12 45 1
#> 3 AMEN VAGHETTI 0 0 SEÑOR~ CAMARA~ 2002-06-12 45 1
#> 4 AMORIN BATLLE 0 0 SEÑOR~ CAMARA~ 2002-06-12 45 1
#> 5 ARAUJO 0 1 SEÑOR~ CAMARA~ 2002-06-12 45 1
#> 6 ARGENZIO 0 1 SEÑOR~ CAMARA~ 2002-06-12 45 1
#> 7 ARGIMON 0 0 SEÑOR~ CAMARA~ 2002-06-12 45 1
#> 8 ARRARTE FERNAN~ 1 0 SEÑOR~ CAMARA~ 2002-06-12 45 1
#> 9 ARREGUI 1 1 SEÑOR~ CAMARA~ 2002-06-12 45 1
#> 10 BARAIBAR 1 0 SEÑOR~ CAMARA~ 2002-06-12 45 1
#> # ... with 155 more rows, and 2 more variables: id <chr>, sex <dbl>
summary(rollcall)
#> # A tibble: 2 x 10
#> Chamber Date Legislators Affirmative Negative prop_AF prop_NG prop_women
#> <chr> <date> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 CRR 2002-06-12 92 45 47 48.9 51.1 13.0
#> 2 CRR 2004-04-14 73 32 41 43.8 56.2 15.1
#> # ... with 2 more variables: prop_arg <dbl>, rc <int>
Citation
To cite packagespeech
in publications, please use:
citation(package = 'speech')
#>
#> To cite package 'speech' in publications use:
#>
#> Nicolas Schmidt, Diego Lujan and Juan Andres Moraes (NA). speech:
#> Legislative Speeches. R package version 0.1.5.
#> https://github.com/Nicolas-Schmidt/speech
#>
#> A BibTeX entry for LaTeX users is
#>
#> @Manual{,
#> title = {speech: Legislative Speeches},
#> author = {Nicolas Schmidt and Diego Lujan and Juan Andres Moraes},
#> note = {R package version 0.1.5},
#> url = {https://github.com/Nicolas-Schmidt/speech},
#> }
Maintainer
Nicolas Schmidt ([email protected])