Utils

Esta sección contiene funciones que se utilizan en varios módulos de la librería ConTexto. Se divide en 3 partes: (1) auxiliares, (2) tokenización y (3) limpieza aux.

Auxiliares

Aquí hay funciones para cargar y guardar archivos de formato Pickle y una función para verificar la existencia de un directorio escogido por un usuario.

utils.auxiliares.cargar_objeto(nombre_archivo)

Carga un objeto en Python, desde un archivo Pickle cuya ubicación es determinada por el usuario.

Parámetros

nombre_archivo – (str). Ubicación del archivo que contiene el objeto que se desea cargar.

Devuelve

(objeto Python). Objeto en Python contenido en el archivo.

utils.auxiliares.guardar_objeto(objeto, nombre_archivo)

Guarda, en un archivo Pickle, un objeto de Python determinado por el usuario.

Parámetros
  • objeto – (objeto Python). Objeto que se desea guardar.

  • nombre_archivo – (str). Ubicación y nombre del archivo en donde se desea guardar el objeto.

utils.auxiliares.verificar_crear_dir(ubicacion_directorio)

Verifica si existe un directorio en la ubicación determinada por el usuario. Si el directorio no existe, la función lo crea.

Parámetros

ubicacion_directorio – (str). Ubicación del directorio que se desea verificar o crear.

Tokenizacion

Esta sección contiene las funciones de tokenización de texto, las cuales se utilizan durante el preprocesamiento de un texto.

class utils.tokenizacion.TokenizadorEspacios

Bases: object

destokenizar(lista_tokens)

Realiza la función de detokenización (unir una lista de tokens, produciendo un texto) sobre una o varias listas de tokens de entrada.

Parámetros

lista_tokens – (list). Lista de tokens, si es para un solo texto. Si es para varios textos, se introduce una lista en la que cada elemento (uno para cada texto) es una lista de tokens.

Devuelve

(str o lista de strings) Devuelve un solo string si se introdujo solo una lista de tokens. Si se introdujeron varias listas de tokens, devuelve una lista de strings.

tokenizar(texto)

Realiza la función de tokenización (separar un texto en componentes sueltos, o tokens) sobre uno o varios textos de entrada.

Parámetros

texto – (str o lista de strings). Texto o lista de textos sobre los cuales se desea aplicar la tokenización.

Devuelve

(list). Si se ingresó un solo texto, devuelve la lista de tokens del texto. Si se ingresó una lista de textos, se devuelve una lista en la que cada elemento es una lista de tokens, con un elemento para cada texto de entrada.

class utils.tokenizacion.TokenizadorNLTK(tokenizador=None, destokenizador=None)

Bases: object

Constructor por defecto de la clase TokenizadorNLTK. Esta clase se apoya en la librería NLTK para definir acciones de tokenización y detokenización (operación inversa en la que se pasa de tokens a texto) de textos.

Parámetros
  • tokenizador – (objeto de tokenización de NLTK) Valor por defecto: None. Objeto encargado de la tokenización de textos. Si el valor es “None”, se cargará por defecto una instancia de la clase ToktokTokenizer, de la librería NLTK.

  • detokenizador – (objeto de detokenización de NLTK) Valor por defecto: None. Objeto encargado de la detokenización de textos. Si el valor es “None”, se cargará por defecto una instancia de la clase TreebankWordDetokenizer, de la librería NLTK.

destokenizar(lista_tokens)

Realiza la función de detokenización (unir una lista de tokens, produciendo un texto) sobre una o varias listas de tokens de entrada.

Parámetros

lista_tokens – (list). Lista de tokens, si es para un solo texto. Si es para varios textos, se introduce una lista en la que cada elemento (uno para cada texto) es una lista de tokens.

Devuelve

(str o lista de strings) Devuelve un solo string si se introdujo solo una lista de tokens. Si se introdujeron varias listas de tokens, devuelve una lista de strings.

establecer_destokenizador(destokenizador)

Permite definir o cambiar el detokenizador a utilizar.

Parámetros

detokenizador – (objeto de detokenización de NLTK). Objeto encargado de la detokenización de textos. Si el valor es “None”, se cargará por defecto una instancia de la clase TreebankWordDetokenizer, de la librería NLTK.

establecer_tokenizador(tokenizador)

Permite definir o cambiar el tokenizador a utilizar.

Parámetros

tokenizador – (objeto de tokenización de NLTK). Objeto encargado de la tokenización de textos. Si el valor es “None”, se cargará por defecto una instancia de la clase ToktokTokenizer, de la librería NLTK.

post_destokenizacion(texto)

Hace algunos ajustes al texto, una vez ha pasado por la detokenización, para que cumpla con las reglas de puntuación de los idiomas español e inglés. Es posible que para otros idiomas sea necesario incluir ajustes adicionales. Si el texto de entrada no contiene signos de puntuación (por ejemplo, si fue pasado por alguna función de limpieza previamente), la salida será igual a la entrada.

Parámetros

texto – (str). Texto que resulta de detokenizar una lista de tokens.

Devuelve

(str) Texto con los signos de puntuación ajustados.

tokenizar(texto)

Realiza la función de tokenización (separar un texto en componentes sueltos, o tokens) sobre uno o varios textos de entrada.

Parámetros

texto – (str o lista de strings). Texto o lista de textos sobre los cuales se desea aplicar la tokenización.

Devuelve

(list) Si se ingresó un solo texto, devuelve la lista de tokens del texto. Si se ingresó una lista de textos, se devuelve una lista en la que cada elemento es una lista de tokens, con un elemento para cada texto de entrada.

utils.tokenizacion.destokenizar(tokens, tokenizador=None)

Función que aprovecha la clase TokenizadorNLTK para realizar la función de detokenización (unir una lista de tokens, produciendo un texto) sobre una o varias listas de tokens de entrada.

Parámetros
  • tokens – (list). Lista de tokens, si es para un solo texto. Si es para varios textos, se introduce una lista en la que cada elemento (uno para cada texto) es una lista de tokens.

  • tokenizador – Valor por defecto: None. Objeto encargado de la tokenización y detokenización de textos. Si el valor es “None”, se cargará por defecto una instancia de la clase TokenizadorNLTK.

Devuelve

(str o lista de strings) Devuelve un solo string si se introdujo solo una lista de tokens. Si se introdujeron varias listas de tokens , devuelve una lista de strings.

utils.tokenizacion.tokenizar(texto, tokenizador=None)

Función que aprovecha la clase TokenizadorNLTK para realizar la función de tokenización (separar un texto en componentes sueltos, o tokens) sobre uno o varios textos de entrada.

Parámetros
  • texto – (str o lista de strings). Texto o lista de textos sobre los cuales se desea aplicar la tokenización.

  • tokenizador – Valor por defecto: None. Objeto encargado de la tokenización y detokenización de textos. Si el valor es “None”, se cargará por defecto una instancia de la clase TokenizadorNLTK.

Devuelve

(list). Si se ingresó un solo texto, devuelve la lista de tokens del texto. Si se ingresó una lista de textos, se devuelve una lista en la que cada elemento es una lista de tokens, con un elemento para cada texto de entrada.

Limpieza aux

Las funciones de esta sección se encargan de encontrar caracteres con ciertas características dentro de los textos, como números o letras repetidos, números o letras consecutivos y coincidencias de textos. También permite la eliminación de caracteres no deseados por el usuario, según varios criterios de selección.

utils.tokenizacion.substrings_en_comun(str1, str2, longitud_min=10)

Encuentra los substrings, o cadena de caracteres internas, que tienen en común dos textos de entrada y cumplen con una longitud mínima.

Parámetros
  • str1 – (str) Primer texto de insumo.

  • str2 – (str) Segundo texto de insumo.

  • longitud_min – (int) Cantidad mínima de caracteres que debe tener una coincidencia entre los dos textos de entrada, para ser considerada.

Devuelve

(list) Lista de substrings o cadenas de caracteres en común que cumplan con el requisito de longitud mínima. Si no hay ningúna cadena de caracteres que cumpla esta condición, se devuelve una lista vacía.

utils.tokenizacion.detectar_coincidencias(lista_textos, prop=0.5, n_min=2, longitud_min=10)

Detecta y devuelve substrings, o cadenas de caracteres, que se repiten a lo largo de una lista de textos y que cumplan hasta tres condiciones, ajustadas por el usuario:

  • Que aparezcan en por lo menos una proporción determinada de todos los textos.

  • Que tengan por lo menos un número determinado de palabras.

  • Que tengan un número de caracteres mayor o igual a una longitud mínima establecida.

