def stem_texto(texto, lenguaje='es', limpiar=False, stemmer=None): """ Función que aprovecha la clase Stemmer para realizar *stemming*, o \ reducción de palabras a su raíz, en un texto de entrada. :param texto: (str) Texto al que se desea aplicar el *stemming*. :param lenguaje: (str) Valor por defecto: 'es'. Lenguaje del texto al que se va \ a aplicar *stemming*. Para mayor información, consultar la sección de \ :ref:`Lenguajes soportados <seccion_lenguajes_soportados>`. :param limpiar: (bool) {True, False} Valor por defecto: False. Define \ si se desea hacer una limpieza básica (aplicando la función \ `limpieza_basica` del módulo `limpieza`) al texto de entrada, \ antes de aplicar el *stemming*. :param stemmer: (Stemmer). Parámetro opcional. Objeto de la clase Stemmer para aplicar \ *stemming* sobre el texto de entrada. Se puede utilizar para aplicar \ *stemming* a varios textos a la vez, sin necesidad de inicializar una \ instancia de la clase Stemmer en cada ocasión. Esto puede representar \ ahorro en tiempos al momento de aplicar la función. :return: (str) Texto luego de la aplicación del *stemming*. """ # Si no se provee un stemmer, este debe ser inicializado if stemmer is None: if lenguaje == 'auto': lenguaje = detectar_lenguaje(texto) stemmer = Stemmer(lenguaje) if stemmer.stemmer is None: print('Lenguaje no válido.') return None return stemmer.stemming(texto, limpiar)
def corregir_texto(texto, lenguaje='es', corrector=None, diccionario=None, distancia=2, limpieza=False, tokenizador=None): """ Función que aprovecha la clase Corrector para realizar corrección \ ortográfica sobre un texto de entrada. :param texto: (str) Texto al cuál se desea aplicar corrección ortográfica. :param lenguaje: (str) Lenguaje de los textos a los que se les va a aplicar \ corrección ortográfica. Para mayor información, consultar la sección de \ :ref:`Lenguajes soportados <seccion_lenguajes_soportados>`. :param corrector: (Corrector) Parámetro opcional. Objeto de la clase Corrector para aplicar \ corrección ortográfica sobre el texto de entrada. Se puede utilizar para \ corregir varios textos a la vez, sin necesidad de inicializar una instancia de \ la clase Corrector en cada ocasión. Esto puede representar ahorro en tiempos al \ momento de aplicar la función. :param diccionario: (dict, list o str) Valor por defecto: None. Diccionario (o string con ubicación del \ archivo JSON que lo contiene), o lista que permite modificar y agregar palabras. \ Si es una lista, contiene las palabras que serán consideradas como válidas o correctas. \ Si es un diccionario, las llaves del diccionario son las palabras que serán consideradas como válidas o correctas, y los valores del diccionario son las frecuencias de cada palabra \ en el diccionario. Las frecuencias son utilizadas como criterio de desempate, cuando una \ palabra incorrecta tiene más de una palabra candidata para la corrección. Si se deja este \ parámetro como None, se cargará el diccionario por defecto que trae la librería `spellchecker` \ para el lenguaje determinado. :param distancia: (int) Valor por defecto: 2. Máxima distancia de Levenshtein que puede haber \ entre una palabra incorrecta (o no reconocida) y las palabras del diccionario para \ determinar si hay palabras candidatas para realizar la corrección. :param limpieza: (bool) {True, False} Valor por defecto: False. Argumento \ opcional que define si se desea hacer una limpieza básica (aplicando la función `limpieza_basica` del módulo `limpieza`) al \ texto antes de aplicar la corrección ortográfica. :param 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*. :return: (str) Texto de entrada luego de la corrección ortográfica. """ if corrector is None: if lenguaje == 'auto': lenguaje = detectar_lenguaje(texto) corrector = Corrector(lenguaje, diccionario, distancia, tokenizador) if corrector.corrector is None: print('Lenguaje no válido.') return None return corrector.correccion_ortografia(texto, limpieza)
def stem_texto(texto, lenguaje="es", limpiar=False, stemmer=None): """ Función que aprovecha la clase `Stemmer` para realizar *stemming*, o \ reducción de palabras a su raíz, en un texto de entrada. :param texto: Texto al que se desea aplicar el *stemming*. :type texto: str :param lenguaje: Lenguaje de los textos a los que se va a aplicar \ *stemming*. Para mayor información, consultar la sección de \ :ref:`Lenguajes soportados <seccion_lenguajes_soportados>`. \ Valor por defecto `'es'`. :type lenguaje: {'es', 'en', 'fr', 'ge'}, opcional :param limpiar: Define si se desea hacer una limpieza básica \ (aplicando la función `limpieza_basica` del módulo \ `limpieza`) al texto antes de aplicar el *stemming*. \ Valor por defecto `False`. :type limpiar: bool, opcional :param stemmer: Objeto de la clase `Stemmer` para aplicar *stemming* \ sobre el texto de entrada. \ Se puede utilizar para aplicar *stemming* a varios textos a la \ vez, sin necesidad de inicializar una instancia de la clase *Stemmer* \ en cada ocasión. Esto puede representar ahorro en tiempos al momento \ de aplicar la función. Valor por defecto `None`. :type stemmer: Stemmer, opcional :return: (str) Texto luego de la aplicación del *stemming*. """ # Si no se provee un stemmer, este debe ser inicializado if stemmer is None: if lenguaje == "auto": lenguaje = detectar_lenguaje(texto) stemmer = Stemmer(lenguaje) if stemmer.stemmer is None: print("Lenguaje no válido.") return None return stemmer.stemming(texto, limpiar)
def corregir_texto( texto, lenguaje="es", corrector=None, diccionario=None, distancia=2, limpieza=False, tokenizador=None, ): """ Función que aprovecha la clase `Corrector` para realizar corrección \ ortográfica sobre un texto de entrada. :param texto: Texto al cuál se desea aplicar corrección ortográfica. :type texto: str :param lenguaje: Lenguaje de los textos a los que se les va a \ aplicar corrección ortográfica. Para mayor información, consultar la \ sección de \ :ref:`Lenguajes soportados <seccion_lenguajes_soportados>`. Valor \ por defecto `'es'`. :type lenguaje: {'es', 'en', 'fr', 'ge'}, opcional :param corrector: Objeto de la clase `Corrector` para aplicar corrección \ ortográfica sobre el texto de entrada. Se puede utilizar para \ corregir varios textos a la vez, sin necesidad de inicializar una \ instancia de la clase `Corrector` en cada ocasión. Esto puede \ representar ahorro en tiempos al momento de aplicar la función. Valor \ por defecto `None`. :type corrector: Object, opcional :param diccionario: Diccionario (o string con ubicación del archivo \ JSON que lo contiene), o lista que permite modificar y agregar \ palabras. Si es una lista, contiene las palabras que serán \ consideradas como válidas o correctas. \ Si es un diccionario, las llaves del diccionario son las palabras \ que serán consideradas como válidas o correctas, y los valores \ del diccionario son las frecuencias de cada palabra en el \ diccionario. Las frecuencias son utilizadas como criterio de \ desempate, cuando una palabra incorrecta tiene más de una palabra \ candidata para la corrección. Si se deja este \ parámetro como `None`, se cargará el diccionario por defecto que \ trae la librería `spellchecker` para el lenguaje determinado. :type diccionario: dict, list, str, opcional :param distancia: Máxima distancia de \ Levenshtein que puede haber entre una palabra incorrecta (o no \ reconocida) y las palabras del diccionario para determinar si \ hay palabras candidatas para realizar la corrección. \ Valor por defecto `2`. :type distancia: int :param limpieza: Define si se desea hacer una limpieza \ básica (aplicando la función `limpieza_basica` del módulo \ `limpieza`) al texto antes de aplicar la corrección ortográfica.\ Valor por defecto `False`. :type limpieza: bool, opcional :param tokenizador: 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`. Valor por \ defecto `None`. :type tokenizador: object, opcional :return: (str) Texto de entrada luego de la corrección ortográfica. """ if corrector is None: if lenguaje == "auto": lenguaje = detectar_lenguaje(texto) corrector = Corrector(lenguaje, diccionario, distancia, tokenizador) if corrector.corrector is None: print("Lenguaje no válido.") return None return corrector.correccion_ortografia(texto, limpieza)
def lematizar_texto(texto, lenguaje='es', libreria='spacy', limpiar=True, lematizador=None, dict_lemmas=None, dim_modelo='md', modelo_lemas='', archivo_salida='', maxima_longitud=None, tokenizador=None): """ Función que retorna un texto lematizado por la librería Spacy o Stanza. \ Permite escoger el idioma de lematización, si hacer limpieza del texto, \ modificar los modelos de lematizaciones originales y guardar los modelos \ modificados. :param texto: (str) Texto de entrada a ser lematizado. :param lenguaje: (str) Valor por defecto: 'es'. Define el lenguaje del \ texto a ser tratado. Para mayor información, consultar la sección de \ :ref:`Lenguajes soportados <seccion_lenguajes_soportados>`. :param libreria: (str) {'spacy', 'stanza'} Valor por defecto: 'spacy'. \ Se define la librería de Python de lematización para ser utilizada en ' el texto. Las opciones son las librerías Spacy y Stanza. :param limpiar: (bool) {True, False} Valor por defecto: True. Especifica \ si se desea hacer una limpieza básica del texto antes de la lematización. :param lematizador: Valor por defecto: None. Parámetro opcional. Objeto de la clase \ LematizadorSpacy o LematizadorStanzapara aplicar lematización sobre el texto de entrada. \ Se puede utilizar para aplicar lematización a varios textos a la vez, sin necesidad de inicializar \ un lematizador en cada ocasión. Esto puede representar ahorro en tiempos al momento de aplicar la función. :param dict_lemmas: (dict) Diccionario que permite modificar y agregar \ lemas. Las llaves del diccionario son las palabras completas y los \ valores del diccionario son los lemas escogidos para cada palabra. :param dim_modelo: (str) {'lg', 'md', 'sm'} Valor por defecto: 'md'. \ Se define el tamaño del modelo. 'lg' es grande (large), 'md' es mediano \ (medium) y 'sm' es pequeño (small). Aplica únicamente para el lematizador Spacy. :param modelo_lemas: (str) Valor por defecto: None. Especifica la ruta \ de un modelo de lemas personalizado. En caso de ser vacío, se utiliza \ el modelo genérico de lemas de Stanza. Aplica únicamente para la \ lematización con Stanza. :param archivo_salida: (str) Valor por defecto: ''. Especifica la ruta \ del archivo de salida del modelo de lemas modificado. En caso de ser \ vacío, el resultado de la lematizacción se guarda en un archivo \ temporal que eventualmente será borrado. Aplica únicamente para la \ lematización con Stanza. :param maxima_longitud: (int) Valor por defecto: None. Parámetro opcional que \ permite establecer la máxima longitud (número de caracteres) que acepta el \ LematizadorSpacy en un texto de entrada. Si este valor se deja en None, se utilizará \ la máxima longitud que trae Spacy por defecto (1 millón de caracteres). Aplica únicamente \ para la lematización con Spacy. :param tokenizador: Valor por defecto: None. Objeto encargado de la detokenización \ de textos después de lematizar. Si el valor es 'None', se cargará por defecto una \ instancia de la clase *TokenizadorEspacios*. :return: (str) Texto lematizado. """ # Si no se provee un lematizador, este debe ser inicializado if lematizador is None: if lenguaje == 'auto': lenguaje = detectar_lenguaje(texto) if libreria.lower() == 'spacy': lematizador = LematizadorSpacy(lenguaje, dim_modelo, dict_lemmas, maxima_longitud, tokenizador) elif libreria.lower() == 'stanza': lematizador = LematizadorStanza(lenguaje, modelo_lemas, dict_lemmas, archivo_salida, tokenizador) else: print( 'Por favor escoja una librería válida para el lematizador (Spacy o Stanza)' ) return None # Si el lenguaje no se reconoce, se envía mensaje if lematizador.lematizador is None: print('Lenguaje no válido.') return None # Devolver la lematización del texto return lematizador.lematizar(texto, limpiar)
def lematizar_texto( texto, lenguaje="es", libreria="spacy", limpiar=True, lematizador=None, dict_lemmas=None, dim_modelo="md", modelo_lemas=None, archivo_salida=None, maxima_longitud=None, tokenizador=None, ): """ Función que retorna un texto lematizado por la librería `Spacy` o \ `Stanza`. \ Permite escoger el idioma de lematización, si hacer limpieza del texto, \ modificar los modelos de lematizaciones originales y guardar los modelos \ modificados. :param texto: Texto de entrada a ser lematizado. :type texto: str :param lenguaje: Define el lenguaje del Lematizador. \ Para mayor información, consultar la sección de \ :ref:`Lenguajes soportados <seccion_lenguajes_soportados>`. \ Valor por defecto `'es'`. :type lenguaje: {'es', 'en', 'fr', 'ge'}, opcional :param libreria: Se define la librería de lematización para ser utilizada \ en el texto. Las opciones son las librerías `spacy` o `stanza`. Valor por defecto `spacy`. :type libreria: {'spacy', 'stanza'} :param limpiar: Si `limpiar = True` se hace una limpieza básica de texto \ antes del proceso de lematización. Valor por defecto `True`. :type limpiar: bool, opcional :param lematizador: Objeto de la clase `LematizadorSpacy` o \ `LematizadorStanza` para el proceso de lematización sobre el texto \ de entrada. Se puede utilizar para lematización a varios textos a la \ vez, sin necesidad de inicializar un lematizador en cada ocasión. \ Esto puede representar ahorro en tiempos al momento de aplicar la \ función. Valor por defecto `None`. :type lematizador: {LematizadorStanza, LematizadorSpacy}, opcional :param dict_lemmas: Diccionario que permite modificar \ y agregar lemas. Las llaves del diccionario son las palabras \ completas y los valores del diccionario son los lemas escogidos \ para cada palabra. :type dict_lemmas: dict :param dim_modelo: Tamaño del modelo. 'lg' es grande (large), 'md' es \ mediano (medium) y 'sm' es pequeño (small). Los modelos más \ grandes usualmente obtienen mejores resultados, pero requieren \ mayor tiempo de carga. Aplica unicamente para `LematizadorSpacy`. \ Valor por defecto `'md'`. :type dim_modelo: {'lg', 'md', 'sm'}, opcional. :param modelo_lemas: Especifica la ruta de un modelo de lemas \ personalizado. Si `modelo_lemas = None`, utiliza el modelo \ genérico de lemas de `Stanza`. Aplica únicamente para la \ lematización con Stanza. :type modelo_lemas: str, opcional :param archivo_salida: Especifica la ruta del archivo de salida del \ modelo de lemas modificado. Si `archivo_salida = None`, el \ resultado de la lematizacción se guarda en un archivo temporal \ que eventualmente será borrado. Aplica únicamente para la \ lematización con Stanza. :type archivo_salida: str, opcional :param maxima_longitud: Establecer la máxima longitud (número de \ caracteres) que acepta el lematizador en un texto de entrada. Si \ `maxima_longitud = None`, se utilizará la máxima longitud que \ trae `Spacy` por defecto (1 millón de caracteres). Aplica únicamente \ para la lematización con Spacy. Valor por defecto `None`. :type maxima_longitud: int, opcional :param tokenizador: Objeto encargado de la tokenización y \ detokenización de textos después de lematizar. Si el valor es \ `None`, se cargará por defecto una instancia de la clase \ `TokenizadorEspacios`. Valor por defecto `None`. :type tokenizador: object, opcional :return: (str) Texto lematizado. """ # Si no se provee un lematizador, este debe ser inicializado if lematizador is None: if lenguaje == "auto": lenguaje = detectar_lenguaje(texto) if libreria.lower() == "spacy": lematizador = LematizadorSpacy(lenguaje, dim_modelo, dict_lemmas, maxima_longitud, tokenizador) elif libreria.lower() == "stanza": lematizador = LematizadorStanza( lenguaje, modelo_lemas, dict_lemmas, archivo_salida, tokenizador, ) else: print(("Por favor escoja una librería válida " "para el lematizador (Spacy o Stanza)")) return None # Si el lenguaje no se reconoce, se envía mensaje if lematizador.lematizador is None: print("Lenguaje no válido.") return None # Devolver la lematización del texto return lematizador.lematizar(texto, limpiar)