Advertisement
Sitisom

Porter_anna

Sep 29th, 2020
1,127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.73 KB | None | 0 0
  1. g = ['а', 'е', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я']
  2.  
  3.  
  4. init_word = input("Введите слово: ")
  5. rv = []
  6. r1 = []
  7. r2 = []
  8.  
  9. # массив индексов гласных букв
  10. vowel = []
  11. refl = []
  12.  
  13.  
  14. # проверка гласная ли буква
  15. def gl(i):
  16.     t = False
  17.     if i in g:
  18.         t = True
  19.     return t
  20.  
  21.  
  22. index = 0
  23. for i in init_word:
  24.     if gl(i):
  25.         vowel.append(index)
  26.     index += 1
  27.  
  28. rv = init_word[vowel[0] + 1:]
  29.  
  30. index = 0
  31. for j in vowel:
  32.     if (j != len(init_word) - 1) and gl(init_word[j + 1]) and (index < 2):
  33.         refl.append(j)
  34.         index += 1
  35. print(refl)
  36.  
  37. if len(refl) == 2:
  38.     r1 = init_word[refl[0] + 2:]
  39.     r2 = init_word[refl[1] + 2:]
  40. elif len(refl) == 1:
  41.     r1 = init_word[refl[0] + 2:]
  42.  
  43. print(init_word)
  44. print(rv)
  45. print(r1)
  46. print(r2)
  47.  
  48. # массивы окончаний
  49. # Окончаниям из групп 1 должна предшествовать буква а или я
  50. perf_gerund1 = ["вшись", "вши", "вш"]
  51. perf_gerund2 = ["ившись", "ивши", "ив", "ывшись", "ывши", "ыв"]
  52. pg = [perf_gerund1, perf_gerund2]
  53. adj = ["ее", "ие", "ые", "ое", "ими", "ыми", "ей", "ий", "ый", "ой", "ем", "им", "ым", "ом", "его", "ого", "ему", "ому",
  54.        "их", "ых", "ую", "юю", "ая", "яя", "ою", "ею"]
  55. partic1 = ["ем", "нн", "вш", "ющ", "щ"]
  56. partic2 = ["ивш", "ывш", "ующ"]
  57. partic = [partic1, partic2]
  58. refl = ["ся", "сь"]
  59. v1 = ["ла", "на", "ете", "йте", "ли", "й", "ло", "ем", "нно", "ет", "ют", "ны", "ть", "ешь", "но", "л", "н"]
  60. v2 = ["ила", "ыла", "ена", "ейте", "уйте", "ите", "или", "ыли", "ей", "уй", "ило", "ыло", "им", "ым", "ено", "ил", "ыл",
  61.       "ены", "ят", "ует", "уют", "ить", "ыть", "ен", "ит", "ыт", "ишь", "ую", "ю"]
  62. v = [v1, v2]
  63. noun = ["ев", "ов", "ией", "ье", "иями", "ями", "ами", "еи", "ии", "ием", "ей", "ой", "ий", "й", "иям", "ям", "ие",
  64.         "ем",
  65.         "ам", "ом", "о", "у", "ах", "иях", "ях", "ы", "ью", "ию", "ья", "ю", "ия", "ь", "я", "а", "и", "е"]
  66. superl = ["ейше", "ейш"]
  67. deriv = ["ость", "ост"]
  68.  
  69.  
  70. # adjectival = adjective or participle + adjective
  71.  
  72. def ending(end, word):  # есть ли это окончание в конце слова
  73.     b = True
  74.     l = len(end) - 1
  75.     s1 = len(word) - 1
  76.     j = 0
  77.     if l > s1:
  78.         b = False
  79.     while j <= l and b:
  80.         if word[s1 - j] != end[l - j]:
  81.             b = False
  82.         j = j + 1
  83.     return b
  84.  
  85.  
  86. def ending_k(word, k, end):  # есть ли в слове word морфемы k массива
  87.     if k != v and k != partic and k != pg:
  88.         for i in k:
  89.             if ending(i, word):
  90.                 end.append(i)
  91.     else:
  92.         for i in k[1]:
  93.             if ending(i, word):
  94.                 end.append(i)
  95.         for i in k[0]:
  96.             if ending('a' + i, word):
  97.                 end.append(i)
  98.     return end
  99.  
  100.  
  101. x1 = ''.join(rv)  # rv часть
  102. x0 = ''.join(''.join(init_word).replace(x1, ''))  # до rv
  103.  
  104. print(x1)
  105. # шаг 1
  106. en = []
  107. en = ending_k(x1, pg, en)
  108. if len(en) != 0:
  109.     x1 = x1.replace(max(en), '')
  110. else:
  111.     en = ending_k(x1, refl, en)
  112.     if len(en) != 0:
  113.         x1 = x1.replace(max(en), '')
  114.  
  115. en = []
  116.  
  117. b = 0
  118. for i in partic1:
  119.     for j in adj:
  120.         if i + j in x1:
  121.             en.append(i + j)
  122.             b = 1
  123. if len(en) != 0:
  124.     x1 = x1.replace(max(en), '')
  125. en = []
  126.  
  127. if b == 0:
  128.     for i in partic2:
  129.         for j in adj:
  130.             if i + j in x1:
  131.                 en.append(i + j)
  132.                 b = 1
  133. if len(en) != 0:
  134.     x1 = x1.replace(max(en), '')
  135. en = []
  136.  
  137. if b == 0:
  138.     en = ending_k(x1, adj, en)
  139.     if len(en) != 0:
  140.         x1 = x1.replace(max(en), '')
  141. en = []
  142.  
  143. adj = 0
  144. c = [noun, v]
  145. while b != 1 and adj < len(c):
  146.  
  147.     en = ending_k(x1, c[adj], en)
  148.     print(len(x1), adj)
  149.     if len(en) != 0:
  150.         x1 = x1.replace(max(en), '')
  151.         b = 1
  152.     adj = adj + 1
  153. en = []
  154.  
  155. print(x1, " -  1 step")
  156.  
  157. x1 = list(x1)
  158. # шаг 2
  159. if x1[len(x1) - 1] == 'и':
  160.     del x1[len(x1) - 1]
  161. print(x1, " - 2 step")
  162.  
  163. # шаг 3
  164.  
  165. r2 = ''.join(r2)
  166. x1 = ''.join(x1)
  167. en = ending_k(r2, deriv, en)
  168. if len(en) != 0:
  169.     x1 = x1.replace(max(en), '')
  170.     en = []
  171. print(x1, " - 3 step")
  172.  
  173. # шаг 4
  174. en = ending_k(r2, superl, en)
  175. if len(en) != 0:
  176.     x1 = x1.replace(max(en), '')
  177.  
  178. x1 = list(x1)
  179. if x1[len(x1) - 1] == 'н' and x1[len(x1) - 2] == 'н':
  180.     del x1[len(x1) - 1]
  181. elif x1[len(x1) - 1] == 'ь':
  182.     del x1[len(x1) - 1]
  183. x1 = ''.join(x1)
  184. print(" - 4 step")
  185. print(x0 + x1)
  186.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement