Match a partir do nome.

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.

Join utilizando o nome sem honoríficos

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.

Fuzzy matching - Qgram

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.