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): ...@@ -13,3 +13,9 @@ class EvaluationResult(BaseModel):
@property @property
def accuracy(self): def accuracy(self):
return self.correct / self.total 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, ...@@ -3,3 +3,4 @@ from .feedback import (get_feedback, edit_feedback, query_feedback,
save_feedback) save_feedback)
from .translate import translate from .translate import translate
from .train import train from .train import train
from .validate import validate, validations
...@@ -7,7 +7,7 @@ from flask import current_app, jsonify, request ...@@ -7,7 +7,7 @@ from flask import current_app, jsonify, request
from joeynmt_server.app import create_app from joeynmt_server.app import create_app
from joeynmt_server.models import Lock 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 from joeynmt_server.utils.helper import get_utc_now
...@@ -49,29 +49,3 @@ def check_train_status(): ...@@ -49,29 +49,3 @@ def check_train_status():
still_training = False still_training = False
return jsonify({'still_training': still_training}) 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