The goal of notasTaq package (an abbreviation of the portuguese “Notas taquigráficas”) is to retrieve all tacquigraphic notes (transcription of speeches) from the Brazilian Senate’s specific commissions and return a single structured tibble/dataframe, allowing users to filter its content according to meetings, names, parties, states, etc., so that they can perform Text Analysis. This package is a further development of the ad hoc script NotasTaquigraficas - CPI da Pandemia.
The basic operation of the {notasTaq} package takes pure text like this (link):
Example of Senate’s tacquigraphic notesAnd transforms into this:
Example of a dataframe generated with {notasTaq}If you want to check out a file, see this csv of the commission about the 8th january (the storming of Brazilian government buildings).
You can install the development version of notasTaq from GitHub with:
# install.packages("devtools")
devtools::install_github("SoaresAlisson/notasTaq")
The first step is to obtain a tibble/data.frame with the meetings using
the meetings()
function. It requires two parameters: cod
and
start
:
-
cod
: the code of the commission. To find the meeting code, look at “codcol=CODE_WE_WANT_TO_USE” in the URL. For example. given “https://legis.senado.leg.br/comissoes/comissao?codcol=2606&” our code will be “2606”. A complete list of all CPIs and CPMIs you can find here. Pay attention that not all of them, especially the old ones, have their transcriptions available. -
start
: the date of the beginning of the commission. You can find the date of the beginning and the final date by looking at “Finalidade”/“Instalação” on the Senate page. It is also possible to get this information with the functionget_info()
:
library(notasTaq)
reunioesDF <- notasTaq::meetings(cod = "2606", start = "2023-05-25")
reunioesDF
#> # A tibble: 12 × 4
#> data reuniao_dia Depoente.tema link
#> <chr> <int> <chr> <chr>
#> 1 2023-07-11 8 1ª PARTE - Depoimento de Mauro Cesar Barbosa Ci… http…
#> 2 2023-07-11 8 1ª PARTE - Depoimento de Mauro Cesar Barbosa Ci… http…
#> 3 2023-07-04 8 Oitiva de Mauro César Barbosa Cid <NA>
#> 4 2023-06-27 7 1ª PARTE - Oitiva de Jean Lawand Junior, 2ª PAR… http…
#> 5 2023-06-26 6 Oitiva de Jorge Eduardo Naime http…
#> 6 2023-06-22 5 1ª PARTE - Oitiva de Valdir Pires Dantas Filho,… http…
#> 7 2023-06-20 4 1ª PARTE - Oitiva de Silvinei Vasques, 2ª PARTE… http…
#> 8 2023-06-13 3 Deliberativa http…
#> 9 2023-06-07 3 Deliberativa <NA>
#> 10 2023-06-06 2 Apresentação e apreciação do plano de trabalho. http…
#> 11 2023-06-01 2 Apresentação e apreciação do plano de trabalho. <NA>
#> 12 2023-05-25 1 Instalação e Eleição http…
Even if you are too lazy to find the code =)
, you can pass the entire
URL and it will work as well.
meetings("https://legis.senado.leg.br/comissoes/comissao?codcol=2602", "2023-02-02")
#> # A tibble: 6 × 4
#> data reuniao_dia Depoente.tema link
#> <chr> <int> <chr> <chr>
#> 1 2023-07-12 2 Audiência Pública Interativa <NA>
#> 2 2023-07-12 2 Audiência Pública Interativa <NA>
#> 3 2023-07-11 2 Audiência Pública Interativa <NA>
#> 4 2023-06-21 1 1ª PARTE - Instalação e Eleição, 2ª PARTE - Deli… <NA>
#> 5 2023-06-13 1 Instalação e Eleição <NA>
#> 6 2023-05-30 1 Instalação e Eleição <NA>
Alternatively, it is also possible to specify the:
end
: The end date. If no parameter is given, it uses the actual date (fromSys.Date()
)
reunioesDF <- notasTaq::meetings(cod = "2606", start = "2023-05-25", end = "2023-08-12")
reunioesDF
#> # A tibble: 13 × 4
#> data reuniao_dia Depoente.tema link
#> <chr> <int> <chr> <chr>
#> 1 2023-08-01 9 Oitiva http…
#> 2 2023-08-01 9 Oitiva <NA>
#> 3 2023-07-11 8 1ª PARTE - Depoimento de Mauro Cesar Barbosa Ci… http…
#> 4 2023-07-04 8 Oitiva de Mauro César Barbosa Cid <NA>
#> 5 2023-06-27 7 1ª PARTE - Oitiva de Jean Lawand Junior, 2ª PAR… http…
#> 6 2023-06-26 6 Oitiva de Jorge Eduardo Naime http…
#> 7 2023-06-22 5 1ª PARTE - Oitiva de Valdir Pires Dantas Filho,… http…
#> 8 2023-06-20 4 1ª PARTE - Oitiva de Silvinei Vasques, 2ª PARTE… http…
#> 9 2023-06-13 3 Deliberativa http…
#> 10 2023-06-07 3 Deliberativa <NA>
#> 11 2023-06-06 2 Apresentação e apreciação do plano de trabalho. http…
#> 12 2023-06-01 2 Apresentação e apreciação do plano de trabalho. <NA>
#> 13 2023-05-25 1 Instalação e Eleição http…
To get some basic information about a commission, use the function
get_info(CODE)
, that returns a list object:
get_info(2102)
#> $codcol
#> [1] 2102
#>
#> $title
#> [1] "CPIMT"
#>
#> $description
#> [1] "CPI dos Maus-tratos - 2017"
#>
#> $finality
#> [1] "Investigar as irregularidades e os crimes relacionados aos maus-tratos em crianças e adolescentes no país."
#>
#> $start_date
#> [1] "2017-08-09"
…and use it with meetings()
, like this
info <- get_info(2102)
meetings(info$codcol, info$start_date)
#> # A tibble: 46 × 4
#> data reuniao_dia Depoente.tema link
#> <chr> <int> <chr> <chr>
#> 1 2018-12-06 29 Apreciação do Relatório Final. http://www25.senado.le…
#> 2 2018-12-06 29 Apreciação do Relatório Final. http://www25.senado.le…
#> 3 2018-08-28 29 Deliberativa <NA>
#> 4 2018-08-21 29 Deliberativa <NA>
#> 5 2018-08-14 29 Deliberativa <NA>
#> 6 2018-07-12 28 Reunião de Trabalho http://www25.senado.le…
#> 7 2018-07-11 28 Reunião de Trabalho http://www25.senado.le…
#> 8 2018-07-04 27 Deliberativa http://www25.senado.le…
#> 9 2018-06-14 27 Coleta de Depoimentos. <NA>
#> 10 2018-06-14 27 Deliberativa <NA>
#> # ℹ 36 more rows
We will first show to get the transcriptions of tacquigraphic notes downloading the files of meetings and then how to get it without downloading.
You don’t have to, but you can save the individual files of meetings
locally on your machine. Now that we have a dataframe with all the
available links, just as an example, we will download one individual
file, and we will do it using the option save = TRUE
. To use one file
in this example, we specified the first line of the dataframe. As we
used the parameter save = TRUE
, it will create a folder on your
computer with the name of “codcol,” and inside it, two other folders:
csv
and rds
. If you have already run this function before, it will
return NULL
. Try 1) choosing another line number, or 2) deleting the
file in the /rds folder.
nt <- parser(reunioesDF, 1, save = TRUE)
str( nt )
nt <- parser(reunioesDF, 1, save = TRUE)
#> Processing cod:2606, meeting: 9, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/11621"
str( nt )
#> tibble [1,046 × 9] (S3: tbl_df/tbl/data.frame)
#> $ reuniao : chr [1:1046] "8" "8" "8" "8" ...
#> $ data : chr [1:1046] "2023-08-01" "2023-08-01" "2023-08-01" "2023-08-01" ...
#> $ nome : chr [1:1046] "Arthur Oliveira Maia" "MARCOS ROGÉRIO" "Arthur Oliveira Maia" "MARCOS ROGÉRIO" ...
#> $ funcao_blocoPar: chr [1:1046] "PRESIDENTE" "(PL - RO)" "PRESIDENTE" "(PL - RO)" ...
#> $ BlocoParl : chr [1:1046] "(Arthur Oliveira Maia. UNIÃO - BA. Fala da Presidência.)" "(PL - RO)" "(Arthur Oliveira Maia. UNIÃO - BA)" "(PL - RO)" ...
#> $ partido : chr [1:1046] "UNIÃO" "PL" "UNIÃO" "PL" ...
#> $ estado : chr [1:1046] "BA" "RO" "BA" "RO" ...
#> $ complemento : chr [1:1046] "Fala da Presidência" "" "" "" ...
#> $ fala : chr [1:1046] "Havendo número regimental, declaro aberta a 8ª Reunião da Comissão Parlamentar Mista de Inquérito criada pelo R"| __truncated__ "Sr. Presidente... " "Com a palavra, o Senador Rogério. " "Marcos Rogério. " ...
head(nt, 5) # only the first lines
#> # A tibble: 5 × 9
#> reuniao data nome funcao_blocoPar BlocoParl partido estado complemento fala
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 8 2023… Arth… PRESIDENTE (Arthur … UNIÃO BA "Fala da P… "Hav…
#> 2 8 2023… MARC… (PL - RO) (PL - RO) PL RO "" "Sr.…
#> 3 8 2023… Arth… PRESIDENTE (Arthur … UNIÃO BA "" "Com…
#> 4 8 2023… MARC… (PL - RO) (PL - RO) PL RO "" "Mar…
#> 5 8 2023… Arth… PRESIDENTE (Arthur … UNIÃO BA "" "Mar…
You can delete all the .csv files if you want, but leave the rds files there until the commission is over, all the transcriptions are available, and you have (r)binded all meetings into a single file. Downloading the files is useful if the commission is still ongoing, and we don’t want to request/download the same data every time that a new meeting transcription is available.
The returned dataframe has the following structure
At the end of the str() function, there is an attribute cod, which is the code of the commission that we passed in reunion().
reuniao
: the number of meetingdata
: the date of the meeting in format year-month-daynome
: the name of the speakerfuncao_blocoPar
: Information such as function (if president) or parlamentary bloc/party and State of the congressman. This column is dismembered into the following columns:BlocoParl
: only the parlamentary bloc. In some commissions, there is not this information.partido
: only the politician’s party. This column is generated by extracting the party names from a dictionary (to access its content, seeTodosPartidos
. More information below) from the columnfuncao_blocoPar
.estado
: State of the politician. This column is generated by extracting the states abbreviation from the columnfuncao_blocoPar
using a dictionary.
complemento
: some complement like “in order”, “off the microphone”, “as rapporteur”, “to question by videoconference”, etc.fala
: the text of the speeches.
When we run the str()
in this tibble, we can see
attr(*, "cod")= chr "2606"
at the end. This means the attribute cod
,
the code of the commission that we passed in meetings()
.
To construct the column “partidos” (parties), using a dictionary with
parties’ names, the script extracts it from the column
funcao_blocoPar
. This dictionary was constructed using the TSE
list, but
this list shows only the actual parties. Because it uses a dictionary,
it is possible - especially for old notes - that some parties are not
captured in the “partido” column. If there is any party not listed here,
please contact me (or add it manually yourself into the
“data/partidos.txt”).
TodosPartidos
#> [1] "AGIR" "AVANTE" "CIDADANIA" "DC"
#> [5] "DEM" "MDB" "NOVO" "PATRIOTA"
#> [9] "PC" "PCB" "PCO" "PCdoB"
#> [13] "PDT" "PL" "PMB" "PMDB"
#> [17] "PMN" "PODE" "PODEMOS" "PP"
#> [21] "PPS" "PROS" "PRTB" "PSB"
#> [25] "PSC" "PSD" "PSDB" "PSL"
#> [29] "PSOL" "PSTU" "PT" "PTB"
#> [33] "PTC" "PV" "REDE" "REPUBLICANOS"
#> [37] "SOLIDARIEDADE" "UNIÃO" "UP"
To download all the available files, just use
download_all( meetings_dataframe )
reunioes_slice <- reunioesDF[1:3,] # only the first lines for this example
download_all( reunioes_slice )
#> File "/2606/rds/NT_9-Oitiva.Rds" already downloaded.
#> File "/2606/rds/NT_9-Oitiva.Rds" already downloaded.
#> File "/2606/rds/NT_8-1_PARTE-Depoimento_de_Mauro_Cesar_Barbosa_Cid_2_PARTE-Deliberativa.Rds" do NOT exists locally. Processing...
#> Processing cod:2606, meeting: 8, "1ª PARTE - Depoimento de Mauro Cesar Barbosa Cid, 2ª PARTE - Deliberativa", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/11621"
#> Waiting 3.5 seconds between the requisitions
And to bind (rbind) / unite all this files together into a single
tibble/dataframe, use the function bindAll_TN(code)
:
bindAll_TN(2606) # bind all downloaded
#> /home/alisson/Documentos/Programação/R/notasTaq/2606/rds//NT_8-1_PARTE-Depoimento_de_Mauro_Cesar_Barbosa_Cid_2_PARTE-Deliberativa.Rds/home/alisson/Documentos/Programação/R/notasTaq/2606/rds//NT_9-Oitiva.Rds
#> /home/alisson/Documentos/Programação/R/notasTaq/2606/rds//NT_8-1_PARTE-Depoimento_de_Mauro_Cesar_Barbosa_Cid_2_PARTE-Deliberativa.Rds
#> /home/alisson/Documentos/Programação/R/notasTaq/2606/rds//NT_9-Oitiva.Rds
#> # A tibble: 2,092 × 9
#> reuniao data nome funcao_blocoPar BlocoParl partido estado complemento
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 8 2023-07-11 Arth… PRESIDENTE (Arthur … UNIÃO BA "Fala da P…
#> 2 8 2023-07-11 MARC… (PL - RO) (PL - RO) PL RO ""
#> 3 8 2023-07-11 Arth… PRESIDENTE (Arthur … UNIÃO BA ""
#> 4 8 2023-07-11 MARC… (PL - RO) (PL - RO) PL RO ""
#> 5 8 2023-07-11 Arth… PRESIDENTE (Arthur … UNIÃO BA ""
#> 6 8 2023-07-11 MARC… (PL - RO) (PL - RO) PL RO ""
#> 7 8 2023-07-11 Arth… PRESIDENTE (Arthur … UNIÃO BA ""
#> 8 8 2023-07-11 MARC… (PL - RO. Pela… (PL - RO… PL RO "Pela orde…
#> 9 8 2023-07-11 Arth… PRESIDENTE (Arthur … UNIÃO BA "Fazendo s…
#> 10 8 2023-07-11 MARC… (PL - RO) (PL - RO) PL RO ""
#> # ℹ 2,082 more rows
#> # ℹ 1 more variable: fala <chr>
Use the function get_all_tn()
to obtain a single tibble/dataframe with
the structured text of all meetings of all days of the commission. In
the example below, we use just a few lines.
df2606 <- reunioesDF[1:3,] |> get_all_tn()
#> running 1 of 2
#> Processing cod:2606, meeting: 9, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/11621"
#> waiting 3 seconds until the next requisition
#> running 2 of 2
#> Processing cod:2606, meeting: 8, "1ª PARTE - Depoimento de Mauro Cesar Barbosa Cid, 2ª PARTE - Deliberativa", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/11621"
#> waiting 3 seconds until the next requisition
df2606
#> # A tibble: 2,092 × 9
#> reuniao data nome funcao_blocoPar BlocoParl partido estado complemento
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 8 2023-08-01 Arth… PRESIDENTE (Arthur … UNIÃO BA "Fala da P…
#> 2 8 2023-08-01 MARC… (PL - RO) (PL - RO) PL RO ""
#> 3 8 2023-08-01 Arth… PRESIDENTE (Arthur … UNIÃO BA ""
#> 4 8 2023-08-01 MARC… (PL - RO) (PL - RO) PL RO ""
#> 5 8 2023-08-01 Arth… PRESIDENTE (Arthur … UNIÃO BA ""
#> 6 8 2023-08-01 MARC… (PL - RO) (PL - RO) PL RO ""
#> 7 8 2023-08-01 Arth… PRESIDENTE (Arthur … UNIÃO BA ""
#> 8 8 2023-08-01 MARC… (PL - RO. Pela… (PL - RO… PL RO "Pela orde…
#> 9 8 2023-08-01 Arth… PRESIDENTE (Arthur … UNIÃO BA "Fazendo s…
#> 10 8 2023-08-01 MARC… (PL - RO) (PL - RO) PL RO ""
#> # ℹ 2,082 more rows
#> # ℹ 1 more variable: fala <chr>
From beginning to end, if you want to get the full content of, let’s say the commission 2292 (about Fake News), you’ll use the following commands:
info <- get_info(2292)
NT2292 <- meetings(info$codcol, info$start_date) |> get_all_tn()
#> running 1 of 24
#> Processing cod:2292, meeting: 24, "Deliberativa", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9686"
#> waiting 3 seconds until the next requisition
#> running 2 of 24
#> Processing cod:2292, meeting: 23, "1ª PARTE - Oitiva, 2ª PARTE - Oitiva, 3ª PARTE - Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9686"
#> waiting 3 seconds until the next requisition
#> running 3 of 24
#> Processing cod:2292, meeting: 22, "1ª PARTE - Oitiva, 2ª PARTE - Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9648"
#> waiting 3 seconds until the next requisition
#> running 4 of 24
#> Processing cod:2292, meeting: 21, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9643"
#> waiting 3 seconds until the next requisition
#> running 5 of 24
#> Processing cod:2292, meeting: 20, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9613"
#> waiting 3 seconds until the next requisition
#> running 6 of 24
#> Processing cod:2292, meeting: 19, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9612"
#> waiting 3 seconds until the next requisition
#> running 7 of 24
#> Processing cod:2292, meeting: 18, "Deliberativa", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9572"
#> waiting 3 seconds until the next requisition
#> running 8 of 24
#> Processing cod:2292, meeting: 17, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9512"
#> waiting 3 seconds until the next requisition
#> running 9 of 24
#> Processing cod:2292, meeting: 16, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9511"
#> waiting 3 seconds until the next requisition
#> running 10 of 24
#> Processing cod:2292, meeting: 15, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9472"
#> waiting 3 seconds until the next requisition
#> running 11 of 24
#> Processing cod:2292, meeting: 14, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9471"
#> waiting 3 seconds until the next requisition
#> running 12 of 24
#> Processing cod:2292, meeting: 13, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9413"
#> waiting 3 seconds until the next requisition
#> running 13 of 24
#> Processing cod:2292, meeting: 12, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9412"
#> waiting 3 seconds until the next requisition
#> running 14 of 24
#> Processing cod:2292, meeting: 11, "Audiência Pública Interativa", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9379"
#> waiting 3 seconds until the next requisition
#> running 15 of 24
#> Processing cod:2292, meeting: 10, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9333"
#> waiting 3 seconds until the next requisition
#> running 16 of 24
#> Processing cod:2292, meeting: 9, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9320"
#> waiting 3 seconds until the next requisition
#> running 17 of 24
#> Processing cod:2292, meeting: 8, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9319"
#> waiting 3 seconds until the next requisition
#> running 18 of 24
#> Processing cod:2292, meeting: 7, "Oitiva", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9314"
#> waiting 3 seconds until the next requisition
#> running 19 of 24
#> Processing cod:2292, meeting: 6, "1ª PARTE - Deliberativa, 2ª PARTE - Eleição", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9282"
#> waiting 3 seconds until the next requisition
#> running 20 of 24
#> Processing cod:2292, meeting: 5, "Audiência Pública Interativa", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9253"
#> waiting 3 seconds until the next requisition
#> running 21 of 24
#> Processing cod:2292, meeting: 4, "Deliberativa", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9139"
#> waiting 3 seconds until the next requisition
#> running 22 of 24
#> Processing cod:2292, meeting: 3, "Deliberativa", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9094"
#> waiting 3 seconds until the next requisition
#> running 23 of 24
#> Processing cod:2292, meeting: 2, "Deliberativa", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9046"
#> waiting 3 seconds until the next requisition
#> running 24 of 24
#> Processing cod:2292, meeting: 1, "Instalação e Eleição", from the URL: "http://www25.senado.leg.br/web/atividade/notas-taquigraficas/-/notas/r/9005"
#> waiting 3 seconds until the next requisition
str(NT2292)
#> tibble [12,032 × 9] (S3: tbl_df/tbl/data.frame)
#> $ reuniao : chr [1:12032] "23" "23" "23" "23" ...
#> $ data : chr [1:12032] "2020-03-17" "2020-03-17" "2020-03-17" "2020-03-17" ...
#> $ nome : chr [1:12032] "Ricardo Barros" "MARCOS AURÉLIO CARVALHO" "Ricardo Barros" "CAROLINE DE TONI" ...
#> $ funcao_blocoPar: chr [1:12032] "PRESIDENTE" "(Para depor.)" "PRESIDENTE" "(PSL - SC. Pela ordem.)" ...
#> $ BlocoParl : chr [1:12032] "(Ricardo Barros. PP - PR)" "(Para depor.)" "(Ricardo Barros. PP - PR)" "(PSL - SC. Pela ordem.)" ...
#> $ partido : chr [1:12032] "PP" NA "PP" "PSL" ...
#> $ estado : chr [1:12032] "PR" NA "PR" "SC" ...
#> $ complemento : chr [1:12032] "" "(Para depor" "" "Pela ordem" ...
#> $ fala : chr [1:12032] "Havendo número regimental, declaro aberta a 23ª Reunião da Comissão Parlamentar Mista de Inquérito, criada pelo"| __truncated__ "Boa tarde a todos. É uma satisfação de verdade estar aqui, Presidente, nessa CPMI, que está prestando um excele"| __truncated__ "Obrigado pela sua disposição de comparecer à CPI. 13:12 R Aguardando o Relator, que fará os seus q"| __truncated__ "Presidente, antes, eu gostaria de saber se o autor do requerimento vai... O autor do requerimento é o Deputado."| __truncated__ ...
ALWAYS check if the structuration worked as expected before filtering or doing any analysis. This parser relies on regular expressions, so it can capture what we don’t want or fail to capture what we wanted.
But this not the only source of problems: the data source can come with
different pattern, causing problems in parsing. The column with names
(called nomes
) is where we can find probably thsi kind of mistakes.
The same person can have their name written in different ways, with and
without accents, sometimes with different surnames. So it’s essential to
always check the names before you make your analysis.
participantes <- NT2292 |> dplyr::pull(nome)
participantes |> sort() |> toupper()|> unique()
#> [1] "ADRIELE BRITO"
#> [2] "ADRIELE BRITTO"
#> [3] "ALENCAR SANTANA BRAGA"
#> [4] "ALESSANDRO BARRETO"
#> [5] "ALESSANDRO VIEIRA"
#> [6] "ALEXANDRE CASTRO"
#> [7] "ALEXANDRE FROTA"
#> [8] "ALEXANDRE LEITE"
#> [9] "ALLAN DOS SANTOS"
#> [10] "ANA ROSA DO SANTOS"
#> [11] "ANGELO COELHO DA SILVA NETO"
#> [12] "ANGELO CORONEL"
#> [13] "ARNALDO CESAR RICCI JACOB"
#> [14] "ARNALDO CÉSAR RICCI JACOB"
#> [15] "AROLDE DE OLIVEIRA"
#> [16] "ARTHUR OLIVEIRA MAIA"
#> [17] "AUREO RIBEIRO"
#> [18] "BACELAR"
#> [19] "BIA KICIS"
#> [20] "CARLA ZAMBELLI"
#> [21] "CARLOS ALBERTO DOS SANTOS CRUZ"
#> [22] "CARLOS JORDY"
#> [23] "CARLOS ZARATTINI"
#> [24] "CAROLINE DE TONI"
#> [25] "CELSO RUSSOMANNO"
#> [26] "CHICO RODRIGUES"
#> [27] "CORONEL TADEU"
#> [28] "DANIEL BRAMATTI"
#> [29] "DAVID MIRANDA"
#> [30] "DELEGADO ÉDER MAURO"
#> [31] "DIOGO RAIS RODRIGUES MOREIRA"
#> [32] "DR. LEONARDO"
#> [33] "EDGARD MATSUKI"
#> [34] "EDUARDO BOLSONARO"
#> [35] "EDUARDO GIRÃO"
#> [36] "EDUARDO GOMES"
#> [37] "ELMAR NASCIMENTO"
#> [38] "EMERSON WENDT"
#> [39] "ENYLSON FLÁVIO MARTINEZ CAMOLESI"
#> [40] "ESPERIDIÃO AMIN"
#> [41] "FÁBIO ANDRADE"
#> [42] "FELÍCIO LATERÇA"
#> [43] "FERNANDO BARBOSA GUARDA"
#> [44] "FILIPE BARROS"
#> [45] "FLÁVIO BOLSONARO"
#> [46] "FRANCISCO BRITO CRUZ"
#> [47] "GÉSIO PASSOS"
#> [48] "GILMAR HENRIQUE LOPES"
#> [49] "GUIDO AMIN NAVES"
#> [50] "GUSTAVO SANTANA"
#> [51] "GUSTAVO SANTANA BORGES"
#> [52] "HANS RIVER DO RIO NASCIMENTO"
#> [53] "HUMBERTO COSTA"
#> [54] "IVAN VALENTE"
#> [55] "JANDIRA FEGHALI"
#> [56] "JEAN PAUL PRATES"
#> [57] "JOICE CRISTINA HASSELMANN"
#> [58] "JOICE HASSELMANN"
#> [59] "JOSÉ CAUBI DINIZ JÚNIOR"
#> [60] "JOSÉ MEDEIROS"
#> [61] "JÚNIOR BOZZELLA"
#> [62] "KÁTIA ABREU"
#> [63] "LEANDRO GUERRA"
#> [64] "LEONEL AZEVEDO DE AGUIAR"
#> [65] "LÍDICE DA MATA"
#> [66] "LINDOLFO ANTÔNIO ALVES NETO"
#> [67] "LUIZIANNE LINS"
#> [68] "MARCELO RAMOS"
#> [69] "MARCIO BITTAR"
#> [70] "MÁRCIO JERRY"
#> [71] "MÁRCIO LABRE"
#> [72] "MARCO AURÉLIO RUEDIGER"
#> [73] "MARCOS AURÉLIO CARVALHO"
#> [74] "MIGUEL DE ANDRADE FREITAS"
#> [75] "NATÁLIA BONAVIDES"
#> [76] "NATÁLIA LEVIEN LEAL"
#> [77] "NELSINHO TRAD"
#> [78] "NEREU CRISPIM"
#> [79] "O SR. CARLOS FELIPE ALMEIDA D'OLIVEIRA - UM MINUTO? ENTRE 2011 E 2008, OCORRERAM 150 MIL CASOS DE LESÕES AUTOPROVOCADAS NA POPULAÇÃO DESSA FAIXA ETÁRIA; 20% TINHAM TRANSTORNOS MENTAIS - DADOS DA SECRETARIA DE VIGILÂNCIA EM SAÚDE DO MINISTÉRIO. COMO EU DISSE, ENTRE 2011 E 2017, TIVEMOS UM AUMENTO DE 10% DA TAXA DE MORTALIDADE DESSA POPULAÇÃO, QUANDO HAVÍAMOS, EM 2013, ASSINADO UM ACORDO SEGUNDO O QUAL IRÍAMOS REDUZIR EM 10%. 15:06 R AS ORGANIZAÇÕES TÊM TRABALHADO NESSE SENTIDO. TROUXE AQUI EXEMPLOS DE TRABALHOS ESPECIFICAMENTE RELACIONADOS À INTERNET: PREVENÇÃO DO SUICÍDIO NA INTERNET, PELO INSTITUO VITA ALERE - O INSTITUTO VITA ALERE PARTICIPA DA DIRETORIA DA NOSSA ASSOCIAÇÃO - E PREVENÇÃO DO SUICÍDIO NA INTERNET PARA PAIS E EDUCADORES. EU RELATEI AQUI COMO FAZER UM USO POSITIVO DA INTERNET, MAS ESTÁ NAS CARTILHAS, ESTÁ NOS MANUAIS. EM FUNÇÃO DO TEMPO, EU NÃO VOU LER ESSE MATERIAL. AGORA, É IMPORTANTE FALARMOS QUE TEMOS FATORES DE RISCO, MAS TEMOS QUE ATUAR MAIS FORTEMENTE NOS FATORES DE PROTEÇÃO. EM RELAÇÃO À REDE, TEMOS QUE TER MECANISMOS MAIS RÁPIDOS DE RESPOSTA, PORQUE HOJE O QUE ACONTECE É UMA TRANSMISSÃO RÁPIDA, E PRINCIPALMENTE DE IMAGENS, E ESSAS IMAGENS SÃO EXTREMAMENTE DANOSAS SOBRE OS JOVENS. NÃO DÁ TEMPO. NÃO É APENAS \"VAMOS, SIM, LOCALIZAR DE ONDE VEM ESSA MENSAGEM\". ISSO É EFETIVO, ISSO É IMPORTANTE, MAS ANTES DISSO, OS ATOS SUICIDAS ESTÃO ACONTECENDO NA REDE. MUITO OBRIGADO."
#> [80] "O SR. CARLOS FELIPE ALMEIDA D'OLIVEIRA PARA EXPOR"
#> [81] "OMAR AZIZ"
#> [82] "OTONI DE PAULA"
#> [83] "OTTO ALENCAR"
#> [84] "PAULO MARINHO"
#> [85] "PAULO PIMENTA"
#> [86] "PAULO RAMOS"
#> [87] "PEDRO LUPION"
#> [88] "PR. MARCO FELICIANO"
#> [89] "PROFESSORA DAYANE PIMENTEL"
#> [90] "RAFAEL DE ALMEIDA EVANGELISTA"
#> [91] "RANDOLFE RODRIGUES"
#> [92] "RICARDO BARROS"
#> [93] "RICARDO MACHADO"
#> [94] "ROGÉRIO CARVALHO"
#> [95] "ROGÉRIO CORREIA"
#> [96] "ROSE DE FREITAS"
#> [97] "RUI FALCÃO"
#> [98] "SÉRGIO BOECK LÜDTKE"
#> [99] "SHÉRIDAN"
#> [100] "SORAYA THRONICKE"
#> [101] "TAINÃ NALON XAVIER"
#> [102] "THIAGO REIS"
#> [103] "THIAGO TAVARES NUNES DE OLIVERIA"
#> [104] "TÚLIO GADÊLHA"
#> [105] "WALTER CAPANEMA"
#> [106] "WILSON GOMES"
In this example, we can see
- the same person, but different spellings, like: “ADRIELE BRITO” and “ADRIELE BRITTO”
- the same name, but different accentuation like: “ARNALDO CESAR RICCI JACOB” and “ARNALDO CÉSAR RICCI JACOB”
- the same name, but different surnames, like: “JOICE CRISTINA HASSELMANN” and “JOICE HASSELMANN”
- To get the speeches of brazilian deputies, take a look at the package speechbr.
- To understand how a parliamentary inquiry committee works, look here (in portuguese), and a complete list of all commissions in Senate here.
- See a simple example of text analysis of this kind of transcription, but not using the package notasTaq, here (in portuguese).