</> Cómo funciona

genero

GET
/v1/genero

Función pura del español.

Parámetros

parámetrotipopor defectoqué hace
palabrastring— (obligatorio)el adjetivo a analizar

Cómo funciona (por dentro)

Mapa de funciones

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;

El código

# -*- 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"

Pruébalo

Llámala con el código a la vista.

Ejemplos con el SDK

curl "https://api.wordkers.com/v1/genero" \
  -H "X-API-Key: TU_CLAVE"

Cómo empezar con el SDK →

¿Quieres que cambie algo, o copiar la lógica para lo tuyo? Sin problema — escríbeme. Lo que ves es el algoritmo; los datos y las claves se quedan en casa.

Wordkers · Catálogo · Empezar · Tu cuenta