Este livro está em Revisão aberta. Suas impressões são importantes para torná-lo melhor para você e para outros estudantes. Você pode anotar alguns textos selecionando-os com o cursor e clicando no menu popup. Você também pode ler anotações de outras pessoas: Clique no canto superior direito da página

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()