diff --git a/dictionary/ajax_lemma_view.py b/dictionary/ajax_lemma_view.py index 0a91099..37f9a6e 100644 --- a/dictionary/ajax_lemma_view.py +++ b/dictionary/ajax_lemma_view.py @@ -316,35 +316,31 @@ def get_frame_filter_options(request): # pobieranie wartosci aspektu aspect_model = Frame_Char_Model.objects.get(model_name=u'ASPEKT') aspect_vals_objs = aspect_model.frame_char_values.order_by('-priority') - aspect_str_list = [] - for aspect_val in aspect_vals_objs: - aspect_str_list.append(aspect_val.value) + aspect_str_list = [val.value for val in aspect_vals_objs] # pobieranie wartosci zwrotnosci reflex_model = Frame_Char_Model.objects.get(model_name=u'ZWROTNOŚĆ') reflex_vals_objs = reflex_model.frame_char_values.order_by('-priority') - reflex_str_list = [] - for reflex_val in reflex_vals_objs: - reflex_str_list.append(reflex_val.value) + reflex_str_list = [val.value for val in reflex_vals_objs] # pobieranie wartosci negatywnosci neg_model = Frame_Char_Model.objects.get(model_name=u'NEGATYWNOŚĆ') neg_vals_objs = neg_model.frame_char_values.order_by('-priority') - neg_str_list = [] - for neg_val in neg_vals_objs: - neg_str_list.append(neg_val.value) + neg_str_list = [val.value for val in neg_vals_objs] # pobieranie wartosci predykatywnosci pred_model = Frame_Char_Model.objects.get(model_name=u'PREDYKATYWNOŚĆ') pred_vals_objs = pred_model.frame_char_values.order_by('-priority') - pred_str_list = [] - for pred_val in pred_vals_objs: - pred_str_list.append(pred_val.value) + pred_str_list = [val.value for val in pred_vals_objs] + + # pobieranie opinii o schemacie + opinion_str_list = [val.value for val in Frame_Opinion_Value.objects.order_by('priority')] return {'reflex_options': reflex_str_list, 'aspect_options': aspect_str_list, - 'neg_options' : neg_str_list, - 'pred_options' : pred_str_list} + 'neg_options': neg_str_list, + 'pred_options': pred_str_list, + 'opinion_options': opinion_str_list} @render('lemma_desc.html') @@ -938,8 +934,10 @@ def filter_form_submit(request, form_data): if filter_dict['frame_opinion']: frame_opinion_obj = Frame_Opinion_Value.objects.get(id=filter_dict['frame_opinion']) + opinion_val = frame_opinion_obj.value else: frame_opinion_obj = None + opinion_val = '*' if 'frame_phraseologic' in filter_dict: frame_phraseologic = filter_dict['frame_phraseologic'] @@ -987,6 +985,7 @@ def filter_form_submit(request, form_data): 'reflex' : reflex_val, 'negativity' : negativity_val, 'predicativity': pred_val, + 'opinion' : opinion_val, 'aspect' : aspect_val, 'position' : filter_dict['has_position'], 'argument' : filter_dict['has_argument']} @@ -2793,6 +2792,8 @@ def pos_regex_frames(frames, string): possible_frames = possible_frames.exclude(positions__in=model_results) else: possible_frames = possible_frames.filter(positions__in=model_results) + elif not model_results.exists() and not negation: + possible_frames = Frame.objects.none() alternative_queries.append(Q(id__in=possible_frames)) frames = frames.filter(reduce(operator.or_, alternative_queries)).distinct() except: @@ -2819,6 +2820,8 @@ def arg_regex_frames(frames, string): possible_frames = possible_frames.exclude(positions__arguments__in=model_results) else: possible_frames = possible_frames.filter(positions__arguments__in=model_results) + elif not model_results.exists() and not negation: + possible_frames = Frame.objects.none() alternative_queries.append(Q(id__in=possible_frames)) frames = frames.filter(reduce(operator.or_, alternative_queries)).distinct() except: @@ -2860,7 +2863,7 @@ def get_lemma_query(prepared_sort_rules, filter_rules, lemma_query, user): if filter_rules['frame_opinion']: lemmas = lemmas.filter(frame_opinions__value=filter_rules['frame_opinion']) - frames = Frame.objects + frames = Frame.objects.all() if filter_rules['reflex']: frames = frames.filter(characteristics=filter_rules['reflex']) if filter_rules['negativity']: @@ -2878,10 +2881,14 @@ def get_lemma_query(prepared_sort_rules, filter_rules, lemma_query, user): if (filter_rules['reflex'] or filter_rules['negativity'] or filter_rules['aspect'] or filter_rules['predicativity'] or - filter_rules['frame_phraseologic'] or + filter_rules['frame_phraseologic'] or filter_rules['frame_opinion'] or (filter_rules['argument'] and filter_rules['argument'] != '.*') or (filter_rules['position'] and filter_rules['position'] != '.*')): - lemmas = lemmas.filter(frames__in=frames).distinct() + if filter_rules['frame_opinion']: + lemmas = lemmas.filter(frame_opinions__frame__in=frames, + frame_opinions__value=filter_rules['frame_opinion']).distinct() + else: + lemmas = lemmas.filter(frames__in=frames).distinct() if filter_rules['sender']: lemmas = lemmas.filter(messages__sender=filter_rules['sender']) diff --git a/dictionary/management/commands/create_walenty.py b/dictionary/management/commands/create_walenty.py index b55a9c6..2b94495 100644 --- a/dictionary/management/commands/create_walenty.py +++ b/dictionary/management/commands/create_walenty.py @@ -43,23 +43,24 @@ class Command(BaseCommand): now = datetime.datetime.now().strftime('%Y%m%d') filename_base = '%s_%s' % ('walenty', now) realizations_path = os.path.join(WALENTY_PATH, - ' %s_%s.txt' % ('phrase_types_expand', now)) + '%s_%s.txt' % ('phrase_types_expand', now)) checked_stats_path = os.path.join(WALENTY_PATH, u'%s_%s.txt' % (filename_base.replace('walenty', 'stats'), 'verified')) ready_stats_path = os.path.join(WALENTY_PATH, u'%s_%s.txt' % (filename_base.replace('walenty', 'stats'), 'all')) - create_realizations_file(realizations_path) try: all_stats = Counter({}) verified_stats = Counter({}) base_path = os.path.join(WALENTY_PATH, filename_base) archive = tarfile.open(base_path + '.tar.gz', 'w:gz') os.chdir(WALENTY_PATH) - archive.add(os.path.basename(realizations_path)) for pos in POS.objects.exclude(tag=u'unk').order_by('priority'): pos_stats = create_pos_archive_and_get_stats(archive, pos, filename_base) all_stats = all_stats + Counter(pos_stats['all']) verified_stats = verified_stats + Counter(pos_stats['verified']) + + create_realizations_file(realizations_path) + archive.add(os.path.basename(realizations_path)) write_stats(checked_stats_path, verified_stats) archive.add(os.path.basename(checked_stats_path)) write_stats(ready_stats_path, all_stats) @@ -107,21 +108,21 @@ def create_pos_archive_and_get_stats(archive, pos, filename_base): archive.add(name=checked_filename, arcname=os.path.join(u'%ss' % pos.tag, checked_filename)) all_stats = get_stats(ready_statuses, pos.tag) - all_stats_path = os.path.join(WALENTY_PATH, u'%s_%ss_%s' % (filename_base.replace('walenty', 'stats'), - pos.tag, 'all')) + all_stats_path = os.path.join(WALENTY_PATH, u'%s_%ss_%s.txt' % (filename_base.replace('walenty', 'stats'), + pos.tag, 'all')) write_stats(all_stats_path, all_stats) all_stats_filename = os.path.basename(all_stats_path) archive.add(name=all_stats_filename, arcname=os.path.join(u'%ss' % pos.tag, all_stats_filename)) checked_stats = get_stats(checked_statuses, pos.tag) - checked_stats_path = os.path.join(WALENTY_PATH, u'%s_%ss_%s' % (filename_base.replace('walenty', 'stats'), - pos.tag, 'verified')) + checked_stats_path = os.path.join(WALENTY_PATH, u'%s_%ss_%s.txt' % (filename_base.replace('walenty', 'stats'), + pos.tag, 'verified')) write_stats(checked_stats_path, checked_stats) checked_stats_filename = os.path.basename(checked_stats_path) archive.add(name=checked_stats_filename, arcname=os.path.join(u'%ss' % pos.tag, checked_stats_filename)) finally: - os.remove(walenty_path_ready) - os.remove(walenty_path_checked) +# os.remove(walenty_path_ready) +# os.remove(walenty_path_checked) os.remove(all_stats_path) os.remove(checked_stats_path) return {'all': all_stats, diff --git a/dictionary/static/js/lemma-view.js b/dictionary/static/js/lemma-view.js index 5636c54..558740b 100644 --- a/dictionary/static/js/lemma-view.js +++ b/dictionary/static/js/lemma-view.js @@ -26,16 +26,19 @@ var nkjp_source_tab = ax_nkjp_source_vals; var reflex_vals = []; var neg_vals = []; var pred_vals = []; + var opinion_vals = []; var filter_aspect_val = '*'; var filter_reflex_val = '*'; var filter_neg_val = '*'; var filter_pred_val = '*'; + var filter_opinion_val = '*'; var filter_position_val = '.*'; var filter_argument_val = '.*'; var prev_filter_aspect_val = '*'; var prev_filter_reflex_val = '*'; var prev_filter_neg_val = '*'; var prev_filter_pred_val = '*'; + var prev_filter_opinion_val = '*'; var prev_filter_position_val = '.*'; var prev_filter_argument_val = '.*'; var prev_lemma_id = -1; @@ -86,10 +89,12 @@ function initiateFrameFilters() window.reflex_vals = ['*']; window.neg_vals = ['*']; window.pred_vals = ['*']; + window.opinion_vals = ['*']; $.merge(window.aspect_vals, result['aspect_options']); $.merge(window.reflex_vals, result['reflex_options']); $.merge(window.neg_vals, result['neg_options']); $.merge(window.pred_vals, result['pred_options']); + $.merge(window.opinion_vals, result['opinion_options']); }, error_callback: function(xhr, status, error) { @@ -205,6 +210,7 @@ function filter_update(id) window.filter_reflex_val = $('#frame_filter #reflex_filter').val(); window.filter_neg_val = $('#frame_filter #neg_filter').val(); window.filter_pred_val = $('#frame_filter #pred_filter').val(); + window.filter_opinion_val = $('#frame_filter #opinion_filter').val(); window.filter_position_val = $('#frame_filter #position_filter').val(); window.filter_argument_val = $('#frame_filter #argument_filter').val(); } @@ -214,6 +220,7 @@ function filter_update(id) window.prev_filter_reflex_val = $('#prev_frame_filter #reflex_filter').val(); window.prev_filter_neg_val = $('#prev_frame_filter #neg_filter').val(); window.prev_filter_pred_val = $('#prev_frame_filter #pred_filter').val(); + window.prev_filter_opinion_val = $('#prev_frame_filter #opinion_filter').val(); window.prev_filter_position_val = $('#prev_frame_filter #position_filter').val(); window.prev_filter_argument_val = $('#prev_frame_filter #argument_filter').val(); } @@ -289,6 +296,22 @@ function draw_frames_filter(id) frame_filter.appendChild(p); p = document.createElement('p'); + text = document.createTextNode("Opinia: "); + p.appendChild(text); + select = document.createElement('select'); + select.setAttribute('id', 'opinion_filter'); + select.setAttribute('name', 'OPINIA'); + p.appendChild(select); + for(var i=0; i<opinion_vals.length; i++) + { + var option = document.createElement('option'); + option.setAttribute('value', opinion_vals[i]); + option.appendChild(document.createTextNode(opinion_vals[i])); + select.appendChild(option); + } + frame_filter.appendChild(p); + + p = document.createElement('p'); text = document.createTextNode("Typ frazy: "); p.appendChild(text); select = document.createElement('input'); @@ -312,6 +335,7 @@ function draw_frames_filter(id) $('#frame_filter #reflex_filter').val(window.filter_reflex_val); $('#frame_filter #neg_filter').val(window.filter_neg_val); $('#frame_filter #pred_filter').val(window.filter_pred_val); + $('#frame_filter #opinion_filter').val(window.filter_opinion_val); $('#frame_filter #position_filter').val(window.filter_position_val); $('#frame_filter #argument_filter').val(window.filter_argument_val); } @@ -321,6 +345,7 @@ function draw_frames_filter(id) $('#prev_frame_filter #reflex_filter').val(window.prev_filter_reflex_val); $('#prev_frame_filter #neg_filter').val(window.prev_filter_neg_val); $('#prev_frame_filter #pred_filter').val(window.prev_filter_pred_val); + $('#prev_frame_filter #opinion_filter').val(window.prev_filter_opinion_val); $('#prev_frame_filter #position_filter').val(window.prev_filter_position_val); $('#prev_frame_filter #argument_filter').val(window.prev_filter_argument_val); } @@ -3287,6 +3312,7 @@ function filter_frames(schemas, filter_id) var reflex_val = $('#'+filter_id+' #reflex_filter').val(); var neg_val = $('#'+filter_id+' #neg_filter').val(); var pred_val = $('#'+filter_id+' #pred_filter').val(); + var opinion_val = $('#'+filter_id+' #opinion_filter').val(); var position_val = $('#'+filter_id+' #position_filter').val().trim(); var argument_val = $('#'+filter_id+' #argument_filter').val().trim(); var filtered_frames = new Array(); @@ -3301,7 +3327,8 @@ function filter_frames(schemas, filter_id) if((schemas[i].characteristics[3] == aspect_val || aspect_val == '*') && (schemas[i].characteristics[0] == reflex_val || reflex_val == '*') && (schemas[i].characteristics[1] == neg_val || neg_val == '*') - && (schemas[i].characteristics[2] == pred_val || pred_val == '*')) + && (schemas[i].characteristics[2] == pred_val || pred_val == '*') + && (schemas[i].opinion == opinion_val || opinion_val == '*')) { frameMatch = false; if(position_val) diff --git a/dictionary/static/js/lemma_grid.js b/dictionary/static/js/lemma_grid.js index 5691d32..ad19f55 100644 --- a/dictionary/static/js/lemma_grid.js +++ b/dictionary/static/js/lemma_grid.js @@ -276,11 +276,15 @@ function filter_form_submit() { { window.prev_filter_reflex_val = result['reflex']; window.prev_filter_neg_val = result['negativity']; + window.prev_filter_pred_val = result['predicativity']; + window.prev_filter_opinion_val = result['opinion']; window.prev_filter_aspect_val = result['aspect']; window.prev_filter_position_val = result['position']; window.prev_filter_argument_val = result['argument']; $('#prev_frame_filter #reflex_filter').val(result['reflex']); $('#prev_frame_filter #neg_filter').val(result['negativity']); + $('#prev_frame_filter #pred_filter').val(result['predicativity']); + $('#prev_frame_filter #opinion_filter').val(result['opinion']); $('#prev_frame_filter #aspect_filter').val(result['aspect']); $('#prev_frame_filter #argument_filter').val(result['argument']); $('#prev_frame_filter #position_filter').val(result['position']); @@ -290,11 +294,15 @@ function filter_form_submit() { { window.filter_reflex_val = result['reflex']; window.filter_neg_val = result['negativity']; + window.filter_pred_val = result['predicativity']; + window.filter_opinion_val = result['opinion']; window.filter_aspect_val = result['aspect']; window.filter_position_val = result['position']; window.filter_argument_val = result['argument']; $('#frame_filter #reflex_filter').val(result['reflex']); $('#frame_filter #neg_filter').val(result['negativity']); + $('#frame_filter #pred_filter').val(result['predicativity']); + $('#frame_filter #opinion_filter').val(result['opinion']); $('#frame_filter #aspect_filter').val(result['aspect']); $('#frame_filter #argument_filter').val(result['argument']); $('#frame_filter #position_filter').val(result['position']); diff --git a/dictionary/templates/lemma_preview.html b/dictionary/templates/lemma_preview.html index 6e2afab..963f9a7 100644 --- a/dictionary/templates/lemma_preview.html +++ b/dictionary/templates/lemma_preview.html @@ -137,6 +137,7 @@ function unselectPrevTd(id) window.prev_filter_reflex_val = $('#prev_frame_filter #reflex_filter').val(); window.prev_filter_neg_val = $('#prev_frame_filter #neg_filter').val(); window.prev_filter_pred_val = $('#prev_frame_filter #pred_filter').val(); + window.prev_filter_opinion_val = $('#prev_frame_filter #opinion_filter').val(); window.prev_filter_position_val = $('#prev_frame_filter #position_filter').val(); window.prev_filter_argument_val = $('#prev_frame_filter #argument_filter').val(); @@ -242,6 +243,7 @@ $(document).ready(function() { $('#prev_frame_filter #reflex_filter').change(draw_filtered_prev_frames); $('#prev_frame_filter #neg_filter').change(draw_filtered_prev_frames); $('#prev_frame_filter #pred_filter').change(draw_filtered_prev_frames); + $('#prev_frame_filter #opinion_filter').change(draw_filtered_prev_frames); $('#prev_frame_filter #argument_filter').change(draw_filtered_prev_frames); $('#prev_frame_filter #position_filter').change(draw_filtered_prev_frames); $('#prev_filter_frames_options #options').click(function(event) { @@ -253,13 +255,15 @@ $(document).ready(function() { window.prev_filter_aspect_val = '*'; window.prev_filter_reflex_val = '*'; window.prev_filter_neg_val = '*'; - window.prev_filter_pred_val = '*'; + window.prev_filter_pred_val = '*'; + window.prev_filter_opinion_val = '*'; $('#prev_frame_filter #argument_filter').val(window.prev_filter_argument_val); $('#prev_frame_filter #position_filter').val(window.prev_filter_position_val); $('#prev_frame_filter #aspect_filter').val(window.prev_filter_aspect_val); $('#prev_frame_filter #reflex_filter').val(window.prev_filter_reflex_val); $('#prev_frame_filter #neg_filter').val(window.prev_filter_neg_val); $('#prev_frame_filter #pred_filter').val(window.prev_filter_pred_val); + $('#prev_frame_filter #opinion_filter').val(window.prev_filter_opinion_val); $('#prev_frame_filter #argument_filter').trigger('change'); }); draw_filtered_prev_frames(); diff --git a/dictionary/templates/new_frames.html b/dictionary/templates/new_frames.html index 5233a14..5b2753a 100644 --- a/dictionary/templates/new_frames.html +++ b/dictionary/templates/new_frames.html @@ -38,6 +38,7 @@ window.filter_reflex_val = $('#frame_filter #reflex_filter').val(); window.filter_neg_val = $('#frame_filter #neg_filter').val(); window.filter_pred_val = $('#frame_filter #pred_filter').val(); + window.filter_opinion_val = $('#frame_filter #opinion_filter').val(); window.filter_position_val = $('#frame_filter #position_filter').val(); window.filter_argument_val = $('#frame_filter #argument_filter').val(); @@ -289,6 +290,7 @@ $(document).ready(function() { $('#frame_filter #reflex_filter').change(draw_filtered_new_frames); $('#frame_filter #neg_filter').change(draw_filtered_new_frames); $('#frame_filter #pred_filter').change(draw_filtered_new_frames); + $('#frame_filter #opinion_filter').change(draw_filtered_new_frames); $('#frame_filter #argument_filter').change(draw_filtered_new_frames); $('#frame_filter #position_filter').change(draw_filtered_new_frames); $('#filter_frames_options #options').click(function(event) { @@ -301,12 +303,14 @@ $(document).ready(function() { window.filter_reflex_val = '*'; window.filter_neg_val = '*'; window.filter_pred_val = '*'; + window.filter_opinion_val = '*'; $('#frame_filter #argument_filter').val(window.filter_argument_val); $('#frame_filter #position_filter').val(window.filter_position_val); $('#frame_filter #aspect_filter').val(window.filter_aspect_val); $('#frame_filter #reflex_filter').val(window.filter_reflex_val); $('#frame_filter #neg_filter').val(window.filter_neg_val); $('#frame_filter #pred_filter').val(window.filter_pred_val); + $('#frame_filter #opinion_filter').val(window.filter_opinion_val); $('#frame_filter #argument_filter').trigger('change'); });