def agree(w1, w2, t1, t2): morph = MorphAnalyzer() raw_cur_tags = morph.tag(w1)[0] raw_next_tags = morph.tag(w1)[0] cur_tags = re.findall(r"\w+", raw_cur_tags) next_tags = re.findall(r"\w+", raw_next_tags) if t1 == "person": if t2 == "verb_right": if next_tags[3] == "tran": cur_tags[-1] = "nomn" else: cur_tags[-1] = "datv" if t1 == "verb_right": if t2 == "property": pass if t1 == "adjective": if t2 == "property": pass if t1 == "property": if t2 == "person": pass if t2 == "adjective": pass #w1 = morph.parse(w1)[0].inflect({}).word return w1, w2
def agree(w1, w2, t1, t2): if t1 == "comma" or t2 == "comma": return w1, w2 morph = MorphAnalyzer() raw_cur_tags = morph.tag(w1)[-1] raw_next_tags = morph.tag(w1)[-1] cur_tags = re.findall(r"\w+", str(raw_cur_tags)) next_tags = re.findall(r"\w+", str(raw_next_tags)) if t1[:-2] == "person": if t2[:-2] == "verb_right": if morph.normal_forms(w2)[0] in dative_verbs: w1 = morph.parse(w1)[0].inflect({"datv"}).word if t1[:-2] == "verb_right": if t2[:-2] == "property": pass if t2[:-2] == "person": if cur_tags[3] == "tran": w2 = morph.parse(w2)[0].inflect({"accs"}).word else: w2 = morph.parse(w2)[0].inflect({"nomn"}).word #gender with nomn only gender = next_tags[2] if gender == "inan": gender = next_tags[3] w1 = morph.parse(w1)[0].inflect({gender}).word if t1[:-2] == "adjective": if t2[:-2] == "property": #gender gender = next_tags[2] if gender == "inan": gender = next_tags[3] try: w1 = morph.parse(w1)[0].inflect({gender}).word except Exception: print("f**k") print(w1, w2) if t1[:-2] == "property": if t2[:-2] == "person": pass if t2[:-2] == "adjective": gender = cur_tags[2] if gender == "inan": gender = cur_tags[3] try: w2 = morph.parse(w2)[0].inflect({gender}).word except Exception: print("f**k") print(w1, w2) #w1 = morph.parse(w1)[0].inflect({}).word return w1, w2