Skip to content
Snippets Groups Projects
Commit 1c72cc6d authored by Simon Will's avatar Simon Will
Browse files

Add endpoint for retrieving evaluation results

parent 6834a6e8
No related branches found
No related tags found
No related merge requests found
......@@ -13,3 +13,9 @@ class EvaluationResult(BaseModel):
@property
def accuracy(self):
return self.correct / self.total
def json_ready_dict(self) -> dict:
d = super().json_ready_dict()
d['accuracy'] = self.accuracy
return d
......@@ -3,3 +3,4 @@ from .feedback import (get_feedback, edit_feedback, query_feedback,
save_feedback)
from .translate import translate
from .train import train
from .validate import validate, validations
......@@ -7,7 +7,7 @@ from flask import current_app, jsonify, request
from joeynmt_server.app import create_app
from joeynmt_server.models import Lock
from joeynmt_server.trainer import train_n_rounds, validate as validate_on_data
from joeynmt_server.trainer import train_n_rounds
from joeynmt_server.utils.helper import get_utc_now
......@@ -49,29 +49,3 @@ def check_train_status():
still_training = False
return jsonify({'still_training': still_training})
@current_app.route('/validate', methods=['POST'])
def validate():
data = request.json
config_basename = data.get('model')
dataset = data.get('dataset', 'dev')
def validate_in_thread():
app = create_app()
with app.app_context():
try:
validate_on_data(config_basename, dataset)
except:
logging.error('Training failed.')
logging.error(traceback.format_exc())
thread = threading.Thread(target=validate_in_thread)
thread.start()
time.sleep(0.1)
response = {'validating': thread.is_alive()}
status = 200 if response['validating'] else 500
return jsonify(response), status
import logging
import threading
import time
import traceback
from flask import current_app, jsonify, request
from joeynmt_server.app import create_app
from joeynmt_server.models import EvaluationResult
from joeynmt_server.trainer import validate as validate_on_data
@current_app.route('/validate', methods=['POST'])
def validate():
data = request.json
config_basename = data.get('model')
dataset = data.get('dataset', 'dev')
def validate_in_thread():
app = create_app()
with app.app_context():
try:
validate_on_data(config_basename, dataset)
except:
logging.error('Training failed.')
logging.error(traceback.format_exc())
thread = threading.Thread(target=validate_in_thread)
thread.start()
time.sleep(0.1)
response = {'validating': thread.is_alive()}
status = 200 if response['validating'] else 500
return jsonify(response), status
@current_app.route('/validations', methods='GET')
def validations():
label = request.args.get('label')
if label:
results = EvaluationResult.query.filter_by(label=label).all()
else:
results = EvaluationResult.query.all()
results = [result.json_ready_dict() for result in results]
return jsonify(results)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment