Quarto 1

Autor

Alceu Eilert Nascimento

Data de Publicação

27 de agosto de 2023

Introdução

Este relatório é para desenvolver as funcionalidades do Quarto para um HTML usando a base de dados do Superior Tribunal de Justiça.

Dados

Fonte os dados

Vamos utilizar o Portal de Dados Abertos do STJ para obter os dataset de Jurisprudência no formato de Espelhos de Acordão da, pegando a 3ª Turma, por exemplo.

Obtendo os dados

Fazer o download do arquivo para alguma data, por exemplo, 31/05/2022.

Mostre o código
# defina a url alvo para download dos dados
url <- "https://dadosabertos.web.stj.jus.br/dataset/74a99dea-a197-4d73-a169-d8c8f8f0b175/resource/b61e0c9a-ba07-4322-99b6-d54e7a914d8d/download/20220531.json"

# obtenha o arquivo json raw para o R 
data <- jsonlite::fromJSON(url, flatten = TRUE) 

# obtenha o arquivo json raw para o R sem transformar em uma estrutura tabular
json.raw <- jsonlite::fromJSON(url, simplifyVector = FALSE) 
Dica

A estrutura do JSON pode ser confusa pois você tem listas dentro de listas e assim por diante. É preciso quebrar estas listas e obter as variáveis.

Chamando os dados

Por exemplo, se você chamar json.raw[[1]]você obtem todas as variaveis e os valores do item 1,

Mostre o código
# chamar todas os valores e variaveis do item 1
json.raw[[1]]
$id
[1] "000815869"

$numeroProcesso
[1] "1972512"

$numeroRegistro
[1] "202103489673"

$siglaClasse
[1] "REsp"

$descricaoClasse
[1] "RECURSO ESPECIAL"

$nomeOrgaoJulgador
[1] "TERCEIRA TURMA"

$ministroRelator
[1] "NANCY ANDRIGHI"

$dataPublicacao
[1] "DJE        DATA:30/05/2022"

$ementa
[1] "PROCESSUAL CIVIL. RECURSOS ESPECIAIS. AÇÃO DE INSTITUIÇÃO DE JUÍZO\nARBITRAL. ARBITRAGEM. PRINCÍPIO DO KOMPETENZ-KOMPETENZ. DIREITO\nDISPONÍVEL. COMPETÊNCIA DO JUIZO ARBITRAL.\n1. Recurso especial interposto em 19/11/2020 e concluso ao gabinete\nem 13/12/2021.\n2. Cuida-se de ação de instituição de juízo arbitral.\n3. É firme a jurisprudência do STJ no sentido de que não há ofensa\nao art. 1.022, do CPC/15, quando o Tribunal de origem, aplicando o\ndireito que entende cabível à hipótese, soluciona integralmente a\ncontrovérsia submetida à sua apreciação, ainda que de forma diversa\ndaquela pretendida pela parte. Precedentes.\n4. Na hipótese, não há discussão sobre a interpretação do contrato e\nda convenção de arbitragem que embasaram o procedimento, pois se\ndefine somente qual é o juízo competente para deliberar sobre a\nlegitimidade processual da parte que invoca cláusula compromissória\nde arbitragem.\n5. Para o ajuizamento de ação de instituição do juízo arbitral, são\nindispensáveis a existência de cláusula compromissória e a\nresistência de uma das partes à sua instituição, requisitos\npresentes na hipótese (art. 7º da Lei 9.307/96).\n6. A ação de instituição de arbitragem só pode ser extinta sem\nresolução de mérito conforme o que determina o art. 07, §5º, da Lei\n9.307/96.\n7. A jurisprudência desta Corte, com fundamento no princípio da\ncompetência-competência, orienta que a discussão relativa a\nexistência, validade, eficácia e extensão da cláusula compromissória\ndeve, em regra, ser submetida, em primeiro lugar, ao juízo\narbitral. Precedentes.\n8. Cumpre ao árbitro, primordialmente, dirimir controvérsias sobre a\nlegitimidade das partes envolvidas em função de eventual\nsubjetividade de cláusula arbitral pactuada.\n9. Recurso especial de Alstom Brasil Energia e Transporte Ltda e\noutra conhecido e provido.\n10. Recurso especial de Companhia Cearense de Transportes\nMetropolitanos (METROFOR) prejudicado."

$tipoDeDecisao
[1] "ACÓRDÃO"

$dataDecisao
[1] "20220524"

$decisao
[1] "Vistos, relatados e discutidos estes autos, acordam os Ministros da\nTerceira Turma do Superior Tribunal de Justiça, na conformidade dos\nvotos e das notas taquigráficas constantes dos autos,  Prosseguindo\nno julgamento, após o voto-vista do Sr. Ministro Ricardo Villas Bôas\nCueva, inaugurando a divergência,  por maioria, dar provimento ao\nrecurso especial interposto por Alstom Brasil Energia e Transporte\nLtda e Outro e julgar prejudicado o recurso especial da Companhia\nCearense de Transportes Metropolitanos, nos termos do voto da Sra.\nMinistra Relatora. Votou vencido o Sr. Ministro Ricardo Villas Bôas\nCueva. Os Srs. Ministros Paulo de Tarso Sanseverino, Marco Aurélio\nBellizze e Moura Ribeiro votaram com a Sra. Ministra Relatora."

$jurisprudenciaCitada
NULL

$notas
NULL

$informacoesComplementares
[1] "Aguardando análise."

$termosAuxiliares
NULL

$teseJuridica
NULL

$tema
NULL

$referenciasLegislativas
list()

$acordaosSimilares
list()

Veja que cada uma das varíáveis está precedida por um $ e elas são numeradas cardinalmente, sendo que $id é a [[1]] , RESP é [[4] e assim por diante.

Para obter os dados de uma das variáveis e um dos items fazemos:

Mostre o código
# chamar os valores da variavel 12 do item 1
json.raw[[1]][[12]]
[1] "Vistos, relatados e discutidos estes autos, acordam os Ministros da\nTerceira Turma do Superior Tribunal de Justiça, na conformidade dos\nvotos e das notas taquigráficas constantes dos autos,  Prosseguindo\nno julgamento, após o voto-vista do Sr. Ministro Ricardo Villas Bôas\nCueva, inaugurando a divergência,  por maioria, dar provimento ao\nrecurso especial interposto por Alstom Brasil Energia e Transporte\nLtda e Outro e julgar prejudicado o recurso especial da Companhia\nCearense de Transportes Metropolitanos, nos termos do voto da Sra.\nMinistra Relatora. Votou vencido o Sr. Ministro Ricardo Villas Bôas\nCueva. Os Srs. Ministros Paulo de Tarso Sanseverino, Marco Aurélio\nBellizze e Moura Ribeiro votaram com a Sra. Ministra Relatora."

Para obter uma lista somente com uma das variáveis, por exemplo, a decisao:

Mostre o código
# cria um objeto com os valores da variável 12
json.raw.decisao <- sapply(json.raw, function(x) x[[12]])

# chama os primeiros valores do objeto
head(json.raw.decisao)
[1] "Vistos, relatados e discutidos estes autos, acordam os Ministros da\nTerceira Turma do Superior Tribunal de Justiça, na conformidade dos\nvotos e das notas taquigráficas constantes dos autos,  Prosseguindo\nno julgamento, após o voto-vista do Sr. Ministro Ricardo Villas Bôas\nCueva, inaugurando a divergência,  por maioria, dar provimento ao\nrecurso especial interposto por Alstom Brasil Energia e Transporte\nLtda e Outro e julgar prejudicado o recurso especial da Companhia\nCearense de Transportes Metropolitanos, nos termos do voto da Sra.\nMinistra Relatora. Votou vencido o Sr. Ministro Ricardo Villas Bôas\nCueva. Os Srs. Ministros Paulo de Tarso Sanseverino, Marco Aurélio\nBellizze e Moura Ribeiro votaram com a Sra. Ministra Relatora."
[2] "Vistos, relatados e discutidos estes autos, acordam os Ministros da\nTerceira Turma do Superior Tribunal de Justiça, na conformidade dos\nvotos e das notas taquigráficas constantes dos autos,   por\nunanimidade, dar provimento ao recurso especial nos termos do voto\nda Sra. Ministra Relatora. Os Srs. Ministros Paulo de Tarso\nSanseverino, Ricardo Villas Bôas Cueva, Marco Aurélio Bellizze e\nMoura Ribeiro votaram com a Sra. Ministra Relatora."                                                                                                                                                                                                                                                                                                             
[3] "Vistos e relatados estes autos em que são partes as acima indicadas,\nacordam os Ministros da Terceira Turma, por unanimidade, não\nconhecer do recurso especial de Susana da Silva Carvalho-Firma\nIndividual e negar provimento ao recurso especial de Polymer\nIndústria e Comércio de Plástico Ltda, nos termos do voto do Sr.\nMinistro Relator.\nOs Srs. Ministros Nancy Andrighi, Paulo de Tarso Sanseverino,\nRicardo Villas Bôas Cueva (Presidente) e Marco Aurélio Bellizze\nvotaram com o Sr. Ministro Relator."                                                                                                                                                                                                                                                
[4] "Vistos e relatados estes autos em que são partes as acima indicadas,\nacordam os Ministros da Terceira Turma, por unanimidade, negar\nprovimento ao recurso especial, nos termos do voto do Sr. Ministro\nRelator.\nOs Srs. Ministros Marco Aurélio Bellizze, Moura Ribeiro, Nancy\nAndrighi e Paulo de Tarso Sanseverino votaram com o Sr. Ministro\nRelator."                                                                                                                                                                                                                                                                                                                                                                                                            
[5] "Vistos e relatados estes autos em que são partes as acima indicadas,\nacordam os Ministros da Terceira Turma do Superior Tribunal de\nJustiça,  por unanimidade, acolher os embargos de declaração, nos\ntermos do voto do Sr. Ministro Relator.\nOs Srs. Ministros Nancy Andrighi, Paulo de Tarso Sanseverino e\nRicardo Villas Bôas Cueva (Presidente) votaram com o Sr. Ministro\nRelator."                                                                                                                                                                                                                                                                                                                                                                             
[6] "Vistos e relatados estes autos em que são partes as acima\nindicadas, acordam os Ministros da TERCEIRA TURMA do Superior\nTribunal de Justiça, em sessão virtual de 17/05/2022 a 23/05/2022,\npor unanimidade, negar provimento ao recurso, nos termos do voto da\nSra. Ministra Relatora.\nOs Srs. Ministros Paulo de Tarso Sanseverino, Ricardo Villas Bôas\nCueva, Marco Aurélio Bellizze e Moura Ribeiro  votaram com a Sra.\nMinistra Relatora.\nPresidiu o julgamento o Sr. Ministro Ricardo Villas Bôas Cueva."                                                                                                                                                                                                                                                     
Importante

É possível perceber que a análise só funciona com uma base de dados higienizada. A analise do arquivo cru apresenta erros, pois o mesmo valor “dano moral” aparece de diversas formas pela variação da grafia.

Manipulando os dados

Vamos identificar quantas decisões foram tomar de forma unânime pelos ministros. Para isto, vamos utilizar a palavra-alvo “unanimidade” a ser pesquisada na variável “decisão”.

Mostre o código
# Começa fazendo uma lista para guardar o contador de palavras
word_counts <- list()

# Define a palavra-alvo.
target_word <- "unanimidade"

# Chama os dados no JSON e conta as ocorrencias da palavra-alvo.
for (i in seq_along(data$ministroRelator)) {
  name <- data$ministroRelator[i]
  text <- data$decisao[i]
  
  # Usa a função str_count para contar as ocorrencias (insesivel a caixa alta/baixa).
  count <- sum(stringr::str_count(tolower(text), target_word))
  
  # Autualiza a contagem por pessoa da lista.
  if (name %in% names(word_counts)) {
    word_counts[[name]] <- word_counts[[name]] + count
  } else {
    word_counts[[name]] <- count
  }
}

# Imprime a contagem por pessoa.
for (name in names(word_counts)) {
  count <- word_counts[[name]]
  cat(paste(name, ": ", count, " ocorrências de'unanimidade'\n"))
}
NANCY ANDRIGHI :  118  ocorrências de'unanimidade'
MOURA RIBEIRO :  115  ocorrências de'unanimidade'
RICARDO VILLAS BÔAS CUEVA :  86  ocorrências de'unanimidade'
MARCO AURÉLIO BELLIZZE :  154  ocorrências de'unanimidade'
PAULO DE TARSO SANSEVERINO :  80  ocorrências de'unanimidade'

Agora vamos ver em quantas decisões o resultado de de negar provimento ao recurso.Para isto, vamos utilizar a palavra-alvo “negar provimento” a ser pesquisada na variável “decisão”.

Mostre o código
# Começa fazendo uma lista para guardar o contador de palavras
word_counts.2 <- list()

# Define a palavra-alvo.
target_word.2 <- "negar provimento"

# Chama os dados no JSON e conta as ocorrencias da palavra-alvo.
for (i in seq_along(data$ministroRelator)) {
  name <- data$ministroRelator[i]
  text <- data$decisao[i]
  
  # Usa a função str_count para contar as ocorrencias (insesivel a caixa alta/baixa).
  count.2 <- sum(stringr::str_count(tolower(text), target_word.2))
  
  # Autualiza a contagem por pessoa da lista.
  if (name %in% names(word_counts.2)) {
    word_counts.2[[name]] <- word_counts.2[[name]] + count.2
  } else {
    word_counts.2[[name]] <- count.2
  }
}

# Imprime a contagem por pessoa.
for (name in names(word_counts.2)) {
  count.2 <- word_counts.2[[name]]
  cat(paste(name, ": ", count.2, " ocorrências de 'negar provimento'\n"))
}
NANCY ANDRIGHI :  85  ocorrências de 'negar provimento'
MOURA RIBEIRO :  96  ocorrências de 'negar provimento'
RICARDO VILLAS BÔAS CUEVA :  76  ocorrências de 'negar provimento'
MARCO AURÉLIO BELLIZZE :  141  ocorrências de 'negar provimento'
PAULO DE TARSO SANSEVERINO :  62  ocorrências de 'negar provimento'

Analisando

Encontradas as decisões unânimes por ministro relator, vamos tabular os dados numa tabela, comparand com os numeros totais e identificando uma “taxa de acompanhamento” por cada ministro relator. Aquele ministro que tiver uma taxa de 1.0, significa que em todos os processo em que foi relator, a decisão foi por unanimidade.

Mostre o código
# Cria um data frame da lista de contagem de palavras.
word_counts_df <- data.frame(
  Relator = names(word_counts),
  Unanimidade = unlist(word_counts)
)

# Organiza o dataframe pela coluna de contagem em ordem decrescente.
word_counts_df <- word_counts_df[order(-word_counts_df$Unanimidade), ]

# Cria um dataframe para guardar o total de entradas para cada nome.
total_counts_df <- data.frame(
  Relator = names(word_counts),
  Todas = sapply(names(word_counts), function(name) {
    sum(data$ministroRelator == name)
  })
)

# Funde os dois dataframes baseado na coluna "Relator".
result_df <- merge(word_counts_df, total_counts_df, by = "Relator", all.x = TRUE)

# Calcula a frequencia relativa.
result_df$Taxa <- result_df$Unanimidade / result_df$Todas

# Organiza a tabela usando a coluna Taxa do maior para o menor.
result_df <- result_df %>%
  arrange(desc(Taxa))

# Produz a tabela usando o KableExtra
kableExtra::kable(result_df)
Relator Unanimidade Todas Taxa
MARCO AURÉLIO BELLIZZE 154 154 1.0000000
RICARDO VILLAS BÔAS CUEVA 86 87 0.9885057
NANCY ANDRIGHI 118 120 0.9833333
MOURA RIBEIRO 115 117 0.9829060
PAULO DE TARSO SANSEVERINO 80 82 0.9756098

Agora vamos ver a taxa de insucesso dos recursos

Mostre o código
# Cria um data frame da lista de contagem de palavras.
word_counts_df.2 <- data.frame(
  Relator = names(word_counts.2),
  Desprovimento = unlist(word_counts.2)
)

# Organiza o dataframe pela coluna de contagem em ordem decrescente.
word_counts_df.2 <- word_counts_df.2[order(-word_counts_df.2$Desprovimento), ]

# Cria um dataframe para guardar o total de entradas para cada nome.
total_counts_df.2 <- data.frame(
  Relator = names(word_counts.2),
  Todas = sapply(names(word_counts), function(name) {
    sum(data$ministroRelator == name)
  })
)

# Funde os dois dataframes baseado na coluna "Relator".
result_df.2 <- merge(word_counts_df.2, total_counts_df, by = "Relator", all.x = TRUE)

# Calcula a frequencia relativa.
result_df.2$Taxa <- result_df.2$Desprovimento / result_df.2$Todas

# Organiza a tabela usando a coluna Taxa do maior para o menor.
result_df.2 <- result_df.2 %>%
  arrange(desc(Taxa))

# Produz a tabela usando o KableExtra
kableExtra::kable(result_df.2)
Relator Desprovimento Todas Taxa
MARCO AURÉLIO BELLIZZE 141 154 0.9155844
RICARDO VILLAS BÔAS CUEVA 76 87 0.8735632
MOURA RIBEIRO 96 117 0.8205128
PAULO DE TARSO SANSEVERINO 62 82 0.7560976
NANCY ANDRIGHI 85 120 0.7083333

Conclusão

Não houve divergência quando o ministro relator foi o MARCO AURÉLIO BELLIZZE. De maneira geral, das decisões preferidas (560), maioria (553) é tomada por unanimidade, o que resulta numa taxa de conformidade de 98.75%.

A maioria dos recursos não tem sucesso, sendo negado provimento em 82.1428571% dos recursos.

Referências