Merge pull request 'lk-collocations-feature' (#8) from lk-collocations-feature into master
Reviewed-on: #8
This commit is contained in:
		
						commit
						37980d56e5
					
				| @ -24,32 +24,33 @@ def build_structure_conversions(): | ||||
|         if line[1] == "struktura": | ||||
|             continue | ||||
|          | ||||
|         vto_structure = line[1].strip().split(">")[1].split("<")[0] | ||||
|         vto_name = line[2].strip() | ||||
|         vto_id = line[4].strip() | ||||
|         vto_id = line[6].strip() | ||||
|          | ||||
|         if 0 in (len(vto_name), len(vto_id)): | ||||
|             continue | ||||
|          | ||||
|         vfrom = "^" + line[0].replace("?", "\?").replace("%s", "([a-zA-Z螚ȎŠ-]+)") + "$" | ||||
|         structure_conversions.append((__new__(RegExp(vfrom, 'u')), vto_name, vto_id)) | ||||
|         structure_conversions.append((__new__(RegExp(vfrom, 'u')), vto_name, vto_structure, vto_id)) | ||||
|          | ||||
|          | ||||
| def convert_structure(structure, type): | ||||
|     if structure_conversions is None: | ||||
|         build_structure_conversions() | ||||
|      | ||||
|     for vfrom, vto_name, vto_id in structure_conversions: | ||||
|     for vfrom, vto_name, vto_structure, vto_id in structure_conversions: | ||||
|         match = structure.match(vfrom) | ||||
|         # fix for ids 65, 66, 67 which instead matched with 64 | ||||
|         if match and vto_id == '64' and '-s' in type: | ||||
|         # fix for ids 106, 107, 44 which instead matched with 30 | ||||
|         if match and vto_id == '30' and '-s' in type: | ||||
|             vto_name = 's0-vp-s0' | ||||
|             vto_id = '65' | ||||
|         elif match and vto_id == '64' and '-g' in type: | ||||
|             vto_id = '106' | ||||
|         elif match and vto_id == '30' and '-g' in type: | ||||
|             vto_name = 'gg-vp-gg' | ||||
|             vto_id = '66' | ||||
|         elif match and vto_id == '64' and '-r' in type: | ||||
|             vto_id = '107' | ||||
|         elif match and vto_id == '30' and '-r' in type: | ||||
|             vto_name = 'r-vp-r' | ||||
|             vto_id = '67' | ||||
|             vto_id = '44' | ||||
| 
 | ||||
|         if match: | ||||
|             # we need to remove replace alias here as we want to use javascript's one | ||||
| @ -57,7 +58,7 @@ def convert_structure(structure, type): | ||||
|             result = structure.replace(vfrom, vto_name).strip() | ||||
|             __pragma__('alias', 'replace', "py_replace") | ||||
| 
 | ||||
|             return result, vto_id | ||||
|             return result, vto_structure, vto_id | ||||
|      | ||||
|     window.console.log("Unknown structure: ", structure) | ||||
|     return 'N/A', '/' | ||||
|  | ||||
| @ -59,7 +59,8 @@ class SkeCollocation: | ||||
|     def __init__(self, data): | ||||
|         self.word = data.word | ||||
|         self.frequency = data.count | ||||
|         self.structure_name, self.structure_id = convert_structure(data.gramrel, data.lempos) | ||||
|         self.gramrel = data.gramrel | ||||
|         self.structure_name, self.structure, self.structure_id = convert_structure(data.gramrel, data.lempos) | ||||
|          | ||||
|         self.other = {"score": data.score, "cm": data.cm} | ||||
| 
 | ||||
| @ -144,7 +145,22 @@ class SkeModal(ClickMessage): | ||||
|             if not data[0].gf2_check and type(data[0]) is SkeExample: | ||||
|                 # we get the data, we have to match it with available data on our gf2 examples API | ||||
|                 match_gf2_examples(data, page_num, search_term, ske_index) | ||||
|   | ||||
|             elif type(data[0]) is SkeCollocation: | ||||
|                 # filtering, grouping and sorting data | ||||
|                 data.sort(key= lambda x: float(x.other["score"]), reverse=True) | ||||
|                 _data = [] | ||||
|                 while len(data) > 0: | ||||
|                     max_item = data.pop(0) # max(data, key= lambda x: x.other["score"]) | ||||
|                     _data.append(max_item) | ||||
|                     for item in data: | ||||
|                         if "N/A" in item.structure_name: | ||||
|                             data.remove(item) | ||||
|                         elif item.structure_name.strip() == max_item.structure_name.strip(): | ||||
|                             _data.append(item) | ||||
|                     for delete_item in _data: | ||||
|                         if delete_item in data: | ||||
|                             data.remove(delete_item)                           | ||||
|                 data = _data | ||||
|         model.modal_set(lambda: modals.ske_list( | ||||
|             search_term, data, page_num, model.entry.senses, model.ske.request_kinds)) | ||||
|      | ||||
| @ -238,7 +254,7 @@ class SkeInsert(DataChgClickMessage): | ||||
|          | ||||
|         lex_mid = ComponentLexeme() | ||||
|         lex_mid.text = example["mid"] | ||||
|         lex_mid.role = "collocation" | ||||
|         lex_mid.role = "headword" | ||||
|          | ||||
|         lex_right = ComponentLexeme() | ||||
|         lex_right.text = example["right"] | ||||
| @ -257,17 +273,45 @@ class SkeInsert(DataChgClickMessage): | ||||
|         new_collocation.inner.other_attributes["frequency"] = example.frequency | ||||
|         new_collocation.inner.type = "collocation" | ||||
|          | ||||
|         lex_left = ComponentLexeme() | ||||
|         lex_left.text = "" | ||||
|         lex_left.role = None | ||||
|          | ||||
|         lex_mid = ComponentLexeme() | ||||
|         lex_mid.text = example.word | ||||
|         lex_mid.role = "collocation" | ||||
|          | ||||
|         lex_right = ComponentLexeme() | ||||
|         lex_right.text = "" | ||||
|         lex_right.role = None | ||||
|          | ||||
|         new_collocation.components.extend([lex_left, lex_mid, lex_right]) | ||||
|         headword = document.getElementById("ske-search").value        | ||||
|         lexemes = [] | ||||
|         structure_name = example.structure_name.split("-") | ||||
|         gramrel = example.gramrel.split("_") | ||||
|         structure = example.structure.split(" ") | ||||
|         structure.append("") # Bad fix: we have to add something for structure l-gg-ggn | ||||
| 
 | ||||
|         for i in range(len(structure_name)): | ||||
|             lex = ComponentLexeme() | ||||
|             structure[i] = structure[i].replace("Inf-", "") | ||||
|              | ||||
|             # take care of negations "ne" | ||||
|             if "Neg-" in structure[i]: | ||||
|                 structure[i] = structure[i].replace("Neg-", "") | ||||
|                 negation_flag = True | ||||
|                 n_lex = ComponentLexeme() | ||||
|                 n_lex.text = "ne" | ||||
|                 n_lex.role = "other" | ||||
|                 lexemes.append(n_lex) | ||||
| 
 | ||||
|             if structure[i] is "": | ||||
|                 continue # skipping bcs of fix | ||||
|             elif "Vez-gbz" in structure[i]: | ||||
|                 lex.text = "je" | ||||
|                 lex.role = "other"                 | ||||
|             elif structure_name[i] in ["d", "vd", "zp"]: | ||||
|                 lex.text = gramrel[i] | ||||
|                 lex.text = lex.text.replace("-d", "").replace("%", "") | ||||
|                 lex.role = "other" | ||||
|             elif structure_name[i] is "vp": | ||||
|                 lex.text = structure[i] | ||||
|                 lex.role = "other" | ||||
|             elif structure[i][0] in ["S", "G", "P", "R"]: | ||||
|                 lex.text = headword | ||||
|                 lex.role = "headword" | ||||
|             else: | ||||
|                 lex.text = example.word | ||||
|                 lex.role = "collocate" | ||||
|             lexemes.append(lex) | ||||
| 
 | ||||
|         new_collocation.components.extend(lexemes) | ||||
|         return new_collocation | ||||
|  | ||||
| @ -64,14 +64,18 @@ def edit_example(example, sense): | ||||
|             result.append(h("span.example-component-button.example-component-none", | ||||
|             {"on": {"click": role_msg(idx, "none")}}, "N")) | ||||
| 
 | ||||
|         result.extend([ | ||||
|             h("span.example-component-button", | ||||
|             {"on": {"click": message.msg(message.ExampleComponentAdd, example_original, idx)}}, "+"), | ||||
|             h("span.example-component-button", | ||||
|             {"on": {"click": message.msg(message.ExampleComponentRemove, example_original, idx)}}, "-")]) | ||||
|         if "-" not in example.inner.other_attributes["structureName"]: | ||||
|             result.extend([ | ||||
|                 h("span.example-component-button", | ||||
|                 {"on": {"click": message.msg(message.ExampleComponentAdd, example_original, idx)}}, "+"), | ||||
|                 h("span.example-component-button", | ||||
|                 {"on": {"click": message.msg(message.ExampleComponentRemove, example_original, idx)}}, "-")]) | ||||
| 
 | ||||
|         return result | ||||
| 
 | ||||
|     divs.append(h("div.flex.five.example-component", {}, [h("div.one-fifth", {}, "Struktura:"), | ||||
|         h("div.three-fifth", {}, example.inner.other_attributes["structureName"])])) | ||||
| 
 | ||||
|     for idx, component in enumerate(example.components): | ||||
|         role_txt = component.role if component.role is not None else "none" | ||||
|         color_class = ".example-component-" + role_txt | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user