Parámetros
  • lista_textos – (list) Lista de textos sobre los cuales se desea buscar coincidencias.

  • prop – (float) Valor por defecto: 0.5. Número entre 0 y 1 que determina la proporción mínima de la lista de textos en los que debe estar presente una cadena de caracteres para ser considerada. Por ejemplo, si prop=0.8, un substring debe estar en por lo menos el 80% de los textos de lista_textos, para ser devuelto.

  • n_min – (int) Valor por defecto: 2. Número mínimo de palabras que debe tener una coincidencia entre los textos de entrada, para ser considerada.

  • longitud_min – (int) Cantidad mínima de caracteres que debe tener una coincidencia entre los textos de entrada, para ser considerada.

Devuelve

(list) Lista de coincidencias encontradas entre los textos de entrada, que cumplan con las condiciones con los valores establecidos por el usuario. Si no hay ningúna cadena de caracteres que cumpla estas condiciones, se devuelve una lista vacía.

utils.tokenizacion.quitar_coincidenias(lista_textos, prop=0.5, n_min=2, longitud_min=10)

Detecta y remueve substrings, o cadenas de caracteres, que se repiten a lo largo de una lista de textos y que cumplan hasta tres condiciones, ajustadas por el usuario:

  • Que aparezcan en por lo menos una proporción determinada de todos los textos.

  • Que tengan por lo menos un número determinado de palabras.

  • Que tengan un número de caracteres mayor o igual a una longitud mínima establecida.

Cada coincidencia encontrada entre la lista de textos es reemplazada de los textos de entrada por un espacio en blanco.

Parámetros
  • lista_textos – (list) Lista de textos sobre los cuales se desea buscar coincidencias.

  • prop – (float) Valor por defecto: 0.5. Número entre 0 y 1 que determina la proporción mínima de la lista de textos en los que debe estar presente una cadena de caracteres para ser considerada. Por ejemplo, si prop=0.8, un substring debe estar en por lo menos el 80% de los textos de lista_textos, para ser devuelto.

  • n_min – (int) Valor por defecto: 2. Número mínimo de palabras que debe tener una coincidencia entre los textos de entrada, para ser considerada.

  • longitud_min – (int) Cantidad mínima de caracteres que debe tener una coincidencia entre los textos de entrada, para ser considerada.

Devuelve

(list) Lista de textos de entrada, luego de remover todas las coincidencias encontradas que cumplan con las condiciones con los valores establecidos por el usuario.

utils.tokenizacion.caracteres_repetidos(palabra, n, limpiar_palabra=True)

Determina si en una palabra de entrada se repiten caracteres (letras o números) de forma seguida por lo menos un número de veces determinado por el usuario. Por ejemplo, si n=3 y palabra=”animaaal”, la función arrojara positivo, porque el carácter “a” aparece 3 veces de forma seguida.

Parámetros
  • palabra – (str) Palabra que se quiere analizar.

  • n – (int) Número mínimo de veces seguidas que debe aparecer un carácter para que la función arroje positivo.

  • limpiar_palabra – (bool) {True, False} Valor por defecto: True. Argumento opcional que permite pasar a minúsculas y quitar acentos (tildes, diéresis, virgulilla) a la palabra antes de analizarla. Si este parámetro se deja como False, las letras con acentos no serán contabilizadas en la búsqueda de caracteres repetidos, y pueden haber inconsistencias entre letras en mayúscula y minúscula. Por ejemplo, las palabras «animaáal» o «animaAal» no contabilizarán caracteres repetidos seguidos.

Devuelve

(bool) Devuelve True si se cumple la condición de caracteres consecutivos repetidos, y False en caso contrario.

utils.tokenizacion.caracteres_consecutivos(palabra, n, limpiar_palabra=True)

Determina si en una palabra de entrada hay caracteres (letras o números) consecutivos, uno junto al otro, por lo menos un número de veces determinado por el usuario. Por ejemplo, si n=4 y palabra=“1234555”, la función va a arrojar positivo, porque hay cinco caracteres consecutivos (del 1 al 5) que aparecen uno junto al otro.

Parámetros
  • palabra – (str) Palabra que se quiere analizar.

  • n – (int) Número mínimo de caracteres consecutivos que deben aparecer juntos en la palabra que la función arroje positivo.

  • limpiar_palabra – (bool) {True, False} Valor por defecto: True. Permite pasar a minúsculas y quitar acentos (tildes, diéresis, virgulilla) a la palabra antes de analizarla. Si este parámetro se deja como False, las letras con acentos no serán contabilizadas en la búsqueda de caracteres consecutivos, y pueden haber inconsistencias entre letras en mayúscula y minúscula. Por ejemplo, las palabras “àbcdë” o “ABcde” solo contabilizarán 3 caracteres consecutivos seguidos.

