diff --git a/udapi/block/newspeak/prevele.py b/udapi/block/newspeak/prevele.py index dd616571..d384bd10 100644 --- a/udapi/block/newspeak/prevele.py +++ b/udapi/block/newspeak/prevele.py @@ -21,13 +21,23 @@ class PreVele(Block): """Change all comparatives to vele-x and superlatives to převele-x.""" - def __init__(self, morphodita_path='models/morphodita/cs/', + def __init__(self, synonyms, antonyms, morphodita_path='models/morphodita/cs/', morphodita_model='czech-morfflex-131112.dict', **kwargs): """Create the PreVele block object.""" super().__init__(**kwargs) + self.antonyms = self.load_vocab(antonyms) + self.synonyms = self.load_vocab(synonyms) self.morphodita = MorphoDiTa(model=morphodita_path + morphodita_model) + def load_vocab(self, filename): + vocab = {} + with open(filename) as f: + for line in f: + (key, val) = line.strip().split('\t') + vocab[key] = val + return vocab + def process_tree(self, tree): # apply process_node on all nodes @@ -42,7 +52,7 @@ def process_tree(self, tree): tree.text = tree.compute_text() def process_node(self, node): - antonym = ANTONYMS.get(node.lemma) + antonym = self.antonyms.get(node.lemma) if antonym is not None: if node.xpos[11] == 'N': if node.form.lower().startswith('ne'): @@ -56,6 +66,14 @@ def process_node(self, node): node.xpos = node.xpos[:10] + 'N' + node.xpos[11:] node.form = 'ne' + forms[0].form + synonym = self.synonyms.get(node.lemma) + if synonym is not None: + forms = self.morphodita.forms_of_lemma(synonym, node.xpos) + if forms: + node.lemma = synonym + node.form = forms[0].form + + degree = node.feats["Degree"] if degree in ("Sup", "Cmp"): new_xpos = node.xpos[:9] + '1' + node.xpos[10:] pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy