Minería de texto y fundamentos de nube de palabras en R

Sobre Neruda

VE-CC-AJ

DataIntelligence
date: 28-09-2021


1 Lo básico

1.1 Minería de texto

Los métodos de minería de texto nos permiten resaltar las palabras clave más utilizadas en un párrafo de textos. Se puede crear una nube de palabras, también conocida como nube de texto o nube de etiquetas, que es una representación visual de datos de texto.

El procedimiento de creación de nubes de palabras es muy sencillo en R si conoce los diferentes pasos a ejecutar. El paquete de minería de texto (tm) y el paquete generador de nube de palabras (wordcloud) están disponibles en R para ayudarnos a analizar textos y visualizar rápidamente las palabras clave como una nube de palabras.

3 razones por las que debería usar nubes de palabras para presentar sus datos de texto

Las nubes de palabras añaden sencillez y claridad. Las palabras clave más utilizadas se destacan mejor en una nube de palabras
Las nubes de palabras son una potente herramienta de comunicación. Son fáciles de entender, para compartir y tienen un gran impacto.
Las nubes de palabras son visualmente atractivas que los datos de una tabla

¿Quién usa nubes de palabras?

Investigadores: para informar datos cualitativos
Comercializadores: para resaltar las necesidades y los puntos débiles de los clientes.
Educadores: para apoyar temas esenciales
Políticos y periodistas
sitios de redes sociales: para recopilar, analizar y compartir los sentimientos de los usuarios

1.2 Leemos y cargamos el texto

Transformamos el texto

Transformation is performed using tm_map() function to replace, for example, special characters from the text.

Replacing “/”, “@” and “|” with space:

toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))
docs <- tm_map(docs, toSpace, "/")
docs <- tm_map(docs, toSpace, "@")
docs <- tm_map(docs, toSpace, "\\|")

Limpiamos el texto

# Convert the text to lower case
docs <- tm_map(docs, content_transformer(tolower))
# Remove numbers
docs <- tm_map(docs, removeNumbers)
# Remove english common stopwords
docs <- tm_map(docs, removeWords, stopwords("english"))
# Remove your own stop word
# specify your stopwords as a character vector
docs <- tm_map(docs, removeWords, c("blabla1", "blabla2")) 
# Remove punctuations
docs <- tm_map(docs, removePunctuation)
# Eliminate extra white spaces
docs <- tm_map(docs, stripWhitespace)
# Text stemming
# docs <- tm_map(docs, stemDocument)

1.3 Matriz de documentos de términos

La matriz de documentos es una tabla que contiene la frecuencia de las palabras. Los nombres de las columnas son palabras y los nombres de las filas son documentos. La función TermDocumentMatrix () del paquete de minería de texto se puede utilizar de la siguiente manera:

dtm <- TermDocumentMatrix(docs)
m <- as.matrix(dtm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
head(d, 10)
##                word freq
## todo           todo   11
## como           como   10
## los             los    9
## fue             fue    8
## hora           hora    7
## que             que    7
## del             del    6
## mes             mes    6
## naufragio naufragio    6
## fan             fan    5

Step 5 : Generate the Word cloud

The importance of words can be illustrated as a word cloud as follow :

set.seed(1234)
wordcloud(words = d$word, freq = d$freq, min.freq = 1,
          max.words=200, random.order=FALSE, rot.per=0.35, 
          colors=brewer.pal(8, "Dark2"))

Parametros de la funcion:

words : the words to be plotted
freq : their frequencies
min.freq : words with frequency below min.freq will not be plotted
max.words : maximum number of words to be plotted
random.order : plot words in random order. If false, they will be plotted in decreasing frequency
rot.per : proportion words with 90 degree rotation (vertical text)
colors : color words from least to most frequent. Use, for example, colors =“black” for single color.

La nube de palabras anterior muestra claramente que “que”, “jonstone”, son las cinco palabras más importantes en el discurso “El cartero” de Bukowski King.

Argumentos de la función del generador de nube de palabras:

2 Lo avanzado

Explore los términos frecuentes y sus asociaciones

Puede echar un vistazo a los términos frecuentes en la matriz de documentos de términos de la siguiente manera. En el siguiente ejemplo, queremos encontrar palabras que ocurran al menos cuatro veces:

findFreqTerms(dtm, lowfreq = 3)
##  [1] "abandonado" "como"       "del"        "deseo"      "era"       
##  [6] "escombros"  "fan"        "fred"       "fue"        "hora"      
## [11] "las"        "los"        "mar"        "mes"        "mujer"     
## [16] "naufragio"  "partir"     "pejaros"    "que"        "sentina"   
## [21] "todo"       "tus"

Puede analizar la asociación entre términos frecuentes (es decir, términos que se correlacionan) utilizando la función findAssocs(). El código R a continuación identifica qué palabras están asociadas con “mujer” en tengo un discurso de ensueño:

findAssocs(dtm, terms = "naufragio", corlimit = 0.2)
## $naufragio
## numeric(0)

La tabla de frecuencia de las palabras

head(d, 10)
##                word freq
## todo           todo   11
## como           como   10
## los             los    9
## fue             fue    8
## hora           hora    7
## que             que    7
## del             del    6
## mes             mes    6
## naufragio naufragio    6
## fan             fan    5

Trazar frecuencias de palabras

barplot(d[1:10,]$freq, las = 2, names.arg = d[1:10,]$word,
        col ="violet", main ="Most frequent words",
        ylab = "Word frequencies")

Minería de texto y fundamentos de nube de palabras en R:

http://www.sthda.com/english/wiki/text-mining-and-word-cloud-fundamentals-in-r-5-simple-steps-you-should-know