Devuelve

(bool) Devuelve True si se cumple la condición de caracteres consecutivos seguidos, y False en caso contrario.

utils.tokenizacion.consonantes_consecutivas(palabra, n, incluir_y=True, limpiar_palabra=True)

Determina si en una palabra de entrada hay consonantes (letras distintas a vocales) seguidas, una junto a la otra, por lo menos un número de veces determinado por el usuario. Por ejemplo, si n=4 y palabra=”Abstracto”, la función va a arrojar positivo, porque hay cuatro consonantes seguidas (“bstr”) en la palabra.

Parámetros
  • palabra – (str) Palabra que se quiere analizar.

  • n – (int) Número mínimo de consonantes que deben aparecer seguidas en la palabra que la función arroje positivo.

  • incluir_y – (bool) {True, False} Valor por defecto: True. Argumento opcional para determinar si la letra. “Y” debe ser considerada como vocal. Si incluir_y=False, la letra “Y” será considerada consonante.

  • limpiar_palabra – (bool) {True, False} Valor por defecto: True. Argumento opcional que permite quitar acentos (tildes, diéresis, virgulilla) a la palabra antes de analizarla. Si este parámetro se deja como False, las consonantes con acentos como “ç” o “ñ” no serán contabilizadas en la búsqueda de consonantes seguidas.

Devuelve

(bool) Devuelve True si se cumple la condición de consonantes seguidas, y False en caso contrario.

utils.tokenizacion.quitar_palabras_atipicas(texto, n_repetidas=None, n_consecutivas=None, n_consonantes=True, incluir_y=True, limpiar_palabras=True, tokenizador=None)

Para un texto de entrada, busca y elimina palabras que cumplan una o varias de las siguientes condiciones, ajustadas por el usuario:

  • Si se repiten caracteres (letras o números) de forma seguida por lo menos un número de veces determinado.

  • Si hay caracteres (letras o números) consecutivos, uno junto al otro, por lo menos un número de veces determinado.

  • Si hay consonantes (letras distintas a vocales) seguidas, una junto a la otra, por lo menos un número de veces determinado.

Al final, devuelve el texto de entrada sin las palabras identificadas.

Parámetros
  • texto – (str) Texto al que se desean quitar palabras potencialmente problemáticas.

  • n_repetidas – (int) Valor por defecto: None. Número mínimo de veces seguidas que se debe repetir un caracter en una palabra para que cumpla este criterio. Si n_repetidas=None, la función no identificará palabras con caracteres repetidos. Si n_repetidas=0, el valor de n_repetidas se definirá en función de la longitud de cada palabra, de acuerdo a unas reglas preestablecidas.

  • n_consecutivas – (int) Valor por defecto: None. Número mínimo de caracteres consecutivos que deben aparecer juntos en una palabra para que cumpla este criterio. Si n_consecutivas=None, la función no identificará palabras con caracteres consecutivos. Si n_consecutivas=0, el valor de n_consecutivas se definirá en función de la longitud de cada palabra, de acuerdo a unas reglas preestablecidas.

  • n_consonantes – (int) Valor por defecto: None. Número mínimo de consonantes que deben aparecer seguidas en una palabra que cumpla este criterio. Si n_consonantes=None, la función no identificará palabras con consonantes seguidas. Si n_consonantes=0, el valor de n_consonantes se definirá en función de la longitud de cada palabra, de acuerdo a unas reglas preestablecidas.

  • incluir_y – (bool) {True, False} Valor por defecto: True. Argumento opcional para determinar si la letra. «Y» debe ser considerada como vocal, al buscar palabras con consonantes seguidas. Si incluir_y=False, la letra «Y» será considerada consonante.

  • limpiar_palabras – (bool) {True, False} Valor por defecto: True. Argumento opcional que permite quitar acentos (tildes, diéresis, virgulilla) y pasar a minúsculas las palabras del texto antes de revisar las condiciones definidas por el usuario.

  • tokenizador – Valor por defecto: None. Objeto encargado de la tokenización y detokenización de textos. Si el valor es “None”, se cargará por defecto una instancia de la clase TokenizadorNLTK.

Devuelve

(str) Devuelve el texto de entrada sin las palabras que hayan sido identificadas de acuerdo a los criterios especificados por el usuario.