Tokenizer y Lematizador

Tokenizador y Lematizador

Resultado de Tokenización y Lematización

Tokenización:

Lematización:

from flask import Flask, request, jsonify
from flask_cors import CORS
import spacy

app = Flask(__name__)
CORS(app, resources={r"/procesar_texto": {"origins": "https://kawashiro.dev", "methods": ["POST"], "allow_headers": ["Content-Type"]}})

nlp_es = None

def cargar_modelos():
    global nlp_es
    try:
        nlp_es = spacy.load("es_core_news_sm")
        print("Modelo de spaCy para español cargado.")
    except OSError as e:
        print(f"Error al cargar modelo para español: {e}")
        print("Asegúrate de haber descargado el modelo 'es_core_news_sm' de spaCy.")
        print("Puedes hacerlo ejecutando: python -m spacy download es_core_news_sm")
        raise

cargar_modelos()

def tokenizar_lematizar(texto):
    global nlp_es
    doc = nlp_es(texto)
    tokens = [token.text for token in doc]
    caracteres_a_excluir = [",", ".", "(", ")", "*", "&", "^", "%", "$", "#", "@", "!"]
    lemas_filtrados = [
        token.lemma_ for token in doc
        if token.lemma_ not in caracteres_a_excluir and token.is_alpha
    ]
    return {"tokens": tokens, "lemas": lemas_filtrados}

@app.route('/procesar_texto', methods=['POST'])
def procesar_texto():
    data = request.get_json()
    if not data or 'texto' not in data:
        return jsonify({"error": "No se proporcionó texto para procesar"}), 400

    texto = data['texto']
    resultados = tokenizar_lematizar(texto)
    return jsonify(resultados)

if __name__ == '__main__':
    app.run(debug=False, host='0.0.0.0', port=8000)