Commit b82f1028bb6afc4d54ad4cde8c6a0210b9424af2

Authored by Tomasz Bartosiak
1 parent 1eab39ef

Wieloczłonowe frazeologizmy

semantics/static/js/semantics_core.js
... ... @@ -20,3 +20,11 @@ function normalizeFormData(data) {
20 20 }
21 21 }
22 22 }
  23 +
  24 +function onlyUnique (value, index, self) {
  25 + return self.indexOf(value) === index;
  26 +}
  27 +
  28 +function unique(list) {
  29 + return list.filter( onlyUnique );
  30 +}
... ...
semantics/static/js/semantics_lexical_units.js
... ... @@ -199,28 +199,24 @@ function getMeaningsSelectionForFrame(frame_id) {
199 199 display += "<div>";
200 200  
201 201 if (frame_content[frame_id].lemma.include) {
  202 + var rows = getPhraseologicalAlternations(frame_id);
202 203 var lem = frame_content[frame_id].lemma.csv_class;
203 204 var j;
204   - for (j = 0; j < connected[lem].length; j++) {
  205 + for (j = 0; j < rows.length; j++) {
205 206 var options = [];
206   - var sch = connected[lem][j].split("pos")[0];
207   - var pos = connected[lem][j].split("arg")[0];
  207 + sid_alt = rows[j].split('_');
  208 + var sch = "schema_" + sid_alt[0] + "_";
208 209 var k;
209 210 for (k = 0; k < schemas_content[sch].display.arguments[0].length; k++) {
210   - if (schemas_content[sch].display.arguments[0][k].csv_class == pos) {
211   - var l;
212   - for (l = 0; l < schemas_content[sch].display.arguments[0][k].lex.length; l++) {
213   - options.push(schemas_content[sch].display.arguments[0][k].lex[l]);
214   - }
  211 + var proper = schemas_content[sch].display.arguments[0][k].csv_id + "alt_" + sid_alt[1] + "_";
  212 + if (connected[lem].indexOf(proper) != -1) {
  213 + options.push(schemas_content[sch].display.arguments[0][k].lex);
215 214 }
216 215 }
217   - var temp; // TODO: temporal solution for multiple schemata
218 216 if (hasRefl(sch)) {
219   - temp = [['się'], options]
220   - } else {
221   - temp = [options];
  217 + options.push(['się']);
222 218 }
223   - lexicalisation.push(temp);
  219 + lexicalisation.push(options);
224 220 }
225 221 }
226 222  
... ... @@ -241,26 +237,37 @@ function getFormForLexicalisation(lexicalisation) {
241 237 return result;
242 238 }
243 239  
244   -function permutations(llist) {
245   - return llist;
246   -/* if (list.length == 0) {
247   - return [[]];
  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 248 }
  249 +}
  250 +
  251 +function permute(list) {
249 252 var i;
250   - var result = [];
251   - for (i = 0; i < list.length; i++) {
252   - var shortlist = list.slice();
253   - shortlist.splice(i, 1);
254   - var perms = permutations(shortlist);
255   - var j;
256   - for (j = 0; j < perms.length; j++) {
257   - var tmp = perms[j];
258   - tmp.push(list[i]);
259   - result.push(tmp);
260   - }
  253 + if (list.length == 0) {
  254 + return [[]];
  255 + } else {
  256 + var result = [];
  257 + for (i = 0; i < list.length; i++) {
  258 + var shortlist = list.slice();
  259 + shortlist.splice(i, 1);
  260 + var perms = permute(shortlist);
  261 + var j;
  262 + for (j = 0; j < perms.length; j++) {
  263 + var tmp = perms[j];
  264 + tmp.push(list[i]);
  265 + result.push(tmp);
  266 + }
  267 + }
  268 + return result;
261 269 }
262   - return result;
263   -*/
  270 +
264 271 }
265 272  
266 273 function cartesian(llist) {
... ... @@ -279,7 +286,6 @@ function cartesian(llist) {
279 286 for (j = 0; j < heads.length; j++) {
280 287 var tmp = heads[j].slice();
281 288 tmp.push(tail);
282   - //alert(tmp);
283 289 result.push(tmp);
284 290 }
285 291 }
... ... @@ -290,14 +296,18 @@ function lexicalisationForm(tokenised) {
290 296 var display = "";
291 297 var i;
292 298 for (i = 0; i < tokenised.length; i++) {
293   - var j;
294   - for (j = 0; j < lexical_units.length; j++) {
295   - if (base + " " + tokenised[i].join(" ") == lexical_units[j].base) {
296   - return "";
297   - }
  299 + if (tokenised[i].length == 0) {
  300 + display += "<br\>";
  301 + } else {
  302 + var j;
  303 + for (j = 0; j < lexical_units.length; j++) {
  304 + if (base + " " + tokenised[i].join(" ") == lexical_units[j].base) {
  305 + return "";
  306 + }
  307 + }
  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\>";
298 310 }
299   - display += "<input type = \"checkbox\" name = \"mwe\" value = \"" + base + " " + tokenised[i].join(" ") + "\">"; // TODO: unikalne wartości, wartość => dodanie odpowiedniej jednostki (nazwa jednostki w wartości?)
300   - display += base + " " + tokenised[i].join(" ") + "<br\>";
301 311 }
302 312 return display;
303 313 }
... ... @@ -331,3 +341,17 @@ function addPhraseologicalUnits(frame_id, old_units, mwes, glossa, relation, to)
331 341 changeUnits(frame_id, old_units.concat(units));
332 342 }
333 343  
  344 +
  345 +function getPhraseologicalAlternations(frame_id) {
  346 + var result = [];
  347 + if (frame_content[frame_id].lemma.include) {
  348 + var lem = frame_content[frame_id].lemma.csv_class;
  349 + var i;
  350 + for (i = 0; i < connected[lem].length; i++) {
  351 + var ids = connected[lem][i].split('_');
  352 + result.push(ids[1] + "_" + ids[7])
  353 + }
  354 + }
  355 + return unique(result);
  356 +}
  357 +
... ...