turkish_stemmer.py 60 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803
  1. # Generated by Snowball 2.2.0 - https://snowballstem.org/
  2. from .basestemmer import BaseStemmer
  3. from .among import Among
  4. class TurkishStemmer(BaseStemmer):
  5. '''
  6. This class implements the stemming algorithm defined by a snowball script.
  7. Generated by Snowball 2.2.0 - https://snowballstem.org/
  8. '''
  9. a_0 = [
  10. Among(u"m", -1, -1),
  11. Among(u"n", -1, -1),
  12. Among(u"miz", -1, -1),
  13. Among(u"niz", -1, -1),
  14. Among(u"muz", -1, -1),
  15. Among(u"nuz", -1, -1),
  16. Among(u"m\u00FCz", -1, -1),
  17. Among(u"n\u00FCz", -1, -1),
  18. Among(u"m\u0131z", -1, -1),
  19. Among(u"n\u0131z", -1, -1)
  20. ]
  21. a_1 = [
  22. Among(u"leri", -1, -1),
  23. Among(u"lar\u0131", -1, -1)
  24. ]
  25. a_2 = [
  26. Among(u"ni", -1, -1),
  27. Among(u"nu", -1, -1),
  28. Among(u"n\u00FC", -1, -1),
  29. Among(u"n\u0131", -1, -1)
  30. ]
  31. a_3 = [
  32. Among(u"in", -1, -1),
  33. Among(u"un", -1, -1),
  34. Among(u"\u00FCn", -1, -1),
  35. Among(u"\u0131n", -1, -1)
  36. ]
  37. a_4 = [
  38. Among(u"a", -1, -1),
  39. Among(u"e", -1, -1)
  40. ]
  41. a_5 = [
  42. Among(u"na", -1, -1),
  43. Among(u"ne", -1, -1)
  44. ]
  45. a_6 = [
  46. Among(u"da", -1, -1),
  47. Among(u"ta", -1, -1),
  48. Among(u"de", -1, -1),
  49. Among(u"te", -1, -1)
  50. ]
  51. a_7 = [
  52. Among(u"nda", -1, -1),
  53. Among(u"nde", -1, -1)
  54. ]
  55. a_8 = [
  56. Among(u"dan", -1, -1),
  57. Among(u"tan", -1, -1),
  58. Among(u"den", -1, -1),
  59. Among(u"ten", -1, -1)
  60. ]
  61. a_9 = [
  62. Among(u"ndan", -1, -1),
  63. Among(u"nden", -1, -1)
  64. ]
  65. a_10 = [
  66. Among(u"la", -1, -1),
  67. Among(u"le", -1, -1)
  68. ]
  69. a_11 = [
  70. Among(u"ca", -1, -1),
  71. Among(u"ce", -1, -1)
  72. ]
  73. a_12 = [
  74. Among(u"im", -1, -1),
  75. Among(u"um", -1, -1),
  76. Among(u"\u00FCm", -1, -1),
  77. Among(u"\u0131m", -1, -1)
  78. ]
  79. a_13 = [
  80. Among(u"sin", -1, -1),
  81. Among(u"sun", -1, -1),
  82. Among(u"s\u00FCn", -1, -1),
  83. Among(u"s\u0131n", -1, -1)
  84. ]
  85. a_14 = [
  86. Among(u"iz", -1, -1),
  87. Among(u"uz", -1, -1),
  88. Among(u"\u00FCz", -1, -1),
  89. Among(u"\u0131z", -1, -1)
  90. ]
  91. a_15 = [
  92. Among(u"siniz", -1, -1),
  93. Among(u"sunuz", -1, -1),
  94. Among(u"s\u00FCn\u00FCz", -1, -1),
  95. Among(u"s\u0131n\u0131z", -1, -1)
  96. ]
  97. a_16 = [
  98. Among(u"lar", -1, -1),
  99. Among(u"ler", -1, -1)
  100. ]
  101. a_17 = [
  102. Among(u"niz", -1, -1),
  103. Among(u"nuz", -1, -1),
  104. Among(u"n\u00FCz", -1, -1),
  105. Among(u"n\u0131z", -1, -1)
  106. ]
  107. a_18 = [
  108. Among(u"dir", -1, -1),
  109. Among(u"tir", -1, -1),
  110. Among(u"dur", -1, -1),
  111. Among(u"tur", -1, -1),
  112. Among(u"d\u00FCr", -1, -1),
  113. Among(u"t\u00FCr", -1, -1),
  114. Among(u"d\u0131r", -1, -1),
  115. Among(u"t\u0131r", -1, -1)
  116. ]
  117. a_19 = [
  118. Among(u"cas\u0131na", -1, -1),
  119. Among(u"cesine", -1, -1)
  120. ]
  121. a_20 = [
  122. Among(u"di", -1, -1),
  123. Among(u"ti", -1, -1),
  124. Among(u"dik", -1, -1),
  125. Among(u"tik", -1, -1),
  126. Among(u"duk", -1, -1),
  127. Among(u"tuk", -1, -1),
  128. Among(u"d\u00FCk", -1, -1),
  129. Among(u"t\u00FCk", -1, -1),
  130. Among(u"d\u0131k", -1, -1),
  131. Among(u"t\u0131k", -1, -1),
  132. Among(u"dim", -1, -1),
  133. Among(u"tim", -1, -1),
  134. Among(u"dum", -1, -1),
  135. Among(u"tum", -1, -1),
  136. Among(u"d\u00FCm", -1, -1),
  137. Among(u"t\u00FCm", -1, -1),
  138. Among(u"d\u0131m", -1, -1),
  139. Among(u"t\u0131m", -1, -1),
  140. Among(u"din", -1, -1),
  141. Among(u"tin", -1, -1),
  142. Among(u"dun", -1, -1),
  143. Among(u"tun", -1, -1),
  144. Among(u"d\u00FCn", -1, -1),
  145. Among(u"t\u00FCn", -1, -1),
  146. Among(u"d\u0131n", -1, -1),
  147. Among(u"t\u0131n", -1, -1),
  148. Among(u"du", -1, -1),
  149. Among(u"tu", -1, -1),
  150. Among(u"d\u00FC", -1, -1),
  151. Among(u"t\u00FC", -1, -1),
  152. Among(u"d\u0131", -1, -1),
  153. Among(u"t\u0131", -1, -1)
  154. ]
  155. a_21 = [
  156. Among(u"sa", -1, -1),
  157. Among(u"se", -1, -1),
  158. Among(u"sak", -1, -1),
  159. Among(u"sek", -1, -1),
  160. Among(u"sam", -1, -1),
  161. Among(u"sem", -1, -1),
  162. Among(u"san", -1, -1),
  163. Among(u"sen", -1, -1)
  164. ]
  165. a_22 = [
  166. Among(u"mi\u015F", -1, -1),
  167. Among(u"mu\u015F", -1, -1),
  168. Among(u"m\u00FC\u015F", -1, -1),
  169. Among(u"m\u0131\u015F", -1, -1)
  170. ]
  171. a_23 = [
  172. Among(u"b", -1, 1),
  173. Among(u"c", -1, 2),
  174. Among(u"d", -1, 3),
  175. Among(u"\u011F", -1, 4)
  176. ]
  177. g_vowel = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1]
  178. g_U = [1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1]
  179. g_vowel1 = [1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
  180. g_vowel2 = [17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130]
  181. g_vowel3 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
  182. g_vowel4 = [17]
  183. g_vowel5 = [65]
  184. g_vowel6 = [65]
  185. B_continue_stemming_noun_suffixes = False
  186. def __r_check_vowel_harmony(self):
  187. v_1 = self.limit - self.cursor
  188. if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  189. return False
  190. try:
  191. v_2 = self.limit - self.cursor
  192. try:
  193. if not self.eq_s_b(u"a"):
  194. raise lab1()
  195. if not self.go_out_grouping_b(TurkishStemmer.g_vowel1, 97, 305):
  196. raise lab1()
  197. raise lab0()
  198. except lab1: pass
  199. self.cursor = self.limit - v_2
  200. try:
  201. if not self.eq_s_b(u"e"):
  202. raise lab2()
  203. if not self.go_out_grouping_b(TurkishStemmer.g_vowel2, 101, 252):
  204. raise lab2()
  205. raise lab0()
  206. except lab2: pass
  207. self.cursor = self.limit - v_2
  208. try:
  209. if not self.eq_s_b(u"\u0131"):
  210. raise lab3()
  211. if not self.go_out_grouping_b(TurkishStemmer.g_vowel3, 97, 305):
  212. raise lab3()
  213. raise lab0()
  214. except lab3: pass
  215. self.cursor = self.limit - v_2
  216. try:
  217. if not self.eq_s_b(u"i"):
  218. raise lab4()
  219. if not self.go_out_grouping_b(TurkishStemmer.g_vowel4, 101, 105):
  220. raise lab4()
  221. raise lab0()
  222. except lab4: pass
  223. self.cursor = self.limit - v_2
  224. try:
  225. if not self.eq_s_b(u"o"):
  226. raise lab5()
  227. if not self.go_out_grouping_b(TurkishStemmer.g_vowel5, 111, 117):
  228. raise lab5()
  229. raise lab0()
  230. except lab5: pass
  231. self.cursor = self.limit - v_2
  232. try:
  233. if not self.eq_s_b(u"\u00F6"):
  234. raise lab6()
  235. if not self.go_out_grouping_b(TurkishStemmer.g_vowel6, 246, 252):
  236. raise lab6()
  237. raise lab0()
  238. except lab6: pass
  239. self.cursor = self.limit - v_2
  240. try:
  241. if not self.eq_s_b(u"u"):
  242. raise lab7()
  243. if not self.go_out_grouping_b(TurkishStemmer.g_vowel5, 111, 117):
  244. raise lab7()
  245. raise lab0()
  246. except lab7: pass
  247. self.cursor = self.limit - v_2
  248. if not self.eq_s_b(u"\u00FC"):
  249. return False
  250. if not self.go_out_grouping_b(TurkishStemmer.g_vowel6, 246, 252):
  251. return False
  252. except lab0: pass
  253. self.cursor = self.limit - v_1
  254. return True
  255. def __r_mark_suffix_with_optional_n_consonant(self):
  256. try:
  257. v_1 = self.limit - self.cursor
  258. try:
  259. if not self.eq_s_b(u"n"):
  260. raise lab1()
  261. v_2 = self.limit - self.cursor
  262. if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  263. raise lab1()
  264. self.cursor = self.limit - v_2
  265. raise lab0()
  266. except lab1: pass
  267. self.cursor = self.limit - v_1
  268. v_3 = self.limit - self.cursor
  269. try:
  270. v_4 = self.limit - self.cursor
  271. if not self.eq_s_b(u"n"):
  272. raise lab2()
  273. self.cursor = self.limit - v_4
  274. return False
  275. except lab2: pass
  276. self.cursor = self.limit - v_3
  277. v_5 = self.limit - self.cursor
  278. if self.cursor <= self.limit_backward:
  279. return False
  280. self.cursor -= 1
  281. if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  282. return False
  283. self.cursor = self.limit - v_5
  284. except lab0: pass
  285. return True
  286. def __r_mark_suffix_with_optional_s_consonant(self):
  287. try:
  288. v_1 = self.limit - self.cursor
  289. try:
  290. if not self.eq_s_b(u"s"):
  291. raise lab1()
  292. v_2 = self.limit - self.cursor
  293. if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  294. raise lab1()
  295. self.cursor = self.limit - v_2
  296. raise lab0()
  297. except lab1: pass
  298. self.cursor = self.limit - v_1
  299. v_3 = self.limit - self.cursor
  300. try:
  301. v_4 = self.limit - self.cursor
  302. if not self.eq_s_b(u"s"):
  303. raise lab2()
  304. self.cursor = self.limit - v_4
  305. return False
  306. except lab2: pass
  307. self.cursor = self.limit - v_3
  308. v_5 = self.limit - self.cursor
  309. if self.cursor <= self.limit_backward:
  310. return False
  311. self.cursor -= 1
  312. if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  313. return False
  314. self.cursor = self.limit - v_5
  315. except lab0: pass
  316. return True
  317. def __r_mark_suffix_with_optional_y_consonant(self):
  318. try:
  319. v_1 = self.limit - self.cursor
  320. try:
  321. if not self.eq_s_b(u"y"):
  322. raise lab1()
  323. v_2 = self.limit - self.cursor
  324. if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  325. raise lab1()
  326. self.cursor = self.limit - v_2
  327. raise lab0()
  328. except lab1: pass
  329. self.cursor = self.limit - v_1
  330. v_3 = self.limit - self.cursor
  331. try:
  332. v_4 = self.limit - self.cursor
  333. if not self.eq_s_b(u"y"):
  334. raise lab2()
  335. self.cursor = self.limit - v_4
  336. return False
  337. except lab2: pass
  338. self.cursor = self.limit - v_3
  339. v_5 = self.limit - self.cursor
  340. if self.cursor <= self.limit_backward:
  341. return False
  342. self.cursor -= 1
  343. if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  344. return False
  345. self.cursor = self.limit - v_5
  346. except lab0: pass
  347. return True
  348. def __r_mark_suffix_with_optional_U_vowel(self):
  349. try:
  350. v_1 = self.limit - self.cursor
  351. try:
  352. if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305):
  353. raise lab1()
  354. v_2 = self.limit - self.cursor
  355. if not self.out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  356. raise lab1()
  357. self.cursor = self.limit - v_2
  358. raise lab0()
  359. except lab1: pass
  360. self.cursor = self.limit - v_1
  361. v_3 = self.limit - self.cursor
  362. try:
  363. v_4 = self.limit - self.cursor
  364. if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305):
  365. raise lab2()
  366. self.cursor = self.limit - v_4
  367. return False
  368. except lab2: pass
  369. self.cursor = self.limit - v_3
  370. v_5 = self.limit - self.cursor
  371. if self.cursor <= self.limit_backward:
  372. return False
  373. self.cursor -= 1
  374. if not self.out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  375. return False
  376. self.cursor = self.limit - v_5
  377. except lab0: pass
  378. return True
  379. def __r_mark_possessives(self):
  380. if self.find_among_b(TurkishStemmer.a_0) == 0:
  381. return False
  382. if not self.__r_mark_suffix_with_optional_U_vowel():
  383. return False
  384. return True
  385. def __r_mark_sU(self):
  386. if not self.__r_check_vowel_harmony():
  387. return False
  388. if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305):
  389. return False
  390. if not self.__r_mark_suffix_with_optional_s_consonant():
  391. return False
  392. return True
  393. def __r_mark_lArI(self):
  394. if self.find_among_b(TurkishStemmer.a_1) == 0:
  395. return False
  396. return True
  397. def __r_mark_yU(self):
  398. if not self.__r_check_vowel_harmony():
  399. return False
  400. if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305):
  401. return False
  402. if not self.__r_mark_suffix_with_optional_y_consonant():
  403. return False
  404. return True
  405. def __r_mark_nU(self):
  406. if not self.__r_check_vowel_harmony():
  407. return False
  408. if self.find_among_b(TurkishStemmer.a_2) == 0:
  409. return False
  410. return True
  411. def __r_mark_nUn(self):
  412. if not self.__r_check_vowel_harmony():
  413. return False
  414. if self.find_among_b(TurkishStemmer.a_3) == 0:
  415. return False
  416. if not self.__r_mark_suffix_with_optional_n_consonant():
  417. return False
  418. return True
  419. def __r_mark_yA(self):
  420. if not self.__r_check_vowel_harmony():
  421. return False
  422. if self.find_among_b(TurkishStemmer.a_4) == 0:
  423. return False
  424. if not self.__r_mark_suffix_with_optional_y_consonant():
  425. return False
  426. return True
  427. def __r_mark_nA(self):
  428. if not self.__r_check_vowel_harmony():
  429. return False
  430. if self.find_among_b(TurkishStemmer.a_5) == 0:
  431. return False
  432. return True
  433. def __r_mark_DA(self):
  434. if not self.__r_check_vowel_harmony():
  435. return False
  436. if self.find_among_b(TurkishStemmer.a_6) == 0:
  437. return False
  438. return True
  439. def __r_mark_ndA(self):
  440. if not self.__r_check_vowel_harmony():
  441. return False
  442. if self.find_among_b(TurkishStemmer.a_7) == 0:
  443. return False
  444. return True
  445. def __r_mark_DAn(self):
  446. if not self.__r_check_vowel_harmony():
  447. return False
  448. if self.find_among_b(TurkishStemmer.a_8) == 0:
  449. return False
  450. return True
  451. def __r_mark_ndAn(self):
  452. if not self.__r_check_vowel_harmony():
  453. return False
  454. if self.find_among_b(TurkishStemmer.a_9) == 0:
  455. return False
  456. return True
  457. def __r_mark_ylA(self):
  458. if not self.__r_check_vowel_harmony():
  459. return False
  460. if self.find_among_b(TurkishStemmer.a_10) == 0:
  461. return False
  462. if not self.__r_mark_suffix_with_optional_y_consonant():
  463. return False
  464. return True
  465. def __r_mark_ki(self):
  466. if not self.eq_s_b(u"ki"):
  467. return False
  468. return True
  469. def __r_mark_ncA(self):
  470. if not self.__r_check_vowel_harmony():
  471. return False
  472. if self.find_among_b(TurkishStemmer.a_11) == 0:
  473. return False
  474. if not self.__r_mark_suffix_with_optional_n_consonant():
  475. return False
  476. return True
  477. def __r_mark_yUm(self):
  478. if not self.__r_check_vowel_harmony():
  479. return False
  480. if self.find_among_b(TurkishStemmer.a_12) == 0:
  481. return False
  482. if not self.__r_mark_suffix_with_optional_y_consonant():
  483. return False
  484. return True
  485. def __r_mark_sUn(self):
  486. if not self.__r_check_vowel_harmony():
  487. return False
  488. if self.find_among_b(TurkishStemmer.a_13) == 0:
  489. return False
  490. return True
  491. def __r_mark_yUz(self):
  492. if not self.__r_check_vowel_harmony():
  493. return False
  494. if self.find_among_b(TurkishStemmer.a_14) == 0:
  495. return False
  496. if not self.__r_mark_suffix_with_optional_y_consonant():
  497. return False
  498. return True
  499. def __r_mark_sUnUz(self):
  500. if self.find_among_b(TurkishStemmer.a_15) == 0:
  501. return False
  502. return True
  503. def __r_mark_lAr(self):
  504. if not self.__r_check_vowel_harmony():
  505. return False
  506. if self.find_among_b(TurkishStemmer.a_16) == 0:
  507. return False
  508. return True
  509. def __r_mark_nUz(self):
  510. if not self.__r_check_vowel_harmony():
  511. return False
  512. if self.find_among_b(TurkishStemmer.a_17) == 0:
  513. return False
  514. return True
  515. def __r_mark_DUr(self):
  516. if not self.__r_check_vowel_harmony():
  517. return False
  518. if self.find_among_b(TurkishStemmer.a_18) == 0:
  519. return False
  520. return True
  521. def __r_mark_cAsInA(self):
  522. if self.find_among_b(TurkishStemmer.a_19) == 0:
  523. return False
  524. return True
  525. def __r_mark_yDU(self):
  526. if not self.__r_check_vowel_harmony():
  527. return False
  528. if self.find_among_b(TurkishStemmer.a_20) == 0:
  529. return False
  530. if not self.__r_mark_suffix_with_optional_y_consonant():
  531. return False
  532. return True
  533. def __r_mark_ysA(self):
  534. if self.find_among_b(TurkishStemmer.a_21) == 0:
  535. return False
  536. if not self.__r_mark_suffix_with_optional_y_consonant():
  537. return False
  538. return True
  539. def __r_mark_ymUs_(self):
  540. if not self.__r_check_vowel_harmony():
  541. return False
  542. if self.find_among_b(TurkishStemmer.a_22) == 0:
  543. return False
  544. if not self.__r_mark_suffix_with_optional_y_consonant():
  545. return False
  546. return True
  547. def __r_mark_yken(self):
  548. if not self.eq_s_b(u"ken"):
  549. return False
  550. if not self.__r_mark_suffix_with_optional_y_consonant():
  551. return False
  552. return True
  553. def __r_stem_nominal_verb_suffixes(self):
  554. self.ket = self.cursor
  555. self.B_continue_stemming_noun_suffixes = True
  556. try:
  557. v_1 = self.limit - self.cursor
  558. try:
  559. try:
  560. v_2 = self.limit - self.cursor
  561. try:
  562. if not self.__r_mark_ymUs_():
  563. raise lab3()
  564. raise lab2()
  565. except lab3: pass
  566. self.cursor = self.limit - v_2
  567. try:
  568. if not self.__r_mark_yDU():
  569. raise lab4()
  570. raise lab2()
  571. except lab4: pass
  572. self.cursor = self.limit - v_2
  573. try:
  574. if not self.__r_mark_ysA():
  575. raise lab5()
  576. raise lab2()
  577. except lab5: pass
  578. self.cursor = self.limit - v_2
  579. if not self.__r_mark_yken():
  580. raise lab1()
  581. except lab2: pass
  582. raise lab0()
  583. except lab1: pass
  584. self.cursor = self.limit - v_1
  585. try:
  586. if not self.__r_mark_cAsInA():
  587. raise lab6()
  588. try:
  589. v_3 = self.limit - self.cursor
  590. try:
  591. if not self.__r_mark_sUnUz():
  592. raise lab8()
  593. raise lab7()
  594. except lab8: pass
  595. self.cursor = self.limit - v_3
  596. try:
  597. if not self.__r_mark_lAr():
  598. raise lab9()
  599. raise lab7()
  600. except lab9: pass
  601. self.cursor = self.limit - v_3
  602. try:
  603. if not self.__r_mark_yUm():
  604. raise lab10()
  605. raise lab7()
  606. except lab10: pass
  607. self.cursor = self.limit - v_3
  608. try:
  609. if not self.__r_mark_sUn():
  610. raise lab11()
  611. raise lab7()
  612. except lab11: pass
  613. self.cursor = self.limit - v_3
  614. try:
  615. if not self.__r_mark_yUz():
  616. raise lab12()
  617. raise lab7()
  618. except lab12: pass
  619. self.cursor = self.limit - v_3
  620. except lab7: pass
  621. if not self.__r_mark_ymUs_():
  622. raise lab6()
  623. raise lab0()
  624. except lab6: pass
  625. self.cursor = self.limit - v_1
  626. try:
  627. if not self.__r_mark_lAr():
  628. raise lab13()
  629. self.bra = self.cursor
  630. if not self.slice_del():
  631. return False
  632. v_4 = self.limit - self.cursor
  633. try:
  634. self.ket = self.cursor
  635. try:
  636. v_5 = self.limit - self.cursor
  637. try:
  638. if not self.__r_mark_DUr():
  639. raise lab16()
  640. raise lab15()
  641. except lab16: pass
  642. self.cursor = self.limit - v_5
  643. try:
  644. if not self.__r_mark_yDU():
  645. raise lab17()
  646. raise lab15()
  647. except lab17: pass
  648. self.cursor = self.limit - v_5
  649. try:
  650. if not self.__r_mark_ysA():
  651. raise lab18()
  652. raise lab15()
  653. except lab18: pass
  654. self.cursor = self.limit - v_5
  655. if not self.__r_mark_ymUs_():
  656. self.cursor = self.limit - v_4
  657. raise lab14()
  658. except lab15: pass
  659. except lab14: pass
  660. self.B_continue_stemming_noun_suffixes = False
  661. raise lab0()
  662. except lab13: pass
  663. self.cursor = self.limit - v_1
  664. try:
  665. if not self.__r_mark_nUz():
  666. raise lab19()
  667. try:
  668. v_6 = self.limit - self.cursor
  669. try:
  670. if not self.__r_mark_yDU():
  671. raise lab21()
  672. raise lab20()
  673. except lab21: pass
  674. self.cursor = self.limit - v_6
  675. if not self.__r_mark_ysA():
  676. raise lab19()
  677. except lab20: pass
  678. raise lab0()
  679. except lab19: pass
  680. self.cursor = self.limit - v_1
  681. try:
  682. try:
  683. v_7 = self.limit - self.cursor
  684. try:
  685. if not self.__r_mark_sUnUz():
  686. raise lab24()
  687. raise lab23()
  688. except lab24: pass
  689. self.cursor = self.limit - v_7
  690. try:
  691. if not self.__r_mark_yUz():
  692. raise lab25()
  693. raise lab23()
  694. except lab25: pass
  695. self.cursor = self.limit - v_7
  696. try:
  697. if not self.__r_mark_sUn():
  698. raise lab26()
  699. raise lab23()
  700. except lab26: pass
  701. self.cursor = self.limit - v_7
  702. if not self.__r_mark_yUm():
  703. raise lab22()
  704. except lab23: pass
  705. self.bra = self.cursor
  706. if not self.slice_del():
  707. return False
  708. v_8 = self.limit - self.cursor
  709. try:
  710. self.ket = self.cursor
  711. if not self.__r_mark_ymUs_():
  712. self.cursor = self.limit - v_8
  713. raise lab27()
  714. except lab27: pass
  715. raise lab0()
  716. except lab22: pass
  717. self.cursor = self.limit - v_1
  718. if not self.__r_mark_DUr():
  719. return False
  720. self.bra = self.cursor
  721. if not self.slice_del():
  722. return False
  723. v_9 = self.limit - self.cursor
  724. try:
  725. self.ket = self.cursor
  726. try:
  727. v_10 = self.limit - self.cursor
  728. try:
  729. if not self.__r_mark_sUnUz():
  730. raise lab30()
  731. raise lab29()
  732. except lab30: pass
  733. self.cursor = self.limit - v_10
  734. try:
  735. if not self.__r_mark_lAr():
  736. raise lab31()
  737. raise lab29()
  738. except lab31: pass
  739. self.cursor = self.limit - v_10
  740. try:
  741. if not self.__r_mark_yUm():
  742. raise lab32()
  743. raise lab29()
  744. except lab32: pass
  745. self.cursor = self.limit - v_10
  746. try:
  747. if not self.__r_mark_sUn():
  748. raise lab33()
  749. raise lab29()
  750. except lab33: pass
  751. self.cursor = self.limit - v_10
  752. try:
  753. if not self.__r_mark_yUz():
  754. raise lab34()
  755. raise lab29()
  756. except lab34: pass
  757. self.cursor = self.limit - v_10
  758. except lab29: pass
  759. if not self.__r_mark_ymUs_():
  760. self.cursor = self.limit - v_9
  761. raise lab28()
  762. except lab28: pass
  763. except lab0: pass
  764. self.bra = self.cursor
  765. if not self.slice_del():
  766. return False
  767. return True
  768. def __r_stem_suffix_chain_before_ki(self):
  769. self.ket = self.cursor
  770. if not self.__r_mark_ki():
  771. return False
  772. try:
  773. v_1 = self.limit - self.cursor
  774. try:
  775. if not self.__r_mark_DA():
  776. raise lab1()
  777. self.bra = self.cursor
  778. if not self.slice_del():
  779. return False
  780. v_2 = self.limit - self.cursor
  781. try:
  782. self.ket = self.cursor
  783. try:
  784. v_3 = self.limit - self.cursor
  785. try:
  786. if not self.__r_mark_lAr():
  787. raise lab4()
  788. self.bra = self.cursor
  789. if not self.slice_del():
  790. return False
  791. v_4 = self.limit - self.cursor
  792. try:
  793. if not self.__r_stem_suffix_chain_before_ki():
  794. self.cursor = self.limit - v_4
  795. raise lab5()
  796. except lab5: pass
  797. raise lab3()
  798. except lab4: pass
  799. self.cursor = self.limit - v_3
  800. if not self.__r_mark_possessives():
  801. self.cursor = self.limit - v_2
  802. raise lab2()
  803. self.bra = self.cursor
  804. if not self.slice_del():
  805. return False
  806. v_5 = self.limit - self.cursor
  807. try:
  808. self.ket = self.cursor
  809. if not self.__r_mark_lAr():
  810. self.cursor = self.limit - v_5
  811. raise lab6()
  812. self.bra = self.cursor
  813. if not self.slice_del():
  814. return False
  815. if not self.__r_stem_suffix_chain_before_ki():
  816. self.cursor = self.limit - v_5
  817. raise lab6()
  818. except lab6: pass
  819. except lab3: pass
  820. except lab2: pass
  821. raise lab0()
  822. except lab1: pass
  823. self.cursor = self.limit - v_1
  824. try:
  825. if not self.__r_mark_nUn():
  826. raise lab7()
  827. self.bra = self.cursor
  828. if not self.slice_del():
  829. return False
  830. v_6 = self.limit - self.cursor
  831. try:
  832. self.ket = self.cursor
  833. try:
  834. v_7 = self.limit - self.cursor
  835. try:
  836. if not self.__r_mark_lArI():
  837. raise lab10()
  838. self.bra = self.cursor
  839. if not self.slice_del():
  840. return False
  841. raise lab9()
  842. except lab10: pass
  843. self.cursor = self.limit - v_7
  844. try:
  845. self.ket = self.cursor
  846. try:
  847. v_8 = self.limit - self.cursor
  848. try:
  849. if not self.__r_mark_possessives():
  850. raise lab13()
  851. raise lab12()
  852. except lab13: pass
  853. self.cursor = self.limit - v_8
  854. if not self.__r_mark_sU():
  855. raise lab11()
  856. except lab12: pass
  857. self.bra = self.cursor
  858. if not self.slice_del():
  859. return False
  860. v_9 = self.limit - self.cursor
  861. try:
  862. self.ket = self.cursor
  863. if not self.__r_mark_lAr():
  864. self.cursor = self.limit - v_9
  865. raise lab14()
  866. self.bra = self.cursor
  867. if not self.slice_del():
  868. return False
  869. if not self.__r_stem_suffix_chain_before_ki():
  870. self.cursor = self.limit - v_9
  871. raise lab14()
  872. except lab14: pass
  873. raise lab9()
  874. except lab11: pass
  875. self.cursor = self.limit - v_7
  876. if not self.__r_stem_suffix_chain_before_ki():
  877. self.cursor = self.limit - v_6
  878. raise lab8()
  879. except lab9: pass
  880. except lab8: pass
  881. raise lab0()
  882. except lab7: pass
  883. self.cursor = self.limit - v_1
  884. if not self.__r_mark_ndA():
  885. return False
  886. try:
  887. v_10 = self.limit - self.cursor
  888. try:
  889. if not self.__r_mark_lArI():
  890. raise lab16()
  891. self.bra = self.cursor
  892. if not self.slice_del():
  893. return False
  894. raise lab15()
  895. except lab16: pass
  896. self.cursor = self.limit - v_10
  897. try:
  898. if not self.__r_mark_sU():
  899. raise lab17()
  900. self.bra = self.cursor
  901. if not self.slice_del():
  902. return False
  903. v_11 = self.limit - self.cursor
  904. try:
  905. self.ket = self.cursor
  906. if not self.__r_mark_lAr():
  907. self.cursor = self.limit - v_11
  908. raise lab18()
  909. self.bra = self.cursor
  910. if not self.slice_del():
  911. return False
  912. if not self.__r_stem_suffix_chain_before_ki():
  913. self.cursor = self.limit - v_11
  914. raise lab18()
  915. except lab18: pass
  916. raise lab15()
  917. except lab17: pass
  918. self.cursor = self.limit - v_10
  919. if not self.__r_stem_suffix_chain_before_ki():
  920. return False
  921. except lab15: pass
  922. except lab0: pass
  923. return True
  924. def __r_stem_noun_suffixes(self):
  925. try:
  926. v_1 = self.limit - self.cursor
  927. try:
  928. self.ket = self.cursor
  929. if not self.__r_mark_lAr():
  930. raise lab1()
  931. self.bra = self.cursor
  932. if not self.slice_del():
  933. return False
  934. v_2 = self.limit - self.cursor
  935. try:
  936. if not self.__r_stem_suffix_chain_before_ki():
  937. self.cursor = self.limit - v_2
  938. raise lab2()
  939. except lab2: pass
  940. raise lab0()
  941. except lab1: pass
  942. self.cursor = self.limit - v_1
  943. try:
  944. self.ket = self.cursor
  945. if not self.__r_mark_ncA():
  946. raise lab3()
  947. self.bra = self.cursor
  948. if not self.slice_del():
  949. return False
  950. v_3 = self.limit - self.cursor
  951. try:
  952. try:
  953. v_4 = self.limit - self.cursor
  954. try:
  955. self.ket = self.cursor
  956. if not self.__r_mark_lArI():
  957. raise lab6()
  958. self.bra = self.cursor
  959. if not self.slice_del():
  960. return False
  961. raise lab5()
  962. except lab6: pass
  963. self.cursor = self.limit - v_4
  964. try:
  965. self.ket = self.cursor
  966. try:
  967. v_5 = self.limit - self.cursor
  968. try:
  969. if not self.__r_mark_possessives():
  970. raise lab9()
  971. raise lab8()
  972. except lab9: pass
  973. self.cursor = self.limit - v_5
  974. if not self.__r_mark_sU():
  975. raise lab7()
  976. except lab8: pass
  977. self.bra = self.cursor
  978. if not self.slice_del():
  979. return False
  980. v_6 = self.limit - self.cursor
  981. try:
  982. self.ket = self.cursor
  983. if not self.__r_mark_lAr():
  984. self.cursor = self.limit - v_6
  985. raise lab10()
  986. self.bra = self.cursor
  987. if not self.slice_del():
  988. return False
  989. if not self.__r_stem_suffix_chain_before_ki():
  990. self.cursor = self.limit - v_6
  991. raise lab10()
  992. except lab10: pass
  993. raise lab5()
  994. except lab7: pass
  995. self.cursor = self.limit - v_4
  996. self.ket = self.cursor
  997. if not self.__r_mark_lAr():
  998. self.cursor = self.limit - v_3
  999. raise lab4()
  1000. self.bra = self.cursor
  1001. if not self.slice_del():
  1002. return False
  1003. if not self.__r_stem_suffix_chain_before_ki():
  1004. self.cursor = self.limit - v_3
  1005. raise lab4()
  1006. except lab5: pass
  1007. except lab4: pass
  1008. raise lab0()
  1009. except lab3: pass
  1010. self.cursor = self.limit - v_1
  1011. try:
  1012. self.ket = self.cursor
  1013. try:
  1014. v_7 = self.limit - self.cursor
  1015. try:
  1016. if not self.__r_mark_ndA():
  1017. raise lab13()
  1018. raise lab12()
  1019. except lab13: pass
  1020. self.cursor = self.limit - v_7
  1021. if not self.__r_mark_nA():
  1022. raise lab11()
  1023. except lab12: pass
  1024. try:
  1025. v_8 = self.limit - self.cursor
  1026. try:
  1027. if not self.__r_mark_lArI():
  1028. raise lab15()
  1029. self.bra = self.cursor
  1030. if not self.slice_del():
  1031. return False
  1032. raise lab14()
  1033. except lab15: pass
  1034. self.cursor = self.limit - v_8
  1035. try:
  1036. if not self.__r_mark_sU():
  1037. raise lab16()
  1038. self.bra = self.cursor
  1039. if not self.slice_del():
  1040. return False
  1041. v_9 = self.limit - self.cursor
  1042. try:
  1043. self.ket = self.cursor
  1044. if not self.__r_mark_lAr():
  1045. self.cursor = self.limit - v_9
  1046. raise lab17()
  1047. self.bra = self.cursor
  1048. if not self.slice_del():
  1049. return False
  1050. if not self.__r_stem_suffix_chain_before_ki():
  1051. self.cursor = self.limit - v_9
  1052. raise lab17()
  1053. except lab17: pass
  1054. raise lab14()
  1055. except lab16: pass
  1056. self.cursor = self.limit - v_8
  1057. if not self.__r_stem_suffix_chain_before_ki():
  1058. raise lab11()
  1059. except lab14: pass
  1060. raise lab0()
  1061. except lab11: pass
  1062. self.cursor = self.limit - v_1
  1063. try:
  1064. self.ket = self.cursor
  1065. try:
  1066. v_10 = self.limit - self.cursor
  1067. try:
  1068. if not self.__r_mark_ndAn():
  1069. raise lab20()
  1070. raise lab19()
  1071. except lab20: pass
  1072. self.cursor = self.limit - v_10
  1073. if not self.__r_mark_nU():
  1074. raise lab18()
  1075. except lab19: pass
  1076. try:
  1077. v_11 = self.limit - self.cursor
  1078. try:
  1079. if not self.__r_mark_sU():
  1080. raise lab22()
  1081. self.bra = self.cursor
  1082. if not self.slice_del():
  1083. return False
  1084. v_12 = self.limit - self.cursor
  1085. try:
  1086. self.ket = self.cursor
  1087. if not self.__r_mark_lAr():
  1088. self.cursor = self.limit - v_12
  1089. raise lab23()
  1090. self.bra = self.cursor
  1091. if not self.slice_del():
  1092. return False
  1093. if not self.__r_stem_suffix_chain_before_ki():
  1094. self.cursor = self.limit - v_12
  1095. raise lab23()
  1096. except lab23: pass
  1097. raise lab21()
  1098. except lab22: pass
  1099. self.cursor = self.limit - v_11
  1100. if not self.__r_mark_lArI():
  1101. raise lab18()
  1102. except lab21: pass
  1103. raise lab0()
  1104. except lab18: pass
  1105. self.cursor = self.limit - v_1
  1106. try:
  1107. self.ket = self.cursor
  1108. if not self.__r_mark_DAn():
  1109. raise lab24()
  1110. self.bra = self.cursor
  1111. if not self.slice_del():
  1112. return False
  1113. v_13 = self.limit - self.cursor
  1114. try:
  1115. self.ket = self.cursor
  1116. try:
  1117. v_14 = self.limit - self.cursor
  1118. try:
  1119. if not self.__r_mark_possessives():
  1120. raise lab27()
  1121. self.bra = self.cursor
  1122. if not self.slice_del():
  1123. return False
  1124. v_15 = self.limit - self.cursor
  1125. try:
  1126. self.ket = self.cursor
  1127. if not self.__r_mark_lAr():
  1128. self.cursor = self.limit - v_15
  1129. raise lab28()
  1130. self.bra = self.cursor
  1131. if not self.slice_del():
  1132. return False
  1133. if not self.__r_stem_suffix_chain_before_ki():
  1134. self.cursor = self.limit - v_15
  1135. raise lab28()
  1136. except lab28: pass
  1137. raise lab26()
  1138. except lab27: pass
  1139. self.cursor = self.limit - v_14
  1140. try:
  1141. if not self.__r_mark_lAr():
  1142. raise lab29()
  1143. self.bra = self.cursor
  1144. if not self.slice_del():
  1145. return False
  1146. v_16 = self.limit - self.cursor
  1147. try:
  1148. if not self.__r_stem_suffix_chain_before_ki():
  1149. self.cursor = self.limit - v_16
  1150. raise lab30()
  1151. except lab30: pass
  1152. raise lab26()
  1153. except lab29: pass
  1154. self.cursor = self.limit - v_14
  1155. if not self.__r_stem_suffix_chain_before_ki():
  1156. self.cursor = self.limit - v_13
  1157. raise lab25()
  1158. except lab26: pass
  1159. except lab25: pass
  1160. raise lab0()
  1161. except lab24: pass
  1162. self.cursor = self.limit - v_1
  1163. try:
  1164. self.ket = self.cursor
  1165. try:
  1166. v_17 = self.limit - self.cursor
  1167. try:
  1168. if not self.__r_mark_nUn():
  1169. raise lab33()
  1170. raise lab32()
  1171. except lab33: pass
  1172. self.cursor = self.limit - v_17
  1173. if not self.__r_mark_ylA():
  1174. raise lab31()
  1175. except lab32: pass
  1176. self.bra = self.cursor
  1177. if not self.slice_del():
  1178. return False
  1179. v_18 = self.limit - self.cursor
  1180. try:
  1181. try:
  1182. v_19 = self.limit - self.cursor
  1183. try:
  1184. self.ket = self.cursor
  1185. if not self.__r_mark_lAr():
  1186. raise lab36()
  1187. self.bra = self.cursor
  1188. if not self.slice_del():
  1189. return False
  1190. if not self.__r_stem_suffix_chain_before_ki():
  1191. raise lab36()
  1192. raise lab35()
  1193. except lab36: pass
  1194. self.cursor = self.limit - v_19
  1195. try:
  1196. self.ket = self.cursor
  1197. try:
  1198. v_20 = self.limit - self.cursor
  1199. try:
  1200. if not self.__r_mark_possessives():
  1201. raise lab39()
  1202. raise lab38()
  1203. except lab39: pass
  1204. self.cursor = self.limit - v_20
  1205. if not self.__r_mark_sU():
  1206. raise lab37()
  1207. except lab38: pass
  1208. self.bra = self.cursor
  1209. if not self.slice_del():
  1210. return False
  1211. v_21 = self.limit - self.cursor
  1212. try:
  1213. self.ket = self.cursor
  1214. if not self.__r_mark_lAr():
  1215. self.cursor = self.limit - v_21
  1216. raise lab40()
  1217. self.bra = self.cursor
  1218. if not self.slice_del():
  1219. return False
  1220. if not self.__r_stem_suffix_chain_before_ki():
  1221. self.cursor = self.limit - v_21
  1222. raise lab40()
  1223. except lab40: pass
  1224. raise lab35()
  1225. except lab37: pass
  1226. self.cursor = self.limit - v_19
  1227. if not self.__r_stem_suffix_chain_before_ki():
  1228. self.cursor = self.limit - v_18
  1229. raise lab34()
  1230. except lab35: pass
  1231. except lab34: pass
  1232. raise lab0()
  1233. except lab31: pass
  1234. self.cursor = self.limit - v_1
  1235. try:
  1236. self.ket = self.cursor
  1237. if not self.__r_mark_lArI():
  1238. raise lab41()
  1239. self.bra = self.cursor
  1240. if not self.slice_del():
  1241. return False
  1242. raise lab0()
  1243. except lab41: pass
  1244. self.cursor = self.limit - v_1
  1245. try:
  1246. if not self.__r_stem_suffix_chain_before_ki():
  1247. raise lab42()
  1248. raise lab0()
  1249. except lab42: pass
  1250. self.cursor = self.limit - v_1
  1251. try:
  1252. self.ket = self.cursor
  1253. try:
  1254. v_22 = self.limit - self.cursor
  1255. try:
  1256. if not self.__r_mark_DA():
  1257. raise lab45()
  1258. raise lab44()
  1259. except lab45: pass
  1260. self.cursor = self.limit - v_22
  1261. try:
  1262. if not self.__r_mark_yU():
  1263. raise lab46()
  1264. raise lab44()
  1265. except lab46: pass
  1266. self.cursor = self.limit - v_22
  1267. if not self.__r_mark_yA():
  1268. raise lab43()
  1269. except lab44: pass
  1270. self.bra = self.cursor
  1271. if not self.slice_del():
  1272. return False
  1273. v_23 = self.limit - self.cursor
  1274. try:
  1275. self.ket = self.cursor
  1276. try:
  1277. v_24 = self.limit - self.cursor
  1278. try:
  1279. if not self.__r_mark_possessives():
  1280. raise lab49()
  1281. self.bra = self.cursor
  1282. if not self.slice_del():
  1283. return False
  1284. v_25 = self.limit - self.cursor
  1285. try:
  1286. self.ket = self.cursor
  1287. if not self.__r_mark_lAr():
  1288. self.cursor = self.limit - v_25
  1289. raise lab50()
  1290. except lab50: pass
  1291. raise lab48()
  1292. except lab49: pass
  1293. self.cursor = self.limit - v_24
  1294. if not self.__r_mark_lAr():
  1295. self.cursor = self.limit - v_23
  1296. raise lab47()
  1297. except lab48: pass
  1298. self.bra = self.cursor
  1299. if not self.slice_del():
  1300. return False
  1301. self.ket = self.cursor
  1302. if not self.__r_stem_suffix_chain_before_ki():
  1303. self.cursor = self.limit - v_23
  1304. raise lab47()
  1305. except lab47: pass
  1306. raise lab0()
  1307. except lab43: pass
  1308. self.cursor = self.limit - v_1
  1309. self.ket = self.cursor
  1310. try:
  1311. v_26 = self.limit - self.cursor
  1312. try:
  1313. if not self.__r_mark_possessives():
  1314. raise lab52()
  1315. raise lab51()
  1316. except lab52: pass
  1317. self.cursor = self.limit - v_26
  1318. if not self.__r_mark_sU():
  1319. return False
  1320. except lab51: pass
  1321. self.bra = self.cursor
  1322. if not self.slice_del():
  1323. return False
  1324. v_27 = self.limit - self.cursor
  1325. try:
  1326. self.ket = self.cursor
  1327. if not self.__r_mark_lAr():
  1328. self.cursor = self.limit - v_27
  1329. raise lab53()
  1330. self.bra = self.cursor
  1331. if not self.slice_del():
  1332. return False
  1333. if not self.__r_stem_suffix_chain_before_ki():
  1334. self.cursor = self.limit - v_27
  1335. raise lab53()
  1336. except lab53: pass
  1337. except lab0: pass
  1338. return True
  1339. def __r_post_process_last_consonants(self):
  1340. self.ket = self.cursor
  1341. among_var = self.find_among_b(TurkishStemmer.a_23)
  1342. if among_var == 0:
  1343. return False
  1344. self.bra = self.cursor
  1345. if among_var == 1:
  1346. if not self.slice_from(u"p"):
  1347. return False
  1348. elif among_var == 2:
  1349. if not self.slice_from(u"\u00E7"):
  1350. return False
  1351. elif among_var == 3:
  1352. if not self.slice_from(u"t"):
  1353. return False
  1354. else:
  1355. if not self.slice_from(u"k"):
  1356. return False
  1357. return True
  1358. def __r_append_U_to_stems_ending_with_d_or_g(self):
  1359. v_1 = self.limit - self.cursor
  1360. try:
  1361. v_2 = self.limit - self.cursor
  1362. try:
  1363. if not self.eq_s_b(u"d"):
  1364. raise lab1()
  1365. raise lab0()
  1366. except lab1: pass
  1367. self.cursor = self.limit - v_2
  1368. if not self.eq_s_b(u"g"):
  1369. return False
  1370. except lab0: pass
  1371. self.cursor = self.limit - v_1
  1372. try:
  1373. v_3 = self.limit - self.cursor
  1374. try:
  1375. v_4 = self.limit - self.cursor
  1376. if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  1377. raise lab3()
  1378. try:
  1379. v_5 = self.limit - self.cursor
  1380. try:
  1381. if not self.eq_s_b(u"a"):
  1382. raise lab5()
  1383. raise lab4()
  1384. except lab5: pass
  1385. self.cursor = self.limit - v_5
  1386. if not self.eq_s_b(u"\u0131"):
  1387. raise lab3()
  1388. except lab4: pass
  1389. self.cursor = self.limit - v_4
  1390. c = self.cursor
  1391. self.insert(self.cursor, self.cursor, u"\u0131")
  1392. self.cursor = c
  1393. raise lab2()
  1394. except lab3: pass
  1395. self.cursor = self.limit - v_3
  1396. try:
  1397. v_6 = self.limit - self.cursor
  1398. if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  1399. raise lab6()
  1400. try:
  1401. v_7 = self.limit - self.cursor
  1402. try:
  1403. if not self.eq_s_b(u"e"):
  1404. raise lab8()
  1405. raise lab7()
  1406. except lab8: pass
  1407. self.cursor = self.limit - v_7
  1408. if not self.eq_s_b(u"i"):
  1409. raise lab6()
  1410. except lab7: pass
  1411. self.cursor = self.limit - v_6
  1412. c = self.cursor
  1413. self.insert(self.cursor, self.cursor, u"i")
  1414. self.cursor = c
  1415. raise lab2()
  1416. except lab6: pass
  1417. self.cursor = self.limit - v_3
  1418. try:
  1419. v_8 = self.limit - self.cursor
  1420. if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  1421. raise lab9()
  1422. try:
  1423. v_9 = self.limit - self.cursor
  1424. try:
  1425. if not self.eq_s_b(u"o"):
  1426. raise lab11()
  1427. raise lab10()
  1428. except lab11: pass
  1429. self.cursor = self.limit - v_9
  1430. if not self.eq_s_b(u"u"):
  1431. raise lab9()
  1432. except lab10: pass
  1433. self.cursor = self.limit - v_8
  1434. c = self.cursor
  1435. self.insert(self.cursor, self.cursor, u"u")
  1436. self.cursor = c
  1437. raise lab2()
  1438. except lab9: pass
  1439. self.cursor = self.limit - v_3
  1440. v_10 = self.limit - self.cursor
  1441. if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
  1442. return False
  1443. try:
  1444. v_11 = self.limit - self.cursor
  1445. try:
  1446. if not self.eq_s_b(u"\u00F6"):
  1447. raise lab13()
  1448. raise lab12()
  1449. except lab13: pass
  1450. self.cursor = self.limit - v_11
  1451. if not self.eq_s_b(u"\u00FC"):
  1452. return False
  1453. except lab12: pass
  1454. self.cursor = self.limit - v_10
  1455. c = self.cursor
  1456. self.insert(self.cursor, self.cursor, u"\u00FC")
  1457. self.cursor = c
  1458. except lab2: pass
  1459. return True
  1460. def __r_is_reserved_word(self):
  1461. if not self.eq_s_b(u"ad"):
  1462. return False
  1463. v_1 = self.limit - self.cursor
  1464. try:
  1465. if not self.eq_s_b(u"soy"):
  1466. self.cursor = self.limit - v_1
  1467. raise lab0()
  1468. except lab0: pass
  1469. if self.cursor > self.limit_backward:
  1470. return False
  1471. return True
  1472. def __r_more_than_one_syllable_word(self):
  1473. v_1 = self.cursor
  1474. v_2 = 2
  1475. while True:
  1476. v_3 = self.cursor
  1477. try:
  1478. if not self.go_out_grouping(TurkishStemmer.g_vowel, 97, 305):
  1479. raise lab0()
  1480. self.cursor += 1
  1481. v_2 -= 1
  1482. continue
  1483. except lab0: pass
  1484. self.cursor = v_3
  1485. break
  1486. if v_2 > 0:
  1487. return False
  1488. self.cursor = v_1
  1489. return True
  1490. def __r_postlude(self):
  1491. self.limit_backward = self.cursor
  1492. self.cursor = self.limit
  1493. v_1 = self.limit - self.cursor
  1494. try:
  1495. if not self.__r_is_reserved_word():
  1496. raise lab0()
  1497. return False
  1498. except lab0: pass
  1499. self.cursor = self.limit - v_1
  1500. v_2 = self.limit - self.cursor
  1501. self.__r_append_U_to_stems_ending_with_d_or_g()
  1502. self.cursor = self.limit - v_2
  1503. v_3 = self.limit - self.cursor
  1504. self.__r_post_process_last_consonants()
  1505. self.cursor = self.limit - v_3
  1506. self.cursor = self.limit_backward
  1507. return True
  1508. def _stem(self):
  1509. if not self.__r_more_than_one_syllable_word():
  1510. return False
  1511. self.limit_backward = self.cursor
  1512. self.cursor = self.limit
  1513. v_1 = self.limit - self.cursor
  1514. self.__r_stem_nominal_verb_suffixes()
  1515. self.cursor = self.limit - v_1
  1516. if not self.B_continue_stemming_noun_suffixes:
  1517. return False
  1518. v_2 = self.limit - self.cursor
  1519. self.__r_stem_noun_suffixes()
  1520. self.cursor = self.limit - v_2
  1521. self.cursor = self.limit_backward
  1522. if not self.__r_postlude():
  1523. return False
  1524. return True
  1525. class lab0(BaseException): pass
  1526. class lab1(BaseException): pass
  1527. class lab2(BaseException): pass
  1528. class lab3(BaseException): pass
  1529. class lab4(BaseException): pass
  1530. class lab5(BaseException): pass
  1531. class lab6(BaseException): pass
  1532. class lab7(BaseException): pass
  1533. class lab8(BaseException): pass
  1534. class lab9(BaseException): pass
  1535. class lab10(BaseException): pass
  1536. class lab11(BaseException): pass
  1537. class lab12(BaseException): pass
  1538. class lab13(BaseException): pass
  1539. class lab14(BaseException): pass
  1540. class lab15(BaseException): pass
  1541. class lab16(BaseException): pass
  1542. class lab17(BaseException): pass
  1543. class lab18(BaseException): pass
  1544. class lab19(BaseException): pass
  1545. class lab20(BaseException): pass
  1546. class lab21(BaseException): pass
  1547. class lab22(BaseException): pass
  1548. class lab23(BaseException): pass
  1549. class lab24(BaseException): pass
  1550. class lab25(BaseException): pass
  1551. class lab26(BaseException): pass
  1552. class lab27(BaseException): pass
  1553. class lab28(BaseException): pass
  1554. class lab29(BaseException): pass
  1555. class lab30(BaseException): pass
  1556. class lab31(BaseException): pass
  1557. class lab32(BaseException): pass
  1558. class lab33(BaseException): pass
  1559. class lab34(BaseException): pass
  1560. class lab35(BaseException): pass
  1561. class lab36(BaseException): pass
  1562. class lab37(BaseException): pass
  1563. class lab38(BaseException): pass
  1564. class lab39(BaseException): pass
  1565. class lab40(BaseException): pass
  1566. class lab41(BaseException): pass
  1567. class lab42(BaseException): pass
  1568. class lab43(BaseException): pass
  1569. class lab44(BaseException): pass
  1570. class lab45(BaseException): pass
  1571. class lab46(BaseException): pass
  1572. class lab47(BaseException): pass
  1573. class lab48(BaseException): pass
  1574. class lab49(BaseException): pass
  1575. class lab50(BaseException): pass
  1576. class lab51(BaseException): pass
  1577. class lab52(BaseException): pass
  1578. class lab53(BaseException): pass