ac_tf_idf() calcula a frequencia de termos (tf), a frequencia
inversa de documentos (idf) e o produto tf_idf a partir de uma
tabela de frequencias de termos (tipicamente o resultado de
ac_count()).
A funcao segue a mesma logica de tidytext::bind_tf_idf(), mas
adaptada para o fluxo de trabalho do pacote:
sem grupos (
by = NULL): cadadoc_ide tratado como um documento;com grupos (
by = c("partido", ...)): cada combinacao de metadados e tratada como um "documento" no calculo deidf.
Arguments
- x
Um
data.frameoutibble::tibble()contendo, no minimo, as colunastokenen. Em geral, o resultado deac_count().- by
Vetor de nomes de colunas em
xque identificam documentos ou grupos. SeNULL(padrao), usadoc_id(que deve existir emx). Se nao forNULL, cada combinacao debye tratada como um documento no calculo deidf.
Value
Um tibble::tibble() com as colunas originais de x mais
tres colunas numeric as:
tf: frequencia do termo no documento/grupo;idf: frequencia inversa de documentos;tf_idf: produtotf * idf.
Details
A definicao de tf, idf e tf_idf segue a literatura padrao de
tf-idf em mineracao de texto:
tfe a frequencia relativa do termo no documento;idfe log(N / df), em que N e o numero de documentos e df e o numero de documentos que contem o termo;tf_idfe o produtotf * idf.
A tabela de entrada deve ter exatamente uma linha por combinacao de documento/grupo e termo (isto e, uma linha por termo-em-documento).
Examples
df <- data.frame(
id = c("d1", "d2", "d3"),
texto = c(
"O deputado do PT falou na CCJ.",
"O deputado do PL falou novamente.",
"O senador do PT falou na CCJ."
),
partido = c("PT", "PL", "PT"),
stringsAsFactors = FALSE
)
corp <- ac_corpus(df, text = texto, docid = id, meta = partido)
freq <- ac_count(corp)
tfidf <- ac_tf_idf(freq)
# tf-idf por partido (tratando cada partido como "documento")
freq_by <- ac_count(corp, by = "partido")
tfidf_by <- ac_tf_idf(freq_by, by = "partido")
