Saltar a contenido

esMorph

esMorph

esMorph es un analizador morfológico del español: un núcleo en Rust con API para Python. Para una forma de palabra el analizador busca sus análisis en un diccionario creado a partir de Wiktionary - el lema, la categoría gramatical y los rasgos de Universal Dependencies -, los ordena por probabilidad y construye las formas de la palabra: conjugación, género y número.

Versión temprana

Hasta la 1.0 la API puede cambiar entre versiones 0.x; los cambios se describen en las notas de cada versión.

Funciones

  • Análisis


    Lema, categoría y rasgos de UD, probabilidad del análisis; listas de palabras y lematización sin el GIL

    Analizador

  • Universal Dependencies


    Categorías, rasgos y lemas según las directrices de UD y las convenciones de AnCora; verbos con clíticos, números, signos y nombres por reglas, palabras desconocidas por su terminación

    Análisis de palabras

  • Flexión


    Formas del lexema y la forma según rasgos de UD: conjugación, género y número

    Flexión

  • Comparación


    Precisión, flexión y velocidad frente a simplemma, spaCy, Stanza, ablaut y verbecc, carga y memoria

    Comparación

  • Excepciones


    Excepciones integradas de Python y FormNotFoundError para las formas que faltan

    Excepciones

Instalación

Se requiere Python 3.11 o superior.

pip install esmorph

Los paquetes precompilados, la compilación desde el código fuente y el crate de Rust se describen en la página de instalación.

Inicio rápido

from esmorph import Analyzer

morph = Analyzer()
morph.lemmatize(["Los", "niños", "cantaban", "canciones"])
[(a.lemma, a.pos, round(a.prob, 3)) for a in morph.analyze("casa")][:2]
morph.analyze("gatos")[0].inflect(Gender="Fem")
morph.analyze("hablar")[0].inflect(Tense="Past", Person="3", Number="Plur")
['el', 'niño', 'cantar', 'canción']
[('casa', 'NOUN', 0.986), ('casar', 'VERB', 0.013)]
'gatas'
'hablaron'
Estructura del proyecto
  • crates/esmorph - el núcleo del analizador en Rust: formato del diccionario, construcción, análisis, reglas, estimación y flexión
  • crates/esmorph-build - la construcción del diccionario a partir de la exportación de Wiktionary y los recuentos de los treebanks
  • crates/esmorph-dict-es - el crate con el diccionario para esmorph en crates.io
  • crates/esmorph-py - el módulo de Python esmorph._esmorph sobre PyO3
  • python/esmorph - el paquete de Python
  • scripts - la exportación de Wiktionary y de los recuentos de los treebanks, las convenciones del diccionario, la comprobación del paquete instalado antes de publicar y la comparación con otras herramientas
  • data - las tablas de clases cerradas según UD Spanish AnCora y de los símbolos de unidades
  • docs - documentación de MkDocs en inglés y español
  • tests - pruebas del paquete de Python