</> Cómo funciona

Clasificar palabras de una frase (auxiliar)

GET
/v1/diccionario/registros
★★☆{ }w1📅

Auxiliar: dada una frase, clasifica sus palabras según tengan o no entrada en el diccionario (clasificar todas · validos las registradas · invalidos las que no).

Parámetros

parámetrotipopor defectoqué hace
frasestring— (obligatorio)la frase o texto
modostringclasificarclasificar / validos / invalidos

Cómo funciona (por dentro)

</>Este endpoint es parte de un módulo con más funciones. Ver el módulo completo →

Mapa de funciones

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

El código

# -*- coding: utf-8 -*-
"""diccionario.py — diccionario semántico: una red de asociación de palabras.

Toda consulta LEMATIZA primero la palabra y busca por el LEMA (no por la forma
concreta), sobre la unidad léxica y sus explicaciones. Se apoya en el Índice de
Contiguidad (palabras del mismo campo semántico están "cerca").

Un solo módulo da servicio a varios endpoints del diccionario: definición, ejemplo,
palabras relacionadas, colocaciones, traducción, audio, clasificación de una frase
y el cruce con los refranes. Todos comparten la misma búsqueda base por lema.
"""

import urllib.parse as _url

_IMG_BASE = "https://diccionario.wordkers.es/media/img/"
_AUDIO_BASE = "https://diccionario.wordkers.es/audio/"

# […consultas al repositorio del diccionario + tabla de idiomas (esquema interno)…]


















def _quitar_puntuacion(frase):
    import re
    return re.sub(r"[^0-9A-Za-zÁÉÍÓÚÜÑáéíóúüñ\s]", " ", frase or "")


def registros(cur, frase, modo="clasificar"):
    """Auxiliar: clasifica cada palabra de una frase según tenga o no entrada en el
    diccionario. `modo`: clasificar (todas, con su estado) / validos / invalidos."""
    out = []
    for p in _quitar_puntuacion(frase).split():
        cur.execute(_SQL_REG_LEMAS, (p,))
        lemas = [x[0] for x in cur.fetchall()] or [p]
        registrado_alguno = False
        for lema in lemas:
            cur.execute(_SQL_REG_CHECK, (lema,))
            reg = cur.fetchone() is not None
            registrado_alguno = registrado_alguno or reg
            if modo == "clasificar":
                out.append({"entrada": p, "registro": lema, "registrado": reg})
            elif modo == "validos" and reg:
                out.append({"entrada": p, "registro": lema, "registrado": True})
        if modo == "invalidos" and not registrado_alguno:
            out.append({"entrada": p, "registrado": False})
    return {"frase": frase, "modo": modo, "resultados": out}

Pruébalo

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

Ejemplos con el SDK

curl "https://api.wordkers.com/v1/diccionario/registros?frase=casa" \
  -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