</> Cómo funciona

numero

GET
/v1/numero

Función pura del español.

Parámetros

parámetrotipopor defectoqué hace
palabrastring— (obligatorio)la palabra a analizar

Cómo funciona (por dentro)

Mapa de funciones

flowchart TD
  MOD[("repositorio")]
  numero["numero()"]
  numero -. datos .-> MOD
  classDef red fill:#fde7f0,stroke:#c0397b,color:#7a1e4d;
  class MOD red;

El código

# -*- coding: utf-8 -*-
"""numara.py — número gramatical (singular / plural / invariable) de una palabra.

Dos vías, en cascada:
  1) LÉXICO: si la palabra está en el repositorio, se lee su número de la etiqueta
     gramatical (restringido a categorías nominales, para no confundir con el número
     del verbo).
  2) FALLBACK ALGORÍTMICO: si no está, se compara la palabra con el plural de su
     lema (usando el pluralizador, ya validado): si coincide con el lema → singular;
     si coincide con su plural → plural; si con ambos → invariable.
"""

import pluralizador

NUM = {"S": "singular", "P": "plural", "N": "invariable"}

# […consultas al repositorio léxico (esquema interno: número por etiqueta nominal, y lemas de una forma)…]


def numero(cur, palabra):
    # 1) vía léxico: número(s) leídos de la etiqueta gramatical nominal
    cur.execute(SQL_EAGLES, (palabra,))
    nums = {NUM[r[0]] for r in cur.fetchall() if r[0] in NUM}
    fuente = "eagles" if nums else None

    if not nums:
        # 2) fallback algorítmico: comparar la palabra con el plural de cada lema
        cur.execute(SQL_LEMAS, (palabra,))
        w = palabra.lower()
        for (lema,) in cur.fetchall():
            ll = lema.lower()
            plopts = {p.lower() for p in (pluralizador.pluralizar(lema) or "").split(",") if p}
            if w == ll and w in plopts:
                nums.add("invariable")          # el lema es igual a su plural → invariable
            elif w == ll:
                nums.add("singular")            # coincide con el lema → singular
            elif w in plopts:
                nums.add("plural")              # coincide con el plural del lema → plural
        fuente = "algorítmico" if nums else None

    return {"encontrado": bool(nums), "numero": sorted(nums), "fuente": fuente}

Pruébalo

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

Ejemplos con el SDK

curl "https://api.wordkers.com/v1/numero" \
  -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