Commit b82f1028bb6afc4d54ad4cde8c6a0210b9424af2
1 parent
1eab39ef
Wieloczłonowe frazeologizmy
Showing
2 changed files
with
70 additions
and
38 deletions
semantics/static/js/semantics_core.js
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 | + | |
| ... | ... |