deputados_nome = falas %>%
inner_join(deputados,
by = c("nome", "uf", "partido"),
keep = T,
suffix = c("_falas", "_meta")) %>%
select(id, nome_falas, nome_meta, uf_falas,
uf_meta, partido_falas, partido_meta) %>%
unique()
matches <- deputados_nome %>%
summarise(matches = n()) %>%
pull(matches)
Utilizando o nome, 228 deputados foram recuperados.
PADRAO = "(?i)deputado|deputada|-|a dra|a sr|o sr|coordenador|coordenadora|entrevistadora|ministro|moderador|presidente|presidenta|relator|repórter"
deputados_sem_honorificos = falas %>%
mutate(sem_honorifico = str_trim(str_remove(string = nome, pattern = PADRAO))) %>%
inner_join(deputados,
by = c("sem_honorifico" = "nome", "uf", "partido")) %>%
select(id, nome, sem_honorifico, uf, partido) %>%
unique()
matches_sem_honorificos <- deputados_sem_honorificos %>%
summarise(matches = n()) %>%
pull(matches)
Utilizando os nomes sem honorificos, 227 deputados foram recuperados.
library(fuzzyjoin)
deputados_qgram = falas %>%
stringdist_join(deputados,
mode = "inner",
max_dist = 1,
by = c(nome = "nome"),
method = "qgram") %>%
rename_with(gsub, pattern = '\\.x', replacement = '_falas') %>%
rename_with(gsub, pattern = '\\.y', replacement = '_meta') %>%
select(id, nome_falas, nome_meta, uf_falas, uf_meta) %>%
unique()
matches_qgram <- deputados_qgram %>%
summarise(matches = n()) %>%
pull(matches)
Utilizando fuzzy matching com o qgram, 378 deputados foram recuperados, mas com matches errados. Os deputados associados incorretamente estão listados abaixo.
erros <- deputados_qgram %>%
filter(nome_meta != nome_falas,
!(id %in% c(160601, 178944, 139260))) %>%
select(id, nome_meta, nome_falas)
erros %>% reactable(striped = T, searchable = T)
Obs.: Alguns ids foram ignorados aqui para que a tabela mostrasse apenas as situações onde o match falha. Esses ids precisaram ser ignorados pois representam situações onde o fuzzy matching foi bem sucedido entre nomes que estão escritos de formas diferentes. A tabela abaixo lista estas situações.