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
-
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
-
Flexión
Formas del lexema y la forma según rasgos de UD: conjugación, género y número
-
Comparación
Precisión, flexión y velocidad frente a simplemma, spaCy, Stanza, ablaut y verbecc, carga y memoria
-
Excepciones
Excepciones integradas de Python y
FormNotFoundErrorpara las formas que faltan
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
esmorphen crates.io - crates/esmorph-py - el módulo de Python
esmorph._esmorphsobre 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