Análisis de texto
El análisis cualitativo se puede apoyar en software, que busca mejorar la eficiencia al analizar, extraer y registrar la codificación que se obtiene al analizar los textos cualitativos [1].
Coding
Proceso de categorización de la información cualitativa para facilitar su análisis.
Normalización de textos [3].
Es el proceso mediante el cual se convierte u organiza el texto a una forma más manejable y estandarizada.
tokenization
Es el proceso de separar las frases en conceptos o más comunmente en palabras. Estos segmentos se llaman tokens. Para el español o el inglés las palabras se separan con espacios, pero en algunos casos los conceptos tienen más de una palabra.
-
Algunos nombres propios que tienen varias palabras son tokens, como “Santa Rosa de Osos”: la palabra ‘santa’ es diferente del nombre completo del municipio, es más hay diferentes “Santa Rosa”s.
-
Algunos conceptos requieren varias palabras, como “Música de planchar”: el concepto requiere las tres palabras y es muy diferente a una de ellas por aparte, como el verbo ‘planchar’
-
La mayoría de los tokens son una sóla palabra, por ejemplo la palabra “conveniente”.
lemmatization
Es el proceso de determinar la raíz de las palabras, obviando las diferenticas superficiales.
-
Los verbos irregulares, como por ejemplo el verbo “caber” en primera persona se conjuga como “yo quepo”, “tu cabes”, “nosotros cabemos”. El lema sería “caber”.
-
Las formas “voy”, “fuí” e “iría” son todas conjugaciones del verbo “ir”, que aquí sería el lemma.
stemming
Es una versión más sencilla de lemmatizaation en la que sólo se retirn los sufijos de las palabras.
sentence segmentation
Dividir un texto en diferentes fraces, usando generalmente símbolos de puntuación.
Tokenization en Python
[4]
Python
tiene diferentes librerías para análisis cualitativo. Aquí vamos a hablar de NLTK. Se llama de la siguiente forma:
import nltk
La primera vez que se use se pueden actualizar un conjunto de ejemplos del libro [4]:
nltk.download()
La lista de textos que están en el conjunto de documentos de ejemplo se puede obtener con la instrucción
texts()
Ejemplo
Supongamos que tenemos una base de textos cortos, que hemos organizado
en un dataframe llamado text_df. El conjunto de datos puede tener
diferentes variables, pero el texto está explícitamente en la columna
content
.
El primer texto se puede leer de esa base de textos con:
text_df.content[0]
Que en este caso es:
'Desde el frío pero bello #PáramoDeSanturbán escuchamos @RadNalCo @RadNalSantander hoy en el #DiaDelCampesino.\n#OrgullosamenteCampesinos \n@jacobolozano @Angelicablancor @AgroColombia_ \n\n#Santurbán #GranSantander https://t.co/Vji7EIdb7H'
Si queremos automáticamente tokenizarlo por frases, primero debemos llamar las librerías:
from nltk.tokenize import word_tokenize
from nltk.tokenize import sent_tokenize
Para tokenizar por frases se usa:
sent_tokenize(tweets_df.content[0])
Obteniendo:
p['Desde el frío pero bello #PáramoDeSanturbán escuchamos @RadNalCo @RadNalSantander hoy en el #DiaDelCampesino.',
'#OrgullosamenteCampesinos \n@jacobolozano @Angelicablancor @AgroColombia_ \n\n#Santurbán #GranSantander https://t.co/Vji7EIdb7H']
Se obtiene una lista con dos palabras.
Para tokenizar por palabras, se usa:
word_tokenize(tweets_df.content[0])
Obteniendo:
['Desde',
'el',
'frío',
'pero',
'bello',
'#',
'PáramoDeSanturbán',
'escuchamos',
'@',
'RadNalCo',
'@',
'RadNalSantander',
'hoy',
'en',
'el',
'#',
'DiaDelCampesino',
'.',
'#',
'OrgullosamenteCampesinos',
'@',
'jacobolozano',
'@',
'Angelicablancor',
'@',
'AgroColombia_',
'#',
'Santurbán',
'#',
'GranSantander',
'https',
':',
'//t.co/Vji7EIdb7H']
Stemming en Python
[4]
Para hacerlo usando NLTK
se requiere definir el paquete e indicar el
idioma:
from nltk.stem import SnowballStemmer
stemmer = SnowballStemmer("spanish")
Primero hacemos la lista de palabras. Aquí lower
indica que el content se pasa inicialmente a minúsculas.
palabras = word_tokenize(tweets_df.content[0].lower())
Ahora se debe hacer el stemming a cada palabra. Lo hacemos con un
ciclo for
. Si lo queremos imprimir, lo hacemos así:
for palabra in palabras:print(stemmer.stem(palabra))
¿cómo generaría una nueva lista de palabras?
Usando textos en formato Word [5]
En sus casos de uso, importarán sus textos por ejemplo con el paquete docx
(se documenta en [5]):
import docx