Added detailed examples endpoint and modified results.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import configparser
|
||||
import csv
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import random
|
||||
@@ -130,10 +131,65 @@ def create_app():
|
||||
for subtree_id in subtree_ids:
|
||||
annodoc += f'# visual-style {subtree_id} bgColor:lightgreen\n'
|
||||
with open(os.path.join('media', result_id, 'annodoc', sentence_id), 'r') as rf:
|
||||
# annodoc += '\n'.join(rf.readlines())
|
||||
annodoc += rf.read() + '\n\n'
|
||||
return {'annodoc': annodoc}
|
||||
# return '<div>' + annodoc + '</div>'
|
||||
|
||||
@app.route('/stark/result/<result_id>/<subtree_hash>', methods=['GET'])
|
||||
def examples(result_id, subtree_hash):
|
||||
# find example details
|
||||
with open(os.path.join('media', result_id, 'result.tsv'), 'r') as rf:
|
||||
content = list(csv.reader(rf, delimiter='\t'))
|
||||
head = content[0]
|
||||
content_dict = {h: [] for h in head}
|
||||
table_columns2displayed_table_columns = {
|
||||
'Tree': gettext('Tree'),
|
||||
'Absolute frequency': gettext('Frequency'),
|
||||
'Absolute frequency in second treebank': gettext('Frequency in B'),
|
||||
'Order': gettext('Order'),
|
||||
'Number of nodes': gettext('Number of nodes'),
|
||||
'Head node': gettext('Head node'),
|
||||
'Grew-match URL': gettext('Grew-match URL'),
|
||||
'Ratio': gettext('Ratio'),
|
||||
'%DIFF': gettext('%DIFF'),
|
||||
'OR': gettext('OR'),
|
||||
'BIC': gettext('BIC'),
|
||||
'MI': gettext('MI'),
|
||||
'logDice': gettext('logDice'),
|
||||
't-score': gettext('t-score')
|
||||
}
|
||||
if 'Absolute frequency in second treebank' in head:
|
||||
table_columns2displayed_table_columns['Absolute frequency'] = gettext('Frequency in A')
|
||||
else:
|
||||
del table_columns2displayed_table_columns['Absolute frequency in second treebank']
|
||||
displayed_table_columns2table_columns = {v: k for k, v in table_columns2displayed_table_columns.items()}
|
||||
|
||||
annodoc_index = head.index('Annodoc')
|
||||
|
||||
selected_content = [row for row in content[1:]
|
||||
if json.loads(row[annodoc_index])['subtree_hash'] == subtree_hash]
|
||||
|
||||
for i, row in enumerate(selected_content):
|
||||
for j, v in enumerate(row):
|
||||
content_dict[head[j]].append(v)
|
||||
|
||||
head = [(k, v) for k, v in table_columns2displayed_table_columns.items() if k in head]
|
||||
|
||||
displayed_content_dict = {}
|
||||
for f_h, h in head:
|
||||
if f_h == '%DIFF' or f_h == 'OR':
|
||||
displayed_content_dict[f_h] = [sci_notation(eval(n)) for n in
|
||||
content_dict[displayed_table_columns2table_columns[h]]]
|
||||
else:
|
||||
displayed_content_dict[f_h] = content_dict[displayed_table_columns2table_columns[h]]
|
||||
|
||||
# add visualization parts to dict
|
||||
visualization_dict = {'example_id': [], 'example_positions': []}
|
||||
with open(os.path.join('media', result_id, 'annodoc_detailed', subtree_hash), 'r') as rf:
|
||||
for vis in list(csv.reader(rf, delimiter='\t')):
|
||||
visualization_dict['example_id'].append(vis[0])
|
||||
visualization_dict['example_positions'].append('+'.join(map(str, eval(vis[1]))))
|
||||
|
||||
return render_template('examples.html', head=head, content=displayed_content_dict, visualization=visualization_dict)
|
||||
|
||||
@app.route('/stark/result/<result_id>', methods=['GET', 'POST'])
|
||||
def result(result_id):
|
||||
@@ -158,6 +214,7 @@ def create_app():
|
||||
with open(os.path.join('media', result_id, 'result.tsv'), 'r') as rf:
|
||||
|
||||
content = list(csv.reader(rf, delimiter='\t'))
|
||||
content = [con + [str(i)] for i, con in enumerate(content)]
|
||||
head = content[0]
|
||||
content_dict = {h: [] for h in head}
|
||||
table_columns2displayed_table_columns = {
|
||||
@@ -215,7 +272,7 @@ def create_app():
|
||||
annodoc_data = [json.loads(el) for el in content_dict['Annodoc']]
|
||||
displayed_content_dict['example_id'] = [el['id'] for el in annodoc_data]
|
||||
displayed_content_dict['example_positions'] = ['+'.join([str(p) for p in el['positions']]) for el in annodoc_data]
|
||||
|
||||
displayed_content_dict['subtree_hash'] = [el['subtree_hash'] for el in annodoc_data]
|
||||
|
||||
return render_template('result.html', head=head, content=displayed_content_dict)
|
||||
|
||||
@@ -380,6 +437,8 @@ def create_app():
|
||||
|
||||
configs['output'] = os.path.join(output_path, 'result.tsv')
|
||||
configs['annodoc_example_dir'] = os.path.join(output_path, 'annodoc')
|
||||
configs['annodoc_detailed_dir'] = os.path.join(output_path, 'annodoc_detailed')
|
||||
configs['detailed_results_file'] = os.path.join(output_path, 'detailed_results_file.tsv')
|
||||
if len(validation) > 0:
|
||||
return render_template('index.html', validation=validation, translations=translations)
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user