Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- g = ['а', 'е', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я']
- init_word = input("Введите слово: ")
- rv = []
- r1 = []
- r2 = []
- # массив индексов гласных букв
- vowel = []
- refl = []
- # проверка гласная ли буква
- def gl(i):
- t = False
- if i in g:
- t = True
- return t
- index = 0
- for i in init_word:
- if gl(i):
- vowel.append(index)
- index += 1
- rv = init_word[vowel[0] + 1:]
- index = 0
- for j in vowel:
- if (j != len(init_word) - 1) and gl(init_word[j + 1]) and (index < 2):
- refl.append(j)
- index += 1
- print(refl)
- if len(refl) == 2:
- r1 = init_word[refl[0] + 2:]
- r2 = init_word[refl[1] + 2:]
- elif len(refl) == 1:
- r1 = init_word[refl[0] + 2:]
- print(init_word)
- print(rv)
- print(r1)
- print(r2)
- # массивы окончаний
- # Окончаниям из групп 1 должна предшествовать буква а или я
- perf_gerund1 = ["вшись", "вши", "вш"]
- perf_gerund2 = ["ившись", "ивши", "ив", "ывшись", "ывши", "ыв"]
- pg = [perf_gerund1, perf_gerund2]
- adj = ["ее", "ие", "ые", "ое", "ими", "ыми", "ей", "ий", "ый", "ой", "ем", "им", "ым", "ом", "его", "ого", "ему", "ому",
- "их", "ых", "ую", "юю", "ая", "яя", "ою", "ею"]
- partic1 = ["ем", "нн", "вш", "ющ", "щ"]
- partic2 = ["ивш", "ывш", "ующ"]
- partic = [partic1, partic2]
- refl = ["ся", "сь"]
- v1 = ["ла", "на", "ете", "йте", "ли", "й", "ло", "ем", "нно", "ет", "ют", "ны", "ть", "ешь", "но", "л", "н"]
- v2 = ["ила", "ыла", "ена", "ейте", "уйте", "ите", "или", "ыли", "ей", "уй", "ило", "ыло", "им", "ым", "ено", "ил", "ыл",
- "ены", "ят", "ует", "уют", "ить", "ыть", "ен", "ит", "ыт", "ишь", "ую", "ю"]
- v = [v1, v2]
- noun = ["ев", "ов", "ией", "ье", "иями", "ями", "ами", "еи", "ии", "ием", "ей", "ой", "ий", "й", "иям", "ям", "ие",
- "ем",
- "ам", "ом", "о", "у", "ах", "иях", "ях", "ы", "ью", "ию", "ья", "ю", "ия", "ь", "я", "а", "и", "е"]
- superl = ["ейше", "ейш"]
- deriv = ["ость", "ост"]
- # adjectival = adjective or participle + adjective
- def ending(end, word): # есть ли это окончание в конце слова
- b = True
- l = len(end) - 1
- s1 = len(word) - 1
- j = 0
- if l > s1:
- b = False
- while j <= l and b:
- if word[s1 - j] != end[l - j]:
- b = False
- j = j + 1
- return b
- def ending_k(word, k, end): # есть ли в слове word морфемы k массива
- if k != v and k != partic and k != pg:
- for i in k:
- if ending(i, word):
- end.append(i)
- else:
- for i in k[1]:
- if ending(i, word):
- end.append(i)
- for i in k[0]:
- if ending('a' + i, word):
- end.append(i)
- return end
- x1 = ''.join(rv) # rv часть
- x0 = ''.join(''.join(init_word).replace(x1, '')) # до rv
- print(x1)
- # шаг 1
- en = []
- en = ending_k(x1, pg, en)
- if len(en) != 0:
- x1 = x1.replace(max(en), '')
- else:
- en = ending_k(x1, refl, en)
- if len(en) != 0:
- x1 = x1.replace(max(en), '')
- en = []
- b = 0
- for i in partic1:
- for j in adj:
- if i + j in x1:
- en.append(i + j)
- b = 1
- if len(en) != 0:
- x1 = x1.replace(max(en), '')
- en = []
- if b == 0:
- for i in partic2:
- for j in adj:
- if i + j in x1:
- en.append(i + j)
- b = 1
- if len(en) != 0:
- x1 = x1.replace(max(en), '')
- en = []
- if b == 0:
- en = ending_k(x1, adj, en)
- if len(en) != 0:
- x1 = x1.replace(max(en), '')
- en = []
- adj = 0
- c = [noun, v]
- while b != 1 and adj < len(c):
- en = ending_k(x1, c[adj], en)
- print(len(x1), adj)
- if len(en) != 0:
- x1 = x1.replace(max(en), '')
- b = 1
- adj = adj + 1
- en = []
- print(x1, " - 1 step")
- x1 = list(x1)
- # шаг 2
- if x1[len(x1) - 1] == 'и':
- del x1[len(x1) - 1]
- print(x1, " - 2 step")
- # шаг 3
- r2 = ''.join(r2)
- x1 = ''.join(x1)
- en = ending_k(r2, deriv, en)
- if len(en) != 0:
- x1 = x1.replace(max(en), '')
- en = []
- print(x1, " - 3 step")
- # шаг 4
- en = ending_k(r2, superl, en)
- if len(en) != 0:
- x1 = x1.replace(max(en), '')
- x1 = list(x1)
- if x1[len(x1) - 1] == 'н' and x1[len(x1) - 2] == 'н':
- del x1[len(x1) - 1]
- elif x1[len(x1) - 1] == 'ь':
- del x1[len(x1) - 1]
- x1 = ''.join(x1)
- print(" - 4 step")
- print(x0 + x1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement