#-*- coding:utf-8 -*- # author: B.Niton import codecs import operator from collections import Counter from django.core.management.base import BaseCommand from dictionary.models import * #PHRASEOLOGIC_TYPES = ['comprepnp', 'preplexnp', 'lexnp', 'lex', # 'fixed'] class Command(BaseCommand): help = 'Get slowal statistics.' def handle(self, **options): all_statuses = [Q(status__status=u'gotowe'), Q(status__status=u'zalążkowe'), Q(status__status=u'sprawdzone'), Q(status__status=u'(F) w obróbce'), Q(status__status=u'(F) gotowe'), Q(status__status=u'(F) sprawdzone'), Q(status__status=u'(S) w obróbce'), Q(status__status=u'(S) gotowe'), Q(status__status=u'(S) sprawdzone')] verified_statuses = [Q(status__status=u'zalążkowe'), Q(status__status=u'sprawdzone'), Q(status__status=u'(F) w obróbce'), Q(status__status=u'(F) gotowe'), Q(status__status=u'(F) sprawdzone'), Q(status__status=u'(S) w obróbce'), Q(status__status=u'(S) gotowe'), Q(status__status=u'(S) sprawdzone')] nouns_stats_dict_all = Counter(get_nouns_stats('data/statystyki_2015_06_30_nouns_all.txt', all_statuses)) nouns_stats_dict_verified = Counter(get_nouns_stats('data/statystyki_2015_06_30_nouns_verified.txt', verified_statuses)) adjs_stats_dict_all = Counter(get_adjs_stats('data/statystyki_2015_06_30_adjs_all.txt', all_statuses)) adjs_stats_dict_verified = Counter(get_adjs_stats('data/statystyki_2015_06_30_adjs_verified.txt', verified_statuses)) verbs_stats_dict_all = Counter(get_verb_stats('data/statystyki_2015_06_30_verbs_all.txt', all_statuses)) verbs_stats_dict_verified = Counter(get_verb_stats('data/statystyki_2015_06_30_verbs_verified.txt', verified_statuses)) advs_stats_dict_all = Counter(get_advs_stats('data/statystyki_2015_06_30_advs_all.txt', all_statuses)) advs_stats_dict_verified = Counter(get_advs_stats('data/statystyki_2015_06_30_advs_verified.txt', verified_statuses)) all_stats_dict_all = nouns_stats_dict_all + adjs_stats_dict_all + verbs_stats_dict_all + advs_stats_dict_all all_stats_dict_verified = nouns_stats_dict_verified + adjs_stats_dict_verified + verbs_stats_dict_verified + advs_stats_dict_verified write_all_stats('data/statystyki_2015_06_30_all.txt', all_stats_dict_all) write_all_stats('data/statystyki_2015_06_30_verified.txt', all_stats_dict_verified) def write_all_stats(stats_path, stats_dict): outfile = codecs.open(stats_path, 'wt', 'utf-8') outfile.write(u'Liczba argumentów: ' + str(stats_dict['arg_count']) + '\n') outfile.write(u'Liczba pozycji: ' + str(stats_dict['pos_count']) + '\n') outfile.write(u'Liczba haseł: ' + str(stats_dict['lemma_count']) + '\n') outfile.write('\n') outfile.write(u'Liczba podhaseł: ' + str(stats_dict['sub_lemma_count']) + '\n') outfile.write(u'Liczba podhaseł postaci (ZWROTNOŚĆ, NEGATYWNOŚĆ, PREDYKATYWNOŚĆ, ASPEKT)\n') outfile.write(u'Liczba podhaseł postaci (się, _, , imperf): ' + str(stats_dict['sub_sie_imperf_oboj']) + '\n') outfile.write(u'Liczba podhaseł postaci (się, _, , perf): ' + str(stats_dict['sub_sie_perf_oboj']) + '\n') outfile.write(u'Liczba podhaseł postaci (się, _, , _): ' + str(stats_dict['sub_sie_oboj_oboj']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , _, , imperf): ' + str(stats_dict['sub_imperf_oboj']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , _, , perf): ' + str(stats_dict['sub_perf_oboj']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , _, , _): ' + str(stats_dict['sub_oboj_oboj']) + '\n') outfile.write(u'Liczba podhaseł postaci (się, neg, , imperf): ' + str(stats_dict['sub_sie_imperf_neg']) + '\n') outfile.write(u'Liczba podhaseł postaci (się, neg, , perf): ' + str(stats_dict['sub_sie_perf_neg']) + '\n') outfile.write(u'Liczba podhaseł postaci (się, neg, , _): ' + str(stats_dict['sub_sie_oboj_neg']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , neg, , imperf): ' + str(stats_dict['sub_imperf_neg']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , neg, , perf): ' + str(stats_dict['sub_perf_neg']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , neg, , _): ' + str(stats_dict['sub_oboj_neg']) + '\n') outfile.write(u'Liczba podhaseł postaci (się, aff, , imperf): ' + str(stats_dict['sub_sie_imperf_aff']) + '\n') outfile.write(u'Liczba podhaseł postaci (się, aff, , perf): ' + str(stats_dict['sub_sie_perf_aff']) + '\n') outfile.write(u'Liczba podhaseł postaci (się, aff, , _): ' + str(stats_dict['sub_sie_oboj_aff']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , aff, , imperf): ' + str(stats_dict['sub_imperf_aff']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , aff, , perf): ' + str(stats_dict['sub_perf_aff']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , aff, , _): ' + str(stats_dict['sub_oboj_aff']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , , pred, ): ' + str(stats_dict['pred_lemma']) + '\n') outfile.write(u'Liczba podhaseł postaci ( , , , ): ' + str(stats_dict['npred_lemma']) + '\n') outfile.write('\n') outfile.write(u'Liczba ramek: ' + str(stats_dict['all_frames']) + '\n') outfile.write(u'Liczba ramek pewnych: ' + str(stats_dict['pewna_frames']) + '\n') outfile.write(u'Liczba ramek wątpliwych: ' + str(stats_dict['watpliwa_frames']) + '\n') outfile.write(u'Liczba ramek złych: ' + str(stats_dict['zla_frames']) + '\n') outfile.write(u'Liczba ramek archaicznych: ' + str(stats_dict['arch_frames']) + '\n') outfile.write(u'Liczba ramek potocznych: ' + str(stats_dict['potoczna_frames']) + '\n') outfile.write(u'Liczba ramek wulgarnych: ' + str(stats_dict['wulgarna_frames']) + '\n') outfile.write('\n') outfile.write(u'Liczba pozycji z większą niż jeden liczbą argumentów: ' + str(stats_dict['spec_pos']) + '\n') outfile.write(u'Liczba argumentów występujących w pozycjach o większej niż jeden liczbie argumentów: ' + str(stats_dict['spec_args']) + '\n') outfile.write(u'Liczba ramek z pozycjami wieloargumentowymi: ' + str(stats_dict['spec_frames']) + '\n') outfile.write('\n') outfile.write(u'Liczba pozycji z większą niż jeden liczbą specyfikacji: ' + str(stats_dict['spec_pos_up']) + '\n') outfile.write(u'Liczba argumentów występujących w pozycjach o większej niż jeden liczbie specyfikacji: ' + str(stats_dict['spec_args_up']) + '\n') outfile.write(u'Liczba ramek z pozycjami o większej niż jeden liczbie specyfikacji: ' + str(stats_dict['spec_frames_up']) + '\n') outfile.write(u'Liczba ramek frazeologicznych: ' + str(stats_dict['frames_with_phraseology']) + '\n') outfile.write('\n') outfile.write(u'Hasła zawierające schematy frazeologiczne: ' + str(stats_dict['lemmas_with_phraseology']) + '\n') outfile.write(u'Hasła zawierające pozycje z koordynacją: ' + str(stats_dict['lemmas_with_coordination']) + '\n') outfile.close() def get_adjs_stats(stats_path, q_statuses): print 'Be patient, it can take a while.' outfile = codecs.open(stats_path, 'wt', 'utf-8') arg_count = 0 pos_count = 0 lemma_count = 0 ######################## sub_lemma_count = 0 pred_lemma = 0 npred_lemma = 0 ################## pewna_frames = 0 watpliwa_frames = 0 zla_frames = 0 arch_frames = 0 potoczna_frames = 0 wulgarna_frames = 0 all_frames = 0 spec_frames = 0 spec_pos = 0 spec_args = 0 spec_frames_up = 0 spec_pos_up = 0 spec_args_up = 0 lemmas_with_phraseology = 0 lemmas_with_coordination = 0 frames_with_phraseology = 0 lemmas = Lemma.objects.filter(old=False, entry_obj__pos__tag='adj').filter(reduce(operator.or_, q_statuses)).distinct().order_by('entry').all() for lemma in lemmas: print lemma lemma_count += 1 pewna_frames += lemma.frame_opinions.filter(value__value=u'pewny').count() watpliwa_frames += lemma.frame_opinions.filter(value__value=u'wątpliwy').count() zla_frames += lemma.frame_opinions.filter(value__value=u'zły').count() arch_frames += lemma.frame_opinions.filter(value__value=u'archaiczny').count() potoczna_frames += lemma.frame_opinions.filter(value__value=u'potoczny').count() wulgarna_frames += lemma.frame_opinions.filter(value__value=u'wulgarny').count() all_frames += lemma.frames.count() # if (lemma.frames.count() != lemma.frame_opinions.filter(value__value=u'pewna').count() + # lemma.frame_opinions.filter(value__value=u'wątpliwa').count() + # lemma.frame_opinions.filter(value__value=u'zła').count() + # lemma.frame_opinions.filter(value__value=u'archaiczna').count() + # lemma.frame_opinions.filter(value__value=u'potoczna').count() + # lemma.frame_opinions.filter(value__value=u'wulgarna').count()): # print lemma # print lemma.frame_opinions.filter(value__value=u'pewna').count() # print lemma.frame_opinions.filter(value__value=u'wątpliwa').count() # print lemma.frame_opinions.filter(value__value=u'zła').count() # print lemma.frame_opinions.filter(value__value=u'archaiczna').count() # print lemma.frame_opinions.filter(value__value=u'potoczna').count() # print lemma.frame_opinions.filter(value__value=u'wulgarna').count() ## break ################################################################################ sub_frame = lemma.frames.filter(characteristics__value__value=u'pred', characteristics__type=u'PREDYKATYWNOŚĆ') if sub_frame.count() > 0: pred_lemma += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'PREDYKATYWNOŚĆ') if sub_frame.count() > 0: npred_lemma += 1 sub_lemma_count += 1 ################################################################################# if lemma.frames.count() != lemma.frame_opinions.count(): print lemma.entry has_phraseology = False has_coordination = False for frame in lemma.frames.all(): phraseologic_frame = False pos_count += frame.positions.count() flat_frames = frame.positions.annotate(num_args=Count('arguments')).aggregate(Max('num_args'))['num_args__max'] if flat_frames > 1: spec_frames += 1 has_coordination = True if frame.has_phraseologic_arguments(): has_phraseology = True phraseologic_frame = True for pos in frame.positions.all(): args = pos.arguments.count() arg_count += args # for arg in pos.arguments.all(): # if arg.type in PHRASEOLOGIC_TYPES: # has_phraseology = True # phraseologic_frame = True # break if phraseologic_frame: frames_with_phraseology += 1 if has_phraseology: lemmas_with_phraseology += 1 if has_coordination: lemmas_with_coordination += 1 # if args > 1: # spec_pos += 1 # spec_args += args # # prep_args = pos.arguments.filter(Q(type=u'prepnp') | # Q(type=u'prepncp')) # np_args = pos.arguments.filter(Q(type=u'np') | # Q(type=u'ncp')) # similar_args = True # if prep_args.count() == args: # first_arg_case = prep_args.all()[0].atributes.get(type=u'PRZYPADEK').atribute_value.value # first_arg_prep = prep_args.all()[0].atributes.get(type=u'PRZYIMEK').atribute_value.value # for arg in prep_args: # if (first_arg_case != arg.atributes.get(type=u'PRZYPADEK').atribute_value.value or # first_arg_prep != arg.atributes.get(type=u'PRZYIMEK').atribute_value.value): # similar_args = False # break # elif np_args.count() == args: # first_arg_case = np_args.all()[0].atributes.get(type=u'PRZYPADEK').atribute_value.value # for arg in np_args: # if (first_arg_case != arg.atributes.get(type=u'PRZYPADEK').atribute_value.value): # similar_args = False # break # else: # similar_args = False # if not similar_args and args > 1: # spec_pos_up += 1 # spec_args_up += args # add_spec_frame_up = True # if add_spec_frame_up: # spec_frames_up += 1 outfile.write(u'Liczba argumentów: ' + str(arg_count) + '\n') outfile.write(u'Liczba pozycji: ' + str(pos_count) + '\n') outfile.write(u'Liczba haseł: ' + str(lemma_count) + '\n') outfile.write('\n') outfile.write(u'Liczba podhaseł: ' + str(sub_lemma_count) + '\n') outfile.write(u'Liczba podhaseł postaci (ZWROTNOŚĆ, NEGATYWNOŚĆ, PREDYKATYWNOŚĆ, ASPEKT)\n') outfile.write(u'Liczba podhaseł postaci ( , , pred, ): ' + str(pred_lemma) + '\n') outfile.write(u'Liczba podhaseł postaci ( , , , ): ' + str(npred_lemma) + '\n') outfile.write('\n') outfile.write(u'Liczba ramek: ' + str(all_frames) + '\n') outfile.write(u'Liczba ramek pewnych: ' + str(pewna_frames) + '\n') outfile.write(u'Liczba ramek wątpliwych: ' + str(watpliwa_frames) + '\n') outfile.write(u'Liczba ramek złych: ' + str(zla_frames) + '\n') outfile.write(u'Liczba ramek archaicznych: ' + str(arch_frames) + '\n') outfile.write(u'Liczba ramek potocznych: ' + str(potoczna_frames) + '\n') outfile.write(u'Liczba ramek wulgarnych: ' + str(wulgarna_frames) + '\n') outfile.write('\n') outfile.write(u'Liczba pozycji z większą niż jeden liczbą argumentów: ' + str(spec_pos) + '\n') outfile.write(u'Liczba argumentów występujących w pozycjach o większej niż jeden liczbie argumentów: ' + str(spec_args) + '\n') outfile.write(u'Liczba ramek z pozycjami wieloargumentowymi: ' + str(spec_frames) + '\n') outfile.write('\n') outfile.write(u'Liczba pozycji z większą niż jeden liczbą specyfikacji: ' + str(spec_pos_up) + '\n') outfile.write(u'Liczba argumentów występujących w pozycjach o większej niż jeden liczbie specyfikacji: ' + str(spec_args_up) + '\n') outfile.write(u'Liczba ramek z pozycjami o większej niż jeden liczbie specyfikacji: ' + str(spec_frames_up) + '\n') outfile.write(u'Liczba ramek frazeologicznych: ' + str(frames_with_phraseology) + '\n') outfile.write('\n') outfile.write(u'Hasła zawierające schematy frazeologiczne: ' + str(lemmas_with_phraseology) + '\n') outfile.write(u'Hasła zawierające pozycje z koordynacją: ' + str(lemmas_with_coordination) + '\n') adjs_stats_dict = {'arg_count': arg_count, 'pos_count': pos_count, 'lemma_count': lemma_count, 'sub_lemma_count': sub_lemma_count, 'pred_lemma': pred_lemma, 'npred_lemma': npred_lemma, 'all_frames': all_frames, 'pewna_frames': pewna_frames, 'watpliwa_frames': watpliwa_frames, 'zla_frames': zla_frames, 'arch_frames': arch_frames, 'potoczna_frames': potoczna_frames, 'wulgarna_frames': wulgarna_frames, 'spec_pos': spec_pos, 'spec_args': spec_args, 'spec_frames': spec_frames, 'spec_pos_up': spec_pos_up, 'spec_args_up': spec_args_up, 'spec_frames_up': spec_frames_up, 'frames_with_phraseology': frames_with_phraseology, 'lemmas_with_phraseology': lemmas_with_phraseology, 'lemmas_with_coordination': lemmas_with_coordination } outfile.close() return adjs_stats_dict def get_nouns_stats(stats_path, q_statuses): print 'Be patient, it can take a while.' outfile = codecs.open(stats_path, 'wt', 'utf-8') arg_count = 0 pos_count = 0 lemma_count = 0 ################## pewna_frames = 0 watpliwa_frames = 0 zla_frames = 0 arch_frames = 0 potoczna_frames = 0 wulgarna_frames = 0 all_frames = 0 spec_frames = 0 spec_pos = 0 spec_args = 0 spec_frames_up = 0 spec_pos_up = 0 spec_args_up = 0 lemmas_with_phraseology = 0 lemmas_with_coordination = 0 frames_with_phraseology = 0 lemmas = Lemma.objects.filter(old=False, entry_obj__pos__tag='noun').filter(reduce(operator.or_, q_statuses)).distinct().order_by('entry').all() for lemma in lemmas: print lemma lemma_count += 1 pewna_frames += lemma.frame_opinions.filter(value__value=u'pewny').count() watpliwa_frames += lemma.frame_opinions.filter(value__value=u'wątpliwy').count() zla_frames += lemma.frame_opinions.filter(value__value=u'zły').count() arch_frames += lemma.frame_opinions.filter(value__value=u'archaiczny').count() potoczna_frames += lemma.frame_opinions.filter(value__value=u'potoczny').count() wulgarna_frames += lemma.frame_opinions.filter(value__value=u'wulgarny').count() all_frames += lemma.frames.count() # if (lemma.frames.count() != lemma.frame_opinions.filter(value__value=u'pewna').count() + # lemma.frame_opinions.filter(value__value=u'wątpliwa').count() + # lemma.frame_opinions.filter(value__value=u'zła').count() + # lemma.frame_opinions.filter(value__value=u'archaiczna').count() + # lemma.frame_opinions.filter(value__value=u'potoczna').count() + # lemma.frame_opinions.filter(value__value=u'wulgarna').count()): # print lemma # print lemma.frame_opinions.filter(value__value=u'pewna').count() # print lemma.frame_opinions.filter(value__value=u'wątpliwa').count() # print lemma.frame_opinions.filter(value__value=u'zła').count() # print lemma.frame_opinions.filter(value__value=u'archaiczna').count() # print lemma.frame_opinions.filter(value__value=u'potoczna').count() # print lemma.frame_opinions.filter(value__value=u'wulgarna').count() ## break if lemma.frames.count() != lemma.frame_opinions.count(): print lemma.entry has_phraseology = False has_coordination = False for frame in lemma.frames.all(): phraseologic_frame = False pos_count += frame.positions.count() flat_frames = frame.positions.annotate(num_args=Count('arguments')).aggregate(Max('num_args'))['num_args__max'] if flat_frames > 1: spec_frames += 1 has_coordination = True if frame.has_phraseologic_arguments(): has_phraseology = True phraseologic_frame = True for pos in frame.positions.all(): args = pos.arguments.count() arg_count += args # for arg in pos.arguments.all(): # if arg.type in PHRASEOLOGIC_TYPES: # has_phraseology = True # phraseologic_frame = True # break if phraseologic_frame: frames_with_phraseology += 1 if has_phraseology: lemmas_with_phraseology += 1 if has_coordination: lemmas_with_coordination += 1 outfile.write(u'Liczba argumentów: ' + str(arg_count) + '\n') outfile.write(u'Liczba pozycji: ' + str(pos_count) + '\n') outfile.write(u'Liczba haseł: ' + str(lemma_count) + '\n') outfile.write('\n') outfile.write('\n') outfile.write(u'Liczba ramek: ' + str(all_frames) + '\n') outfile.write(u'Liczba ramek pewnych: ' + str(pewna_frames) + '\n') outfile.write(u'Liczba ramek wątpliwych: ' + str(watpliwa_frames) + '\n') outfile.write(u'Liczba ramek złych: ' + str(zla_frames) + '\n') outfile.write(u'Liczba ramek archaicznych: ' + str(arch_frames) + '\n') outfile.write(u'Liczba ramek potocznych: ' + str(potoczna_frames) + '\n') outfile.write(u'Liczba ramek wulgarnych: ' + str(wulgarna_frames) + '\n') outfile.write('\n') outfile.write(u'Liczba pozycji z większą niż jeden liczbą argumentów: ' + str(spec_pos) + '\n') outfile.write(u'Liczba argumentów występujących w pozycjach o większej niż jeden liczbie argumentów: ' + str(spec_args) + '\n') outfile.write(u'Liczba ramek z pozycjami wieloargumentowymi: ' + str(spec_frames) + '\n') outfile.write('\n') outfile.write(u'Liczba pozycji z większą niż jeden liczbą specyfikacji: ' + str(spec_pos_up) + '\n') outfile.write(u'Liczba argumentów występujących w pozycjach o większej niż jeden liczbie specyfikacji: ' + str(spec_args_up) + '\n') outfile.write(u'Liczba ramek z pozycjami o większej niż jeden liczbie specyfikacji: ' + str(spec_frames_up) + '\n') outfile.write(u'Liczba ramek frazeologicznych: ' + str(frames_with_phraseology) + '\n') outfile.write('\n') outfile.write(u'Hasła zawierające schematy frazeologiczne: ' + str(lemmas_with_phraseology) + '\n') outfile.write(u'Hasła zawierające pozycje z koordynacją: ' + str(lemmas_with_coordination) + '\n') noun_stats_dict = {'arg_count': arg_count, 'pos_count': pos_count, 'lemma_count': lemma_count, 'sub_lemma_count': lemma_count, 'npred_lemma': lemma_count, 'all_frames': all_frames, 'pewna_frames': pewna_frames, 'watpliwa_frames': watpliwa_frames, 'zla_frames': zla_frames, 'arch_frames': arch_frames, 'potoczna_frames': potoczna_frames, 'wulgarna_frames': wulgarna_frames, 'spec_pos': spec_pos, 'spec_args': spec_args, 'spec_frames': spec_frames, 'spec_pos_up': spec_pos_up, 'spec_args_up': spec_args_up, 'spec_frames_up': spec_frames_up, 'frames_with_phraseology': frames_with_phraseology, 'lemmas_with_phraseology': lemmas_with_phraseology, 'lemmas_with_coordination': lemmas_with_coordination } outfile.close() return noun_stats_dict def get_advs_stats(stats_path, q_statuses): print 'Be patient, it can take a while.' outfile = codecs.open(stats_path, 'wt', 'utf-8') arg_count = 0 pos_count = 0 lemma_count = 0 ################## pewna_frames = 0 watpliwa_frames = 0 zla_frames = 0 arch_frames = 0 potoczna_frames = 0 wulgarna_frames = 0 all_frames = 0 spec_frames = 0 spec_pos = 0 spec_args = 0 spec_frames_up = 0 spec_pos_up = 0 spec_args_up = 0 lemmas_with_phraseology = 0 lemmas_with_coordination = 0 frames_with_phraseology = 0 lemmas = Lemma.objects.filter(old=False, entry_obj__pos__tag='adv').filter(reduce(operator.or_, q_statuses)).distinct().order_by('entry').all() for lemma in lemmas: print lemma lemma_count += 1 pewna_frames += lemma.frame_opinions.filter(value__value=u'pewny').count() watpliwa_frames += lemma.frame_opinions.filter(value__value=u'wątpliwy').count() zla_frames += lemma.frame_opinions.filter(value__value=u'zły').count() arch_frames += lemma.frame_opinions.filter(value__value=u'archaiczny').count() potoczna_frames += lemma.frame_opinions.filter(value__value=u'potoczny').count() wulgarna_frames += lemma.frame_opinions.filter(value__value=u'wulgarny').count() all_frames += lemma.frames.count() # if (lemma.frames.count() != lemma.frame_opinions.filter(value__value=u'pewna').count() + # lemma.frame_opinions.filter(value__value=u'wątpliwa').count() + # lemma.frame_opinions.filter(value__value=u'zła').count() + # lemma.frame_opinions.filter(value__value=u'archaiczna').count() + # lemma.frame_opinions.filter(value__value=u'potoczna').count() + # lemma.frame_opinions.filter(value__value=u'wulgarna').count()): # print lemma # print lemma.frame_opinions.filter(value__value=u'pewna').count() # print lemma.frame_opinions.filter(value__value=u'wątpliwa').count() # print lemma.frame_opinions.filter(value__value=u'zła').count() # print lemma.frame_opinions.filter(value__value=u'archaiczna').count() # print lemma.frame_opinions.filter(value__value=u'potoczna').count() # print lemma.frame_opinions.filter(value__value=u'wulgarna').count() ## break if lemma.frames.count() != lemma.frame_opinions.count(): print lemma.entry has_phraseology = False has_coordination = False for frame in lemma.frames.all(): phraseologic_frame = False pos_count += frame.positions.count() flat_frames = frame.positions.annotate(num_args=Count('arguments')).aggregate(Max('num_args'))['num_args__max'] if flat_frames > 1: spec_frames += 1 has_coordination = True if frame.has_phraseologic_arguments(): has_phraseology = True phraseologic_frame = True for pos in frame.positions.all(): args = pos.arguments.count() arg_count += args # for arg in pos.arguments.all(): # if arg.type in PHRASEOLOGIC_TYPES: # has_phraseology = True # phraseologic_frame = True # break if phraseologic_frame: frames_with_phraseology += 1 if has_phraseology: lemmas_with_phraseology += 1 if has_coordination: lemmas_with_coordination += 1 outfile.write(u'Liczba argumentów: ' + str(arg_count) + '\n') outfile.write(u'Liczba pozycji: ' + str(pos_count) + '\n') outfile.write(u'Liczba haseł: ' + str(lemma_count) + '\n') outfile.write('\n') outfile.write('\n') outfile.write(u'Liczba ramek: ' + str(all_frames) + '\n') outfile.write(u'Liczba ramek pewnych: ' + str(pewna_frames) + '\n') outfile.write(u'Liczba ramek wątpliwych: ' + str(watpliwa_frames) + '\n') outfile.write(u'Liczba ramek złych: ' + str(zla_frames) + '\n') outfile.write(u'Liczba ramek archaicznych: ' + str(arch_frames) + '\n') outfile.write(u'Liczba ramek potocznych: ' + str(potoczna_frames) + '\n') outfile.write(u'Liczba ramek wulgarnych: ' + str(wulgarna_frames) + '\n') outfile.write('\n') outfile.write(u'Liczba pozycji z większą niż jeden liczbą argumentów: ' + str(spec_pos) + '\n') outfile.write(u'Liczba argumentów występujących w pozycjach o większej niż jeden liczbie argumentów: ' + str(spec_args) + '\n') outfile.write(u'Liczba ramek z pozycjami wieloargumentowymi: ' + str(spec_frames) + '\n') outfile.write('\n') outfile.write(u'Liczba pozycji z większą niż jeden liczbą specyfikacji: ' + str(spec_pos_up) + '\n') outfile.write(u'Liczba argumentów występujących w pozycjach o większej niż jeden liczbie specyfikacji: ' + str(spec_args_up) + '\n') outfile.write(u'Liczba ramek z pozycjami o większej niż jeden liczbie specyfikacji: ' + str(spec_frames_up) + '\n') outfile.write(u'Liczba ramek frazeologicznych: ' + str(frames_with_phraseology) + '\n') outfile.write('\n') outfile.write(u'Hasła zawierające schematy frazeologiczne: ' + str(lemmas_with_phraseology) + '\n') outfile.write(u'Hasła zawierające pozycje z koordynacją: ' + str(lemmas_with_coordination) + '\n') advs_stats_dict = {'arg_count': arg_count, 'pos_count': pos_count, 'lemma_count': lemma_count, 'sub_lemma_count': lemma_count, 'npred_lemma': lemma_count, 'all_frames': all_frames, 'pewna_frames': pewna_frames, 'watpliwa_frames': watpliwa_frames, 'zla_frames': zla_frames, 'arch_frames': arch_frames, 'potoczna_frames': potoczna_frames, 'wulgarna_frames': wulgarna_frames, 'spec_pos': spec_pos, 'spec_args': spec_args, 'spec_frames': spec_frames, 'spec_pos_up': spec_pos_up, 'spec_args_up': spec_args_up, 'spec_frames_up': spec_frames_up, 'frames_with_phraseology': frames_with_phraseology, 'lemmas_with_phraseology': lemmas_with_phraseology, 'lemmas_with_coordination': lemmas_with_coordination } outfile.close() return advs_stats_dict def get_verb_stats(stats_path, q_statuses): print 'Be patient, it can take a while.' outfile = codecs.open(stats_path, 'wt', 'utf-8') arg_count = 0 pos_count = 0 lemma_count = 0 ##################3 sub_lemma_count = 0 sub_sie_imperf_oboj = 0 sub_sie_perf_oboj = 0 sub_sie_oboj_oboj = 0 sub_imperf_oboj = 0 sub_perf_oboj = 0 sub_oboj_oboj = 0 sub_sie_imperf_neg = 0 sub_sie_perf_neg = 0 sub_sie_oboj_neg = 0 sub_imperf_neg = 0 sub_perf_neg = 0 sub_oboj_neg = 0 sub_sie_imperf_aff = 0 sub_sie_perf_aff = 0 sub_sie_oboj_aff = 0 sub_imperf_aff = 0 sub_perf_aff = 0 sub_oboj_aff = 0 sie_lemma = 0 nsie_lemma = 0 ################## pewna_frames = 0 watpliwa_frames = 0 zla_frames = 0 arch_frames = 0 potoczna_frames = 0 wulgarna_frames = 0 all_frames = 0 spec_frames = 0 spec_pos = 0 spec_args = 0 spec_frames_up = 0 spec_pos_up = 0 spec_args_up = 0 lemmas_with_phraseology = 0 lemmas_with_coordination = 0 frames_with_phraseology = 0 lemmas = Lemma.objects.filter(old=False, entry_obj__pos__tag='verb').filter(reduce(operator.or_, q_statuses)).distinct().order_by('entry').all() for lemma in lemmas: # jak chcemy bez zapłaconych # if RealizedLemma.objects.filter(Q(status__status=u'sprawdzone') | # Q(status__status=u'tymczasowy')).filter(lemma__entry=lemma.entry, # paid=False).exists(): # pass # else: # continue print lemma lemma_count += 1 pewna_frames += lemma.frame_opinions.filter(value__value=u'pewny').count() watpliwa_frames += lemma.frame_opinions.filter(value__value=u'wątpliwy').count() zla_frames += lemma.frame_opinions.filter(value__value=u'zły').count() arch_frames += lemma.frame_opinions.filter(value__value=u'archaiczny').count() potoczna_frames += lemma.frame_opinions.filter(value__value=u'potoczny').count() wulgarna_frames += lemma.frame_opinions.filter(value__value=u'wulgarny').count() all_frames += lemma.frames.count() # if (lemma.frames.count() != lemma.frame_opinions.filter(value__value=u'pewna').count() + # lemma.frame_opinions.filter(value__value=u'wątpliwa').count() + # lemma.frame_opinions.filter(value__value=u'zła').count() + # lemma.frame_opinions.filter(value__value=u'archaiczna').count() + # lemma.frame_opinions.filter(value__value=u'potoczna').count() + # lemma.frame_opinions.filter(value__value=u'wulgarna').count()): # print lemma # print lemma.frame_opinions.filter(value__value=u'pewna').count() # print lemma.frame_opinions.filter(value__value=u'wątpliwa').count() # print lemma.frame_opinions.filter(value__value=u'zła').count() # print lemma.frame_opinions.filter(value__value=u'archaiczna').count() # print lemma.frame_opinions.filter(value__value=u'potoczna').count() # print lemma.frame_opinions.filter(value__value=u'wulgarna').count() ## break sub_frame = lemma.frames.filter(characteristics__value__value=u'się', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'imperf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'_') if sub_frame.count() > 0: sub_sie_imperf_oboj += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'się', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'perf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'_') if sub_frame.count() > 0: sub_sie_perf_oboj += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'się', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'_').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'_') if sub_frame.count() > 0: sub_sie_oboj_oboj += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'imperf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'_') if sub_frame.count() > 0: sub_imperf_oboj += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'perf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'_') if sub_frame.count() > 0: sub_perf_oboj += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'_').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'_') if sub_frame.count() > 0: sub_oboj_oboj += 1 sub_lemma_count += 1 ################################### neg ######################################### sub_frame = lemma.frames.filter(characteristics__value__value=u'się', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'imperf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'neg') if sub_frame.count() > 0: sub_sie_imperf_neg += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'się', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'perf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'neg') if sub_frame.count() > 0: sub_sie_perf_neg += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'się', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'_').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'neg') if sub_frame.count() > 0: sub_sie_oboj_neg += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'imperf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'neg') if sub_frame.count() > 0: sub_imperf_neg += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'perf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'neg') if sub_frame.count() > 0: sub_perf_neg += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'_').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'neg') if sub_frame.count() > 0: sub_oboj_neg += 1 sub_lemma_count += 1 #################################### aff ######################################## sub_frame = lemma.frames.filter(characteristics__value__value=u'się', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'imperf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'aff') if sub_frame.count() > 0: sub_sie_imperf_aff += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'się', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'perf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'aff') if sub_frame.count() > 0: sub_sie_perf_aff += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'się', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'_').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'aff') if sub_frame.count() > 0: sub_sie_oboj_aff += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'imperf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'aff') if sub_frame.count() > 0: sub_imperf_aff += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'perf').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'aff') if sub_frame.count() > 0: sub_perf_aff += 1 sub_lemma_count += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'ZWROTNOŚĆ').filter(characteristics__type=u'ASPEKT', characteristics__value__value=u'_').filter( characteristics__type=u'NEGATYWNOŚĆ', characteristics__value__value=u'aff') if sub_frame.count() > 0: sub_oboj_aff += 1 sub_lemma_count += 1 ################################################################################ sub_frame = lemma.frames.filter(characteristics__value__value=u'się', characteristics__type=u'ZWROTNOŚĆ') if sub_frame.count() > 0: sie_lemma += 1 sub_frame = lemma.frames.filter(characteristics__value__value=u'', characteristics__type=u'ZWROTNOŚĆ') if sub_frame.count() > 0: nsie_lemma += 1 ################################################################################# if lemma.frames.count() != lemma.frame_opinions.count(): print lemma.entry has_phraseology = False has_coordination = False for frame in lemma.frames.all(): phraseologic_frame = False pos_count += frame.positions.count() flat_frames = frame.positions.annotate(num_args=Count('arguments')).aggregate(Max('num_args'))['num_args__max'] if flat_frames > 1: spec_frames += 1 has_coordination = True if frame.has_phraseologic_arguments(): has_phraseology = True phraseologic_frame = True for pos in frame.positions.all(): args = pos.arguments.count() arg_count += args # for arg in pos.arguments.all(): # if arg.type in PHRASEOLOGIC_TYPES: # has_phraseology = True # phraseologic_frame = True # break if phraseologic_frame: frames_with_phraseology += 1 if has_phraseology: lemmas_with_phraseology += 1 if has_coordination: lemmas_with_coordination += 1 outfile.write(u'Liczba argumentów: ' + str(arg_count) + '\n') outfile.write(u'Liczba pozycji: ' + str(pos_count) + '\n') outfile.write(u'Liczba haseł: ' + str(lemma_count) + '\n') outfile.write('\n') outfile.write(u'Liczba podhaseł: ' + str(sub_lemma_count) + '\n') outfile.write(u'Liczba podhaseł postaci (ZWROTNOŚĆ, NEGATYWNOŚĆ, PREDYKATYWNOŚĆ, ASPEKT)\n') outfile.write(u'Liczba podhaseł postaci (się, _, , imperf): ' + str(sub_sie_imperf_oboj) + '\n') outfile.write(u'Liczba podhaseł postaci (się, _, , perf): ' + str(sub_sie_perf_oboj) + '\n') outfile.write(u'Liczba podhaseł postaci (się, _, , _): ' + str(sub_sie_oboj_oboj) + '\n') outfile.write(u'Liczba podhaseł postaci ( , _, , imperf): ' + str(sub_imperf_oboj) + '\n') outfile.write(u'Liczba podhaseł postaci ( , _, , perf): ' + str(sub_perf_oboj) + '\n') outfile.write(u'Liczba podhaseł postaci ( , _, , _): ' + str(sub_oboj_oboj) + '\n') outfile.write(u'Liczba podhaseł postaci (się, neg, , imperf): ' + str(sub_sie_imperf_neg) + '\n') outfile.write(u'Liczba podhaseł postaci (się, neg, , perf): ' + str(sub_sie_perf_neg) + '\n') outfile.write(u'Liczba podhaseł postaci (się, neg, , _): ' + str(sub_sie_oboj_neg) + '\n') outfile.write(u'Liczba podhaseł postaci ( , neg, , imperf): ' + str(sub_imperf_neg) + '\n') outfile.write(u'Liczba podhaseł postaci ( , neg, , perf): ' + str(sub_perf_neg) + '\n') outfile.write(u'Liczba podhaseł postaci ( , neg, , _): ' + str(sub_oboj_neg) + '\n') outfile.write(u'Liczba podhaseł postaci (się, aff, , imperf): ' + str(sub_sie_imperf_aff) + '\n') outfile.write(u'Liczba podhaseł postaci (się, aff, , perf): ' + str(sub_sie_perf_aff) + '\n') outfile.write(u'Liczba podhaseł postaci (się, aff, , _): ' + str(sub_sie_oboj_aff) + '\n') outfile.write(u'Liczba podhaseł postaci ( , aff, , imperf): ' + str(sub_imperf_aff) + '\n') outfile.write(u'Liczba podhaseł postaci ( , aff, , perf): ' + str(sub_perf_aff) + '\n') outfile.write(u'Liczba podhaseł postaci ( , aff, , _): ' + str(sub_oboj_aff) + '\n') outfile.write('\n') outfile.write(u'Liczba ramek: ' + str(all_frames) + '\n') outfile.write(u'Liczba ramek pewnych: ' + str(pewna_frames) + '\n') outfile.write(u'Liczba ramek wątpliwych: ' + str(watpliwa_frames) + '\n') outfile.write(u'Liczba ramek złych: ' + str(zla_frames) + '\n') outfile.write(u'Liczba ramek archaicznych: ' + str(arch_frames) + '\n') outfile.write(u'Liczba ramek potocznych: ' + str(potoczna_frames) + '\n') outfile.write(u'Liczba ramek wulgarnych: ' + str(wulgarna_frames) + '\n') outfile.write('\n') outfile.write(u'Liczba pozycji z większą niż jeden liczbą argumentów: ' + str(spec_pos) + '\n') outfile.write(u'Liczba argumentów występujących w pozycjach o większej niż jeden liczbie argumentów: ' + str(spec_args) + '\n') outfile.write(u'Liczba ramek z pozycjami wieloargumentowymi: ' + str(spec_frames) + '\n') outfile.write('\n') outfile.write(u'Liczba pozycji z większą niż jeden liczbą specyfikacji: ' + str(spec_pos_up) + '\n') outfile.write(u'Liczba argumentów występujących w pozycjach o większej niż jeden liczbie specyfikacji: ' + str(spec_args_up) + '\n') outfile.write(u'Liczba ramek z pozycjami o większej niż jeden liczbie specyfikacji: ' + str(spec_frames_up) + '\n') outfile.write(u'Liczba ramek frazeologicznych: ' + str(frames_with_phraseology) + '\n') outfile.write('\n') outfile.write(u'Hasła zawierające schematy frazeologiczne: ' + str(lemmas_with_phraseology) + '\n') outfile.write(u'Hasła zawierające pozycje z koordynacją: ' + str(lemmas_with_coordination) + '\n') verb_stats_dict = {'arg_count': arg_count, 'pos_count': pos_count, 'lemma_count': lemma_count, 'sub_lemma_count': sub_lemma_count, 'sub_sie_imperf_oboj': sub_sie_imperf_oboj, 'sub_sie_perf_oboj': sub_sie_perf_oboj, 'sub_sie_oboj_oboj': sub_sie_oboj_oboj, 'sub_imperf_oboj': sub_imperf_oboj, 'sub_perf_oboj': sub_perf_oboj, 'sub_oboj_oboj': sub_oboj_oboj, 'sub_sie_imperf_neg': sub_sie_imperf_neg, 'sub_sie_perf_neg': sub_sie_perf_neg, 'sub_sie_oboj_neg': sub_sie_oboj_neg, 'sub_imperf_neg': sub_imperf_neg, 'sub_perf_neg': sub_perf_neg, 'sub_oboj_neg': sub_oboj_neg, 'sub_sie_imperf_aff': sub_sie_imperf_aff, 'sub_sie_perf_aff': sub_sie_perf_aff, 'sub_sie_oboj_aff': sub_sie_oboj_aff, 'sub_imperf_aff': sub_imperf_aff, 'sub_perf_aff': sub_perf_aff, 'sub_oboj_aff': sub_oboj_aff, 'all_frames': all_frames, 'pewna_frames': pewna_frames, 'watpliwa_frames': watpliwa_frames, 'zla_frames': zla_frames, 'arch_frames': arch_frames, 'potoczna_frames': potoczna_frames, 'wulgarna_frames': wulgarna_frames, 'spec_pos': spec_pos, 'spec_args': spec_args, 'spec_frames': spec_frames, 'spec_pos_up': spec_pos_up, 'spec_args_up': spec_args_up, 'spec_frames_up': spec_frames_up, 'frames_with_phraseology': frames_with_phraseology, 'lemmas_with_phraseology': lemmas_with_phraseology, 'lemmas_with_coordination': lemmas_with_coordination } outfile.close() return verb_stats_dict