Commit 50977ac33bf898748a1a77b2d4e26ea83236247e
1 parent
8dd74fbf
Minor fixes.
Showing
2 changed files
with
57 additions
and
5 deletions
dictionary/management/commands/get_examples.py
... | ... | @@ -6,7 +6,8 @@ import os |
6 | 6 | |
7 | 7 | from django.core.management.base import BaseCommand |
8 | 8 | |
9 | -from dictionary.models import Lemma, get_ready_statuses | |
9 | +from dictionary.models import Lemma, NKJP_Example, get_ready_statuses, get_checked_statuses | |
10 | +from semantics.models import LexicalUnitExamples | |
10 | 11 | from settings import PROJECT_PATH |
11 | 12 | |
12 | 13 | BASE_PATH = os.path.join(PROJECT_PATH, 'data') |
... | ... | @@ -28,8 +29,13 @@ class Command(BaseCommand): |
28 | 29 | get_examples() |
29 | 30 | |
30 | 31 | def get_examples(): |
31 | - ready_statuses = get_ready_statuses() | |
32 | - write_detailed_examples(ready_statuses) | |
32 | + write_example_sentences('semantyczne-S_sprawdzone-20170811.txt', ['(S) sprawdzone'], True) | |
33 | + write_example_sentences('wszystkie-S_sprawdzone-20170811.txt', ['(S) sprawdzone'], False) | |
34 | + | |
35 | + checked_names = [checked.status for checked in get_checked_statuses()] | |
36 | + write_example_sentences('wszystkie-sprawdzone-20170811.txt', checked_names, False) | |
37 | + # ready_statuses = get_ready_statuses() | |
38 | + # write_detailed_examples(ready_statuses) | |
33 | 39 | # write_examples(ready_statuses) |
34 | 40 | |
35 | 41 | def write_detailed_examples(statuses): |
... | ... | @@ -76,4 +82,51 @@ def write_examples(statuses): |
76 | 82 | examples_file.write('\t\t--> %s\n' % example.sentence) |
77 | 83 | examples_file.write('\n\n') |
78 | 84 | finally: |
79 | - examples_file.close() | |
85 | + examples_file.close() | |
86 | + | |
87 | + | |
88 | +def write_example_sentences(filename, statuses, semantic): | |
89 | + try: | |
90 | + examples_file = codecs.open(os.path.join(BASE_PATH, filename), 'wt', 'utf-8') | |
91 | + for lemma in Lemma.objects.filter(old=False, entry_obj__pos__tag='verb').filter(status__status__in=statuses).order_by('entry_obj__name'): | |
92 | + print lemma | |
93 | + wrong_examples = lemma.nkjp_examples.filter(opinion__opinion=u'zły') | |
94 | + not_wanted_semantic_examples = get_not_needed_semantic_examples(lemma) | |
95 | + wanted_semantic_examples = get_wanted_semantic_examples(lemma) | |
96 | + | |
97 | + for example in lemma.nkjp_examples.filter(source__sym_name__in=['NKJP300M', 'NKJP1800M']): | |
98 | + if (lemma.frame_opinions.filter(frame=example.frame, value__value__in=[u'archaiczny', | |
99 | + u'zły']).exists()): | |
100 | + continue | |
101 | + | |
102 | + if semantic: | |
103 | + if (wanted_semantic_examples.filter(pk=example.pk).exists() and | |
104 | + not wrong_examples.filter(pk=example.pk).exists()): | |
105 | + examples_file.write(u'%s\n' % example.sentence) | |
106 | + else: | |
107 | + if (not not_wanted_semantic_examples.filter(pk=example.pk).exists() and | |
108 | + not wrong_examples.filter(pk=example.pk).exists()): | |
109 | + examples_file.write(u'%s\n' % example.sentence) | |
110 | + | |
111 | + finally: | |
112 | + examples_file.close() | |
113 | + | |
114 | + | |
115 | +def get_not_needed_semantic_examples(lemma): | |
116 | + not_needed_ids = [] | |
117 | + not_needed_frames = lemma.entry_obj.actual_frames().filter(opinion__value__in=[u'archaiczna', u'zła']) | |
118 | + for frame in not_needed_frames: | |
119 | + for lu in frame.lexical_units.all(): | |
120 | + for luex in LexicalUnitExamples.objects.filter(lexical_unit=lu): | |
121 | + not_needed_ids.append(luex.example.id) | |
122 | + return NKJP_Example.objects.filter(id__in=not_needed_ids) | |
123 | + | |
124 | + | |
125 | +def get_wanted_semantic_examples(lemma): | |
126 | + needed_ids = [] | |
127 | + needed_frames = lemma.entry_obj.actual_frames().exclude(opinion__value__in=[u'archaiczna', u'zła']) | |
128 | + for frame in needed_frames: | |
129 | + for lu in frame.lexical_units.all(): | |
130 | + for luex in LexicalUnitExamples.objects.filter(lexical_unit=lu): | |
131 | + needed_ids.append(luex.example.id) | |
132 | + return NKJP_Example.objects.filter(id__in=needed_ids) | |
... | ... |