Hunspell – Corrector ortográfico

Versión: 2.x, 3.x.

Hunspell es un corrector ortográfico multiplataforma, utilizado por software de primera línea como Mozilla Firefox, Thunderbird, Google Chrome, LibreOffice, entre otros. Provee su funcionalidad a través de la librería libhunspell y accedemos desde Python vía el módulo PyHunspell, desarrollado por Benoît Latinier.

Descarga e instalación

Usuarios de Microsoft Windows pueden descargar instaladores para las versiones 2.7 y 3.5 vía windows.recursospython.com.

En distribuciones de Linux, puede utilizarse:

pip install hunspell

O bien descargar el código de fuente desde PyPI o el proyecto en GitHub y ejecutar:

python setup.py install

Ambos métodos requieren los paquetes python-dev y libhunspell-dev.

Diccionarios

Hunspell utiliza diccionarios para proporcionar la verificación ortográfica y análisis morfológico. Puedes obtener el diccionario para la lengua española (utilizado en los ejemplos) desde este enlace.

Los siguientes enlaces proveen diccionarios para el resto de las lenguas.

Ejemplos

Importar el módulo y cargar el diccionario español.

>>> import hunspell
>>> dic = hunspell.HunSpell("es_ANY.dic", "es_ANY.aff")

Determinar si una palabra se encuentra en el diccionaro.

>>> dic.spell("recursos")
True
>>> dic.spell("python")
False

«Python» es una palabra inglesa, lógicamente no se encuentra en el diccionario español. De todas formas, podemos agregarla.

>>> dic.add("python")
0
>>> dic.spell("python")
True

Como también eliminar palabras.

>>> dic.spell("hola")
True
>>> dic.remove("hola")
0
>>> dic.spell("hola")
False

Nótese que las funciones Hunspell.add y Hunspell.remove operan con el diccionario cargado en memoria. Los cambios no se ven reflejados en el archivo del sistema (en este caso, es_ANY.dic).

(Desafortunadamente, una instancia Hunspell no puede ser serializada vía pickle. Sin embargo, no sería mucho trabajo almacenar las palabras añadidas en un archivo de texto y cargarlo en la próxima ejecución, utilizando las funciones anteriores.)

Para obtener sugerencias de una palabra:

>>> dic.suggest("python")
['poncho']
>>> dic.suggest("cosinar")
['cocinar', 'copinar', 'narcosis', 'consignar', 'sincopar', 'narcotina']
>>> dic.suggest("varajar")
['barajar', 'va rajar', 'va-rajar', 'varar', 'rajar', 'vara']
>>> dic.suggest("inalar")
['inhalar', 'inflar', 'in alar', 'in-alar', 'instalar', 'inclinar', 'alminar', 'laminar']

Analizar morfológicamente y obtener el infinitivo de un verbo:

>>> dic.analyze("tomé")
[' st:tomar fl:R']
>>> dic.stem("tomé")
['tomar']

Por último, la función Hunspell.get_dic_encoding retorna la codificación de caracteres utilizada por el diccionario. Por ejemplo, en Python 2, el siguiente código solicita una palabra e imprime en pantalla todas las sugerencias. Si nuestra terminal utiliza una codificación diferente (por ejemplo, cp850 en Windows) debemos realizar las conversiones necesarias.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import hunspell
import sys

dic = hunspell.HunSpell("es_ANY.dic", "es_ANY.aff")

while True:
    word = raw_input("> ").decode(sys.stdin.encoding)
    if word:
        for suggest in dic.suggest(word):
            print suggest.decode(dic.get_dic_encoding())

> tomé
tome
tomé
Tomé
timé
toné
toé
toma
temé
tomo
tosé
tocé
comé
domé
topé
tomó

Curso online 👨‍💻

¡Ya lanzamos el curso oficial de Recursos Python en Udemy! Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter en 2024.

Consultoría 💡

Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.

9 comentarios.

    • Recursos Python says:

      Hola. Los ejemplos son con un diccionario español. Hunspell es motor de corrección ortográfica para múltiples idiomas. Al inicializar la clase HunSpell le pasás como argumento el diccionario en el idioma que quieras.

      Saludos

      • Gracias por ocuparte, pido disculpas porque me equivoque, tengo el mismo
        problema que Alex Poma, siempre que deseo instalarlo me da error, entre
        tantos que quise practicar, me olvide que está en Español y que el problema
        es la instalación, igual estoy haciendo uno propio, saludos.-

  1. Hola muchas gracias por el aporte, sera posible que exista una librería que ayude durante la escritura? O sea que también pueda indicar que se debe colocar un punto o una coma en un parrafo?

  2. Disculpa, tengo un problema, no puedo instalar Hunspell, lo he descargado y también probé con el pip, pero siempre me topo con este error:

    hunspell.c(21) : fatal error C1083: Cannot open include file: ‘hunspell.h’: No such file or directory

    Estoy usando anaconda, en la versión de python 2.7, demas no se como instalar los paquetes python-dev y libhunspell-dev.

    Por favor agradecería tu ayuda….

Deja una respuesta