</> Cómo funciona
Función pura del español.
| parámetro | tipo | por defecto | qué hace |
|---|---|---|---|
palabra | string | — (obligatorio) | el adjetivo a analizar |
commons/genero.py → genero() y es_invariable().CLAVE ∈ M/F/C).formas.invariable de la base léxico; un job diario mantiene ese campo, y guía al feminizador para inventar femeninos de invariantes. Patrón de tres papeles: API (consulta) · job diario (mantenimiento) · ingesta (cuántas formas genera un lema nuevo).flowchart TD
MOD[("repositorio")]
genero["genero()"]
es_invariable["es_invariable()"]
es_invariable --> genero
genero -. datos .-> MOD
classDef red fill:#fde7f0,stroke:#c0397b,color:#7a1e4d;
class MOD red;# -*- coding: utf-8 -*-
"""
genero.py — determina el GÉNERO (M/F/C) de un adjetivo por su terminación.
- M = masculino
- F = femenino
- C = común → GÉNERO INVARIANTE (el mismo para masc/fem: el/la responsable)
Expone: genero(palabra) y es_invariable(palabra).
"""
import json
import os
# […origen y esquema interno de los datos lingüísticos (propietario)…]
def genero(palabra):
"""Género de un adjetivo: 'M', 'F' o 'C' (común/invariante). None si no se determina.
Algoritmo: 1) excepciones por palabra completa; 2) terminación más larga que case.
"""
if not palabra:
return None
w = palabra.lower().strip() # normalizamos: minúsculas y sin espacios
# 1) ¿Es una EXCEPCIÓN conocida? Algunas palabras no siguen la regla de su
# terminación, así que primero miramos una lista curada. Si está, mandamos eso.
if w in _EXCEPCIONES:
return _EXCEPCIONES[w]
# 2) Si no es excepción, manda la TERMINACIÓN. Probamos los sufijos de la palabra
# del más largo (más específico) al más corto, y devolvemos el género del
# primero que reconozcamos. La idea de fondo:
# -o → M (masculino): bueno, alto
# -a → F (femenino): buena, alta
# -ista / -able / -ible / -ante / -ense → C (común):
# el/la artista, responsable, cantante
# Que salga "C" significa que el adjetivo NO cambia entre masculino y femenino.
for i in range(len(w)):
suf = w[i:] # w[i:] recorre los sufijos, del más largo al más corto
if suf in _TERMINACIONES:
return _TERMINACIONES[suf]
return None # no lo supimos determinar
def es_invariable(palabra):
"""True si el adjetivo es de género común (invariante en género).
Es un atajo: 'invariable' = el género salió 'C'. Por eso llama a genero()
y compara — así una sola lógica manda, y esta función es solo la pregunta cómoda.
"""
return genero(palabra) == "C"
Llámala con el código a la vista.
curl "https://api.wordkers.com/v1/genero" \
-H "X-API-Key: TU_CLAVE"