Commit 6ae6932353724b3af68fd6f5befb0f727c1a26d3
Merge branch 'tomek' into dev
Showing
4 changed files
with
46 additions
and
24 deletions
semantics/management/commands/connect_frames_to_entries.py
0 → 100644
1 | +#! /usr/bin/python | |
2 | +# -*- coding: utf-8 -*- | |
3 | + | |
4 | +import sys, os, codecs | |
5 | + | |
6 | +from django.core.management.base import BaseCommand | |
7 | + | |
8 | +from dictionary.models import Entry | |
9 | +from semantics.models import SemanticFrame | |
10 | +from settings import PROJECT_PATH | |
11 | + | |
12 | +class Command(BaseCommand): | |
13 | + args = 'none' | |
14 | + help = '' | |
15 | + | |
16 | + def handle(self, **options): | |
17 | + connect_frames() | |
18 | + | |
19 | +def connect_frames(): | |
20 | + entries = Entry.objects.all() | |
21 | + for entry in entries: | |
22 | + frames = entry.actual_frames() | |
23 | + for frame in frames: | |
24 | + frame.entry = entry | |
25 | + frame.save() | |
26 | + | |
... | ... |
semantics/models.py
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | |
3 | 3 | from django.db import models |
4 | 4 | |
5 | -from dictionary.models import Argument, Frame, Position, NKJP_Example | |
5 | +from dictionary.models import Argument, Frame, Position, NKJP_Example, Entry | |
6 | 6 | from wordnet.models import LexicalUnit, Synset |
7 | 7 | from django.contrib.auth.models import User |
8 | 8 | from datetime import datetime |
... | ... | @@ -43,6 +43,8 @@ class SemanticFrame(models.Model): |
43 | 43 | removed = models.BooleanField(default=False) |
44 | 44 | author = models.ForeignKey(User, null=True) |
45 | 45 | opinion = models.ForeignKey(FrameOpinion, null=True) |
46 | + # hasło w Walentym | |
47 | + entry = models.ForeignKey(Entry, null=True, related_name='semantic_frames') | |
46 | 48 | |
47 | 49 | def role_exists(self, role_name): |
48 | 50 | if self.complements.filter(roles__role=role_name).exists(): |
... | ... |
semantics/saving.py
... | ... | @@ -20,7 +20,7 @@ def make_operations(lemma_id, operations): |
20 | 20 | for operation in operations: |
21 | 21 | if operation['operation'] == "create_frame": |
22 | 22 | luids = [int(m['id']) for m in operation['meanings']] |
23 | - translation['frame_id'][int(operation['id'])] = create_frame(luids) | |
23 | + translation['frame_id'][int(operation['id'])] = create_frame(entry, luids) | |
24 | 24 | elif operation['operation'] == "add_unit": |
25 | 25 | translation['unit_id'][int(operation['unit']['id'])] = add_unit(entry, operation['unit']) |
26 | 26 | elif operation['operation'] == "remove_frame": |
... | ... | @@ -134,8 +134,8 @@ def make_operations(lemma_id, operations): |
134 | 134 | else: |
135 | 135 | pass |
136 | 136 | |
137 | -def create_frame(luids): | |
138 | - frame = SemanticFrame() | |
137 | +def create_frame(entry, luids): | |
138 | + frame = SemanticFrame(entry=entry) | |
139 | 139 | frame.save() |
140 | 140 | for id in luids: |
141 | 141 | lu = LexicalUnit.objects.get(id=id) |
... | ... |
semantics/static/js/semantics_lexical_units.js
... | ... | @@ -213,10 +213,11 @@ function getMeaningsSelectionForFrame(frame_id) { |
213 | 213 | options.push(schemas_content[sch].display.arguments[0][k].lex); |
214 | 214 | } |
215 | 215 | } |
216 | + var lex = {lemma: base, args: options}; | |
216 | 217 | if (hasRefl(sch)) { |
217 | - options.push(['się']); | |
218 | + lex.lemma = base + " się"; | |
218 | 219 | } |
219 | - lexicalisation.push(options); | |
220 | + lexicalisation.push(lex); | |
220 | 221 | } |
221 | 222 | } |
222 | 223 | |
... | ... | @@ -229,25 +230,18 @@ function getMeaningsSelectionForFrame(frame_id) { |
229 | 230 | |
230 | 231 | function getFormForLexicalisation(lexicalisation) { |
231 | 232 | var result = ""; |
232 | - var perms = permutations(lexicalisation); | |
233 | 233 | var i; |
234 | - for (i = 0; i < perms.length; i++) { | |
235 | - result += lexicalisationForm(cartesian(perms[i])); | |
234 | + for (i = 0; i < lexicalisation.length; i++) { | |
235 | + var perms = permute(lexicalisation[i].args); | |
236 | + var j; | |
237 | + for (j = 0; j < perms.length; j++) { | |
238 | + result += lexicalisationForm(lexicalisation[i].lemma, cartesian(perms[j])) | |
239 | + } | |
240 | + result += '<br\>'; | |
236 | 241 | } |
237 | 242 | return result; |
238 | 243 | } |
239 | 244 | |
240 | -function permutations(lllist) { | |
241 | - //return lllist; | |
242 | - if (lllist.length == 0) { | |
243 | - return []; | |
244 | - } else { | |
245 | - var shortlllist = lllist.slice(); | |
246 | - shortlllist.splice(0, 1); | |
247 | - return permute(lllist[0]).concat([[]].concat(permutations(shortlllist))) | |
248 | - } | |
249 | -} | |
250 | - | |
251 | 245 | function permute(list) { |
252 | 246 | var i; |
253 | 247 | if (list.length == 0) { |
... | ... | @@ -292,7 +286,7 @@ function cartesian(llist) { |
292 | 286 | return result; |
293 | 287 | } |
294 | 288 | |
295 | -function lexicalisationForm(tokenised) { | |
289 | +function lexicalisationForm(lemma, tokenised) { | |
296 | 290 | var display = ""; |
297 | 291 | var i; |
298 | 292 | for (i = 0; i < tokenised.length; i++) { |
... | ... | @@ -301,12 +295,12 @@ function lexicalisationForm(tokenised) { |
301 | 295 | } else { |
302 | 296 | var j; |
303 | 297 | for (j = 0; j < lexical_units.length; j++) { |
304 | - if (base + " " + tokenised[i].join(" ") == lexical_units[j].base) { | |
298 | + if (lemma + " " + tokenised[i].join(" ") == lexical_units[j].base) { | |
305 | 299 | return ""; |
306 | 300 | } |
307 | 301 | } |
308 | - display += "<input type = \"checkbox\" name = \"mwe\" value = \"" + base + " " + tokenised[i].join(" ") + "\">"; // TODO: unikalne wartości, wartość => dodanie odpowiedniej jednostki (nazwa jednostki w wartości?) | |
309 | - display += base + " " + tokenised[i].join(" ") + "<br\>"; | |
302 | + display += "<input type = \"checkbox\" name = \"mwe\" value = \"" + lemma + " " + tokenised[i].join(" ") + "\">"; // TODO: unikalne wartości, wartość => dodanie odpowiedniej jednostki (nazwa jednostki w wartości?) | |
303 | + display += lemma + " " + tokenised[i].join(" ") + "<br\>"; | |
310 | 304 | } |
311 | 305 | } |
312 | 306 | return display; |
... | ... |