</> Cómo funciona
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ámetro | tipo | por defecto | qué hace |
|---|---|---|---|
frase | string | — (obligatorio) | la frase o texto |
modo | string | clasificar | clasificar / validos / invalidos |
commons/diccionario.py — un solo módulo con la búsqueda base _mvs() y las funciones de cada endpoint (definición, ejemplo, relacionadas, colocaciones, traducción, audio, registros, refranes)._mvs() y encima aplican su especialidad. Por eso son una sola página.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;# -*- 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}
Llámala con el código a la vista.
curl "https://api.wordkers.com/v1/diccionario/registros?frase=casa" \
-H "X-API-Key: TU_CLAVE"