4.5 Classificação dos textos conforme procedência ou improcedência
O procedimento abaixo classifica os textos das decisões conforme procedência ou improcedência. O trabalho aqui foi recortar as decisões que eram de mérito. Para tanto, aplicamos a técnica de expressões regulares (regex) para identificar padrões nos textos dos dispositivos.
Todo esse trabalho de identificação é heurístico e requer a conjunção de esforços de automação e validação pelo pesquisador. Uma técnica de processamento de linguagem natural muito útil é conhecida como “kwic” (key word in context). Por ela, buscamos uma palavra-chave, e.g., “procedente” em seu contexto, isto é, verificamos todas as vezes que esta palavra aparece no dispositivo e quais as palavras que a antecedem ou que a sucedem. Este procedimento permite observar padrões tais como “não procedente” ou “julgo procedente”. A experiência com classificações em outras pesquisas tem nos permitido reduzir significativamente as chances de erro.
Mesmo quando ocorrem alguns erros, esses são mínimos e podem ser verificados por outros meios, tais como a verificação da consistência da base. Por exemplo, um texto erroneamente classificado como decisão de agravo deve ser contrastado com o tipo de decisão. Se esta foi uma decisão monocrática, claramente não se trata de um agravo.
Por fim, uma particularidade do STF é o uso da expressão “nego seguimento” ora par indicar “improcedência”, ora para indicar uma decisão terminativa sem julgamento do mérito. Esse aspecto representou uma dificuldade a mais, pois foi necessário encontrar outras palavras que indicassem quando a expressão estava sendo usada para julgamento de mérito, e.g. “aderência” ou quando definitivamente não era de mérito, e.g, “súmula 734” ou “sucedâneo” e “atalho”.
Diante da dúvida se a decisão era de mérito ou não, preferiu-se excluí-la. Ao final, depois de todas as exclusões e aplicações de filtros, chegou-se a 5636 casos. Uma amostra foi retirada para realização de validação humana. Não foi identificado nenhum erro. Isso não signfica que a base está isenta de erros de classificação, mas a pesquisadora está segura de que se estes ocorreram, eles foram mínimos e não afetarão significativamente os resultados.
Ainda assim, a próxima etapa da análise, denominada “Exploratory Data Analysis” permite verificar inconsistências ou disparidades nas distribuições e anomalias nos dados. Novas correções são possíveis nesse momento.
texto <- texto %>%
dplyr::mutate(decisao = stringi::stri_trans_tolower(dispositivo),
decisao = abjutils::rm_accent(decisao),
decisao = case_when(
str_detect(decisao,"(nego|negado|negou)\\sseguimento") ~ "nego seguimento",
str_detect(decisao,"(desprov\\w+|improv\\w+|improced\\w+)") ~ "improvido",
str_detect(decisao,"(nao|nega\\w+)\\s+provi.*")~ "improvido",
str_detect(decisao,"(rejeit\\w+|inadmitidos?)") ~ "improvido",
str_detect(decisao,"mantiveram") ~ "improvido",
str_detect(decisao,"(acolho|acolhido)") ~ "provido",
str_detect(decisao,"(deram|da\\-*\\s*se|dando\\-*(se)*|comporta|dou|confere\\-se|se\\s*\\-*da|merece)\\sprovi\\w+") ~ "provido",
str_detect(decisao,"parcial\\w*\\sprovimento") ~ "provido",
str_detect(decisao,"(nao\\sderam|nao\\smerece|se\\snega|nega\\-*\\s*se|negar\\-*\\s*lhe|nao\\scomporta|negram|negararam|nego|negar|negou)") ~ "improvido",
str_detect(decisao,"\\bprovimento") ~ "provido",
str_detect(decisao,"\\bprocedente") ~ "provido",
str_detect(decisao,"(nao\\sconhec\\w+|nao\\sse\\sconhec\\w+)") ~ "não conhecido",
str_detect(decisao,"desconh\\w+") ~ "desconhecido",
str_detect(decisao,"nao\\s+conhec\\w+") ~ "desconhecido",
str_detect(decisao,"(homolog|desistencia)") ~ "desistência",
str_detect(decisao,"diligencia") ~ "conversão em diligência",
str_detect(decisao,"sobrest") ~ "sobrestado",
str_detect(decisao,"prejudicad\\w*") ~ "prejudicado",
str_detect(decisao,"(anular\\w*|nulo|nula|nulidade)") ~ "anulado",
TRUE ~ "outros"))
texto <- texto %>%
mutate(decisao = case_when(
decisao == "provido" ~ "procedente",
decisao == "improvido" ~ "improcedente",
TRUE ~ decisao
))
improcedente <- texto %>%
filter(decisao == "improcedente")
procedente <- texto %>%
filter(decisao == "procedente")
seguimento <- texto %>%
filter(decisao=="nego seguimento")
prejudicado<-texto %>%
filter(decisao=="prejudicado/extinto")
sobrestado <- texto %>%
filter(decisao=="sobrestado")
outros <- texto %>%
filter(decisao=="outros")
sucedaneo <- seguimento %>%
select(texto,docname) %>%
quanteda::corpus("docname","texto") %>%
quanteda::kwic("(?i)(suced[aâ]neo|\\bpresta\\b|atalho)",window = 20,valuetype = "regex") %>%
as_tibble()
sucedaneo<-sucedaneo %>%
filter(keyword!="presta-se") %>%
pull("docname") %>%
unique()
seguimento <- seguimento %>%
filter(!docname %in% sucedaneo)
sumula_734 <- seguimento %>%
filter(str_detect(texto,"\\b734\\b")) %>%
pull("docname") %>%
unique()
seguimento <- seguimento %>%
filter(!docname %in% sumula_734)
aderencia <- seguimento %>%
select(texto,docname) %>%
quanteda::corpus("docname","texto") %>%
quanteda::kwic("(?i)ader.ncia",window = 20,valuetype = "regex") %>%
as_tibble()