Skip to contents

ac_readability() estima a legibilidade (facilidade de leitura) dos documentos de um ac_corpus, usando o Índice de Legibilidade de Flesch adaptado ao português por Martins et al. (1996) a partir da fórmula original de Flesch (1948).

É uma ferramenta de diagnóstico, não de julgamento de qualidade: um texto "difícil" pelo índice pode ser exatamente o esperado: uma decisão judicial, um artigo técnico, uma bula de remédio. O uso típico é comparativo: saber se o manual de instruções do produto A é mais acessível que o do produto B, se a imprensa simplificou a linguagem de comunicados oficiais ao longo do tempo, ou se avaliações de um produto em um site de e-commerce variam em complexidade por categoria.

A fórmula depende da contagem de sílabas por palavra, que a função estima contando grupos de vogais (heurística comum em legibilidade automática, já que não há dicionário de sílabas open-source completo para português). Isso introduz algum erro em palavras com hiatos, ditongos ou dígrafos vocálicos, mas a estimativa costuma ficar próxima da contagem manual para fins comparativos.

Usage

ac_readability(corpus, by = NULL)

Arguments

corpus

Objeto ac_corpus.

by

Coluna(s) de agrupamento para agregar a legibilidade além do documento (ex.: "categoria", "fonte", "ano"). Padrão: NULL (uma linha por documento).

Value

Tibble com colunas:

  • doc_id (ou as colunas de by, se informado);

  • n_palavras, n_frases, n_silabas: contagens usadas na fórmula;

  • flesch: Índice de Legibilidade de Flesch adaptado ao português (tipicamente 0-100, mas sem teto nem piso matemático: textos muito densos podem produzir valores negativos; valores mais altos = texto mais fácil de ler);

  • nivel: interpretação categórica do índice (ver @details).

Details

A fórmula (Martins et al., 1996) é: $$ILF = 248{,}835 - 1{,}015 \times \frac{palavras}{frases} - 84{,}6 \times \frac{sílabas}{palavras}$$

Faixas de interpretação de Martins et al. (1996), que calibraram a fórmula em livros didáticos brasileiros:

  • >= 75: muito fácil (1º ao 5º ano do ensino fundamental);

  • 50-74,9: fácil (6º ao 9º ano);

  • 25-49,9: difícil (ensino médio e superior);

  • < 25: muito difícil (textos acadêmicos/especializados).

Contagens aproximadas. As sílabas são estimadas por grupos de vogais contíguas, heurística usual em legibilidade automática: acerta ditongos ("cai-xa"), mas conta hiatos como uma sílaba só ("sa-ú-de" vira 2), o que tende a subestimar sílabas e superestimar o índice. As frases são separadas em ., ! e ?, então abreviações ("Sr.", "art.") e números decimais ("3.5") inflam o número de frases. Ao comparar grupos de textos do mesmo gênero, o viés é parecido nos dois lados; para afirmar o nível absoluto de um texto, confira uma amostra à mão.

References

Flesch, R. (1948). A New Readability Yardstick. Journal of Applied Psychology, 32(3), 221-233.

Martins, T. B. F., Ghiraldelo, C. M., Nunes, M. G. V., Oliveira Jr., O. N. (1996). Readability formulas applied to textbooks in Brazilian Portuguese. ICMSC Technical Report, 28.

Examples

# Avaliações de produtos em um e-commerce, com nivel de complexidade variado
df <- data.frame(
  id = paste0("r", 1:4),
  texto = c(
    "Bom. Gostei. Chegou rápido.",
    paste(
      "A ergonomia do dispositivo privilegia uma distribuicao",
      "assimetrica de peso, o que compromete substancialmente a",
      "usabilidade prolongada em cenários de utilizacao intensiva."
    ),
    "Fácil de usar e bonito.",
    "O manual e confuso e a instalacao exige conhecimento técnico avancado."
  ),
  categoria = c("eletronico", "eletronico", "casa", "eletronico"),
  stringsAsFactors = FALSE
)
corpus <- ac_corpus(df, text = texto, docid = id)

ac_readability(corpus)
#> # A tibble: 4 × 6
#>   doc_id n_palavras n_frases n_silabas flesch nivel        
#>   <chr>       <int>    <int>     <dbl>  <dbl> <chr>        
#> 1 r1              4        3         8   78.3 muito facil  
#> 2 r2             22        1        65  -23.4 muito dificil
#> 3 r3              5        1         9   91.5 muito facil  
#> 4 r4             11        1        28   22.3 muito dificil

# Comparando legibilidade média por categoria de produto
ac_readability(corpus, by = "categoria")
#> # A tibble: 2 × 6
#>   categoria  n_palavras n_frases n_silabas flesch nivel        
#>   <chr>           <int>    <int>     <dbl>  <dbl> <chr>        
#> 1 casa                5        1         9   91.5 muito facil  
#> 2 eletronico         37        5       101   10.4 muito dificil