catalan_stemmer.py 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784
  1. # Generated by Snowball 2.2.0 - https://snowballstem.org/
  2. from .basestemmer import BaseStemmer
  3. from .among import Among
  4. class CatalanStemmer(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"", -1, 7),
  11. Among(u"\u00B7", 0, 6),
  12. Among(u"\u00E0", 0, 1),
  13. Among(u"\u00E1", 0, 1),
  14. Among(u"\u00E8", 0, 2),
  15. Among(u"\u00E9", 0, 2),
  16. Among(u"\u00EC", 0, 3),
  17. Among(u"\u00ED", 0, 3),
  18. Among(u"\u00EF", 0, 3),
  19. Among(u"\u00F2", 0, 4),
  20. Among(u"\u00F3", 0, 4),
  21. Among(u"\u00FA", 0, 5),
  22. Among(u"\u00FC", 0, 5)
  23. ]
  24. a_1 = [
  25. Among(u"la", -1, 1),
  26. Among(u"-la", 0, 1),
  27. Among(u"sela", 0, 1),
  28. Among(u"le", -1, 1),
  29. Among(u"me", -1, 1),
  30. Among(u"-me", 4, 1),
  31. Among(u"se", -1, 1),
  32. Among(u"-te", -1, 1),
  33. Among(u"hi", -1, 1),
  34. Among(u"'hi", 8, 1),
  35. Among(u"li", -1, 1),
  36. Among(u"-li", 10, 1),
  37. Among(u"'l", -1, 1),
  38. Among(u"'m", -1, 1),
  39. Among(u"-m", -1, 1),
  40. Among(u"'n", -1, 1),
  41. Among(u"-n", -1, 1),
  42. Among(u"ho", -1, 1),
  43. Among(u"'ho", 17, 1),
  44. Among(u"lo", -1, 1),
  45. Among(u"selo", 19, 1),
  46. Among(u"'s", -1, 1),
  47. Among(u"las", -1, 1),
  48. Among(u"selas", 22, 1),
  49. Among(u"les", -1, 1),
  50. Among(u"-les", 24, 1),
  51. Among(u"'ls", -1, 1),
  52. Among(u"-ls", -1, 1),
  53. Among(u"'ns", -1, 1),
  54. Among(u"-ns", -1, 1),
  55. Among(u"ens", -1, 1),
  56. Among(u"los", -1, 1),
  57. Among(u"selos", 31, 1),
  58. Among(u"nos", -1, 1),
  59. Among(u"-nos", 33, 1),
  60. Among(u"vos", -1, 1),
  61. Among(u"us", -1, 1),
  62. Among(u"-us", 36, 1),
  63. Among(u"'t", -1, 1)
  64. ]
  65. a_2 = [
  66. Among(u"ica", -1, 4),
  67. Among(u"l\u00F3gica", 0, 3),
  68. Among(u"enca", -1, 1),
  69. Among(u"ada", -1, 2),
  70. Among(u"ancia", -1, 1),
  71. Among(u"encia", -1, 1),
  72. Among(u"\u00E8ncia", -1, 1),
  73. Among(u"\u00EDcia", -1, 1),
  74. Among(u"logia", -1, 3),
  75. Among(u"inia", -1, 1),
  76. Among(u"\u00EDinia", 9, 1),
  77. Among(u"eria", -1, 1),
  78. Among(u"\u00E0ria", -1, 1),
  79. Among(u"at\u00F2ria", -1, 1),
  80. Among(u"alla", -1, 1),
  81. Among(u"ella", -1, 1),
  82. Among(u"\u00EDvola", -1, 1),
  83. Among(u"ima", -1, 1),
  84. Among(u"\u00EDssima", 17, 1),
  85. Among(u"qu\u00EDssima", 18, 5),
  86. Among(u"ana", -1, 1),
  87. Among(u"ina", -1, 1),
  88. Among(u"era", -1, 1),
  89. Among(u"sfera", 22, 1),
  90. Among(u"ora", -1, 1),
  91. Among(u"dora", 24, 1),
  92. Among(u"adora", 25, 1),
  93. Among(u"adura", -1, 1),
  94. Among(u"esa", -1, 1),
  95. Among(u"osa", -1, 1),
  96. Among(u"assa", -1, 1),
  97. Among(u"essa", -1, 1),
  98. Among(u"issa", -1, 1),
  99. Among(u"eta", -1, 1),
  100. Among(u"ita", -1, 1),
  101. Among(u"ota", -1, 1),
  102. Among(u"ista", -1, 1),
  103. Among(u"ialista", 36, 1),
  104. Among(u"ionista", 36, 1),
  105. Among(u"iva", -1, 1),
  106. Among(u"ativa", 39, 1),
  107. Among(u"n\u00E7a", -1, 1),
  108. Among(u"log\u00EDa", -1, 3),
  109. Among(u"ic", -1, 4),
  110. Among(u"\u00EDstic", 43, 1),
  111. Among(u"enc", -1, 1),
  112. Among(u"esc", -1, 1),
  113. Among(u"ud", -1, 1),
  114. Among(u"atge", -1, 1),
  115. Among(u"ble", -1, 1),
  116. Among(u"able", 49, 1),
  117. Among(u"ible", 49, 1),
  118. Among(u"isme", -1, 1),
  119. Among(u"ialisme", 52, 1),
  120. Among(u"ionisme", 52, 1),
  121. Among(u"ivisme", 52, 1),
  122. Among(u"aire", -1, 1),
  123. Among(u"icte", -1, 1),
  124. Among(u"iste", -1, 1),
  125. Among(u"ici", -1, 1),
  126. Among(u"\u00EDci", -1, 1),
  127. Among(u"logi", -1, 3),
  128. Among(u"ari", -1, 1),
  129. Among(u"tori", -1, 1),
  130. Among(u"al", -1, 1),
  131. Among(u"il", -1, 1),
  132. Among(u"all", -1, 1),
  133. Among(u"ell", -1, 1),
  134. Among(u"\u00EDvol", -1, 1),
  135. Among(u"isam", -1, 1),
  136. Among(u"issem", -1, 1),
  137. Among(u"\u00ECssem", -1, 1),
  138. Among(u"\u00EDssem", -1, 1),
  139. Among(u"\u00EDssim", -1, 1),
  140. Among(u"qu\u00EDssim", 73, 5),
  141. Among(u"amen", -1, 1),
  142. Among(u"\u00ECssin", -1, 1),
  143. Among(u"ar", -1, 1),
  144. Among(u"ificar", 77, 1),
  145. Among(u"egar", 77, 1),
  146. Among(u"ejar", 77, 1),
  147. Among(u"itar", 77, 1),
  148. Among(u"itzar", 77, 1),
  149. Among(u"fer", -1, 1),
  150. Among(u"or", -1, 1),
  151. Among(u"dor", 84, 1),
  152. Among(u"dur", -1, 1),
  153. Among(u"doras", -1, 1),
  154. Among(u"ics", -1, 4),
  155. Among(u"l\u00F3gics", 88, 3),
  156. Among(u"uds", -1, 1),
  157. Among(u"nces", -1, 1),
  158. Among(u"ades", -1, 2),
  159. Among(u"ancies", -1, 1),
  160. Among(u"encies", -1, 1),
  161. Among(u"\u00E8ncies", -1, 1),
  162. Among(u"\u00EDcies", -1, 1),
  163. Among(u"logies", -1, 3),
  164. Among(u"inies", -1, 1),
  165. Among(u"\u00EDnies", -1, 1),
  166. Among(u"eries", -1, 1),
  167. Among(u"\u00E0ries", -1, 1),
  168. Among(u"at\u00F2ries", -1, 1),
  169. Among(u"bles", -1, 1),
  170. Among(u"ables", 103, 1),
  171. Among(u"ibles", 103, 1),
  172. Among(u"imes", -1, 1),
  173. Among(u"\u00EDssimes", 106, 1),
  174. Among(u"qu\u00EDssimes", 107, 5),
  175. Among(u"formes", -1, 1),
  176. Among(u"ismes", -1, 1),
  177. Among(u"ialismes", 110, 1),
  178. Among(u"ines", -1, 1),
  179. Among(u"eres", -1, 1),
  180. Among(u"ores", -1, 1),
  181. Among(u"dores", 114, 1),
  182. Among(u"idores", 115, 1),
  183. Among(u"dures", -1, 1),
  184. Among(u"eses", -1, 1),
  185. Among(u"oses", -1, 1),
  186. Among(u"asses", -1, 1),
  187. Among(u"ictes", -1, 1),
  188. Among(u"ites", -1, 1),
  189. Among(u"otes", -1, 1),
  190. Among(u"istes", -1, 1),
  191. Among(u"ialistes", 124, 1),
  192. Among(u"ionistes", 124, 1),
  193. Among(u"iques", -1, 4),
  194. Among(u"l\u00F3giques", 127, 3),
  195. Among(u"ives", -1, 1),
  196. Among(u"atives", 129, 1),
  197. Among(u"log\u00EDes", -1, 3),
  198. Among(u"alleng\u00FCes", -1, 1),
  199. Among(u"icis", -1, 1),
  200. Among(u"\u00EDcis", -1, 1),
  201. Among(u"logis", -1, 3),
  202. Among(u"aris", -1, 1),
  203. Among(u"toris", -1, 1),
  204. Among(u"ls", -1, 1),
  205. Among(u"als", 138, 1),
  206. Among(u"ells", 138, 1),
  207. Among(u"ims", -1, 1),
  208. Among(u"\u00EDssims", 141, 1),
  209. Among(u"qu\u00EDssims", 142, 5),
  210. Among(u"ions", -1, 1),
  211. Among(u"cions", 144, 1),
  212. Among(u"acions", 145, 2),
  213. Among(u"esos", -1, 1),
  214. Among(u"osos", -1, 1),
  215. Among(u"assos", -1, 1),
  216. Among(u"issos", -1, 1),
  217. Among(u"ers", -1, 1),
  218. Among(u"ors", -1, 1),
  219. Among(u"dors", 152, 1),
  220. Among(u"adors", 153, 1),
  221. Among(u"idors", 153, 1),
  222. Among(u"ats", -1, 1),
  223. Among(u"itats", 156, 1),
  224. Among(u"bilitats", 157, 1),
  225. Among(u"ivitats", 157, 1),
  226. Among(u"ativitats", 159, 1),
  227. Among(u"\u00EFtats", 156, 1),
  228. Among(u"ets", -1, 1),
  229. Among(u"ants", -1, 1),
  230. Among(u"ents", -1, 1),
  231. Among(u"ments", 164, 1),
  232. Among(u"aments", 165, 1),
  233. Among(u"ots", -1, 1),
  234. Among(u"uts", -1, 1),
  235. Among(u"ius", -1, 1),
  236. Among(u"trius", 169, 1),
  237. Among(u"atius", 169, 1),
  238. Among(u"\u00E8s", -1, 1),
  239. Among(u"\u00E9s", -1, 1),
  240. Among(u"\u00EDs", -1, 1),
  241. Among(u"d\u00EDs", 174, 1),
  242. Among(u"\u00F3s", -1, 1),
  243. Among(u"itat", -1, 1),
  244. Among(u"bilitat", 177, 1),
  245. Among(u"ivitat", 177, 1),
  246. Among(u"ativitat", 179, 1),
  247. Among(u"\u00EFtat", -1, 1),
  248. Among(u"et", -1, 1),
  249. Among(u"ant", -1, 1),
  250. Among(u"ent", -1, 1),
  251. Among(u"ient", 184, 1),
  252. Among(u"ment", 184, 1),
  253. Among(u"ament", 186, 1),
  254. Among(u"isament", 187, 1),
  255. Among(u"ot", -1, 1),
  256. Among(u"isseu", -1, 1),
  257. Among(u"\u00ECsseu", -1, 1),
  258. Among(u"\u00EDsseu", -1, 1),
  259. Among(u"triu", -1, 1),
  260. Among(u"\u00EDssiu", -1, 1),
  261. Among(u"atiu", -1, 1),
  262. Among(u"\u00F3", -1, 1),
  263. Among(u"i\u00F3", 196, 1),
  264. Among(u"ci\u00F3", 197, 1),
  265. Among(u"aci\u00F3", 198, 1)
  266. ]
  267. a_3 = [
  268. Among(u"aba", -1, 1),
  269. Among(u"esca", -1, 1),
  270. Among(u"isca", -1, 1),
  271. Among(u"\u00EFsca", -1, 1),
  272. Among(u"ada", -1, 1),
  273. Among(u"ida", -1, 1),
  274. Among(u"uda", -1, 1),
  275. Among(u"\u00EFda", -1, 1),
  276. Among(u"ia", -1, 1),
  277. Among(u"aria", 8, 1),
  278. Among(u"iria", 8, 1),
  279. Among(u"ara", -1, 1),
  280. Among(u"iera", -1, 1),
  281. Among(u"ira", -1, 1),
  282. Among(u"adora", -1, 1),
  283. Among(u"\u00EFra", -1, 1),
  284. Among(u"ava", -1, 1),
  285. Among(u"ixa", -1, 1),
  286. Among(u"itza", -1, 1),
  287. Among(u"\u00EDa", -1, 1),
  288. Among(u"ar\u00EDa", 19, 1),
  289. Among(u"er\u00EDa", 19, 1),
  290. Among(u"ir\u00EDa", 19, 1),
  291. Among(u"\u00EFa", -1, 1),
  292. Among(u"isc", -1, 1),
  293. Among(u"\u00EFsc", -1, 1),
  294. Among(u"ad", -1, 1),
  295. Among(u"ed", -1, 1),
  296. Among(u"id", -1, 1),
  297. Among(u"ie", -1, 1),
  298. Among(u"re", -1, 1),
  299. Among(u"dre", 30, 1),
  300. Among(u"ase", -1, 1),
  301. Among(u"iese", -1, 1),
  302. Among(u"aste", -1, 1),
  303. Among(u"iste", -1, 1),
  304. Among(u"ii", -1, 1),
  305. Among(u"ini", -1, 1),
  306. Among(u"esqui", -1, 1),
  307. Among(u"eixi", -1, 1),
  308. Among(u"itzi", -1, 1),
  309. Among(u"am", -1, 1),
  310. Among(u"em", -1, 1),
  311. Among(u"arem", 42, 1),
  312. Among(u"irem", 42, 1),
  313. Among(u"\u00E0rem", 42, 1),
  314. Among(u"\u00EDrem", 42, 1),
  315. Among(u"\u00E0ssem", 42, 1),
  316. Among(u"\u00E9ssem", 42, 1),
  317. Among(u"iguem", 42, 1),
  318. Among(u"\u00EFguem", 42, 1),
  319. Among(u"avem", 42, 1),
  320. Among(u"\u00E0vem", 42, 1),
  321. Among(u"\u00E1vem", 42, 1),
  322. Among(u"ir\u00ECem", 42, 1),
  323. Among(u"\u00EDem", 42, 1),
  324. Among(u"ar\u00EDem", 55, 1),
  325. Among(u"ir\u00EDem", 55, 1),
  326. Among(u"assim", -1, 1),
  327. Among(u"essim", -1, 1),
  328. Among(u"issim", -1, 1),
  329. Among(u"\u00E0ssim", -1, 1),
  330. Among(u"\u00E8ssim", -1, 1),
  331. Among(u"\u00E9ssim", -1, 1),
  332. Among(u"\u00EDssim", -1, 1),
  333. Among(u"\u00EFm", -1, 1),
  334. Among(u"an", -1, 1),
  335. Among(u"aban", 66, 1),
  336. Among(u"arian", 66, 1),
  337. Among(u"aran", 66, 1),
  338. Among(u"ieran", 66, 1),
  339. Among(u"iran", 66, 1),
  340. Among(u"\u00EDan", 66, 1),
  341. Among(u"ar\u00EDan", 72, 1),
  342. Among(u"er\u00EDan", 72, 1),
  343. Among(u"ir\u00EDan", 72, 1),
  344. Among(u"en", -1, 1),
  345. Among(u"ien", 76, 1),
  346. Among(u"arien", 77, 1),
  347. Among(u"irien", 77, 1),
  348. Among(u"aren", 76, 1),
  349. Among(u"eren", 76, 1),
  350. Among(u"iren", 76, 1),
  351. Among(u"\u00E0ren", 76, 1),
  352. Among(u"\u00EFren", 76, 1),
  353. Among(u"asen", 76, 1),
  354. Among(u"iesen", 76, 1),
  355. Among(u"assen", 76, 1),
  356. Among(u"essen", 76, 1),
  357. Among(u"issen", 76, 1),
  358. Among(u"\u00E9ssen", 76, 1),
  359. Among(u"\u00EFssen", 76, 1),
  360. Among(u"esquen", 76, 1),
  361. Among(u"isquen", 76, 1),
  362. Among(u"\u00EFsquen", 76, 1),
  363. Among(u"aven", 76, 1),
  364. Among(u"ixen", 76, 1),
  365. Among(u"eixen", 96, 1),
  366. Among(u"\u00EFxen", 76, 1),
  367. Among(u"\u00EFen", 76, 1),
  368. Among(u"in", -1, 1),
  369. Among(u"inin", 100, 1),
  370. Among(u"sin", 100, 1),
  371. Among(u"isin", 102, 1),
  372. Among(u"assin", 102, 1),
  373. Among(u"essin", 102, 1),
  374. Among(u"issin", 102, 1),
  375. Among(u"\u00EFssin", 102, 1),
  376. Among(u"esquin", 100, 1),
  377. Among(u"eixin", 100, 1),
  378. Among(u"aron", -1, 1),
  379. Among(u"ieron", -1, 1),
  380. Among(u"ar\u00E1n", -1, 1),
  381. Among(u"er\u00E1n", -1, 1),
  382. Among(u"ir\u00E1n", -1, 1),
  383. Among(u"i\u00EFn", -1, 1),
  384. Among(u"ado", -1, 1),
  385. Among(u"ido", -1, 1),
  386. Among(u"ando", -1, 2),
  387. Among(u"iendo", -1, 1),
  388. Among(u"io", -1, 1),
  389. Among(u"ixo", -1, 1),
  390. Among(u"eixo", 121, 1),
  391. Among(u"\u00EFxo", -1, 1),
  392. Among(u"itzo", -1, 1),
  393. Among(u"ar", -1, 1),
  394. Among(u"tzar", 125, 1),
  395. Among(u"er", -1, 1),
  396. Among(u"eixer", 127, 1),
  397. Among(u"ir", -1, 1),
  398. Among(u"ador", -1, 1),
  399. Among(u"as", -1, 1),
  400. Among(u"abas", 131, 1),
  401. Among(u"adas", 131, 1),
  402. Among(u"idas", 131, 1),
  403. Among(u"aras", 131, 1),
  404. Among(u"ieras", 131, 1),
  405. Among(u"\u00EDas", 131, 1),
  406. Among(u"ar\u00EDas", 137, 1),
  407. Among(u"er\u00EDas", 137, 1),
  408. Among(u"ir\u00EDas", 137, 1),
  409. Among(u"ids", -1, 1),
  410. Among(u"es", -1, 1),
  411. Among(u"ades", 142, 1),
  412. Among(u"ides", 142, 1),
  413. Among(u"udes", 142, 1),
  414. Among(u"\u00EFdes", 142, 1),
  415. Among(u"atges", 142, 1),
  416. Among(u"ies", 142, 1),
  417. Among(u"aries", 148, 1),
  418. Among(u"iries", 148, 1),
  419. Among(u"ares", 142, 1),
  420. Among(u"ires", 142, 1),
  421. Among(u"adores", 142, 1),
  422. Among(u"\u00EFres", 142, 1),
  423. Among(u"ases", 142, 1),
  424. Among(u"ieses", 142, 1),
  425. Among(u"asses", 142, 1),
  426. Among(u"esses", 142, 1),
  427. Among(u"isses", 142, 1),
  428. Among(u"\u00EFsses", 142, 1),
  429. Among(u"ques", 142, 1),
  430. Among(u"esques", 161, 1),
  431. Among(u"\u00EFsques", 161, 1),
  432. Among(u"aves", 142, 1),
  433. Among(u"ixes", 142, 1),
  434. Among(u"eixes", 165, 1),
  435. Among(u"\u00EFxes", 142, 1),
  436. Among(u"\u00EFes", 142, 1),
  437. Among(u"abais", -1, 1),
  438. Among(u"arais", -1, 1),
  439. Among(u"ierais", -1, 1),
  440. Among(u"\u00EDais", -1, 1),
  441. Among(u"ar\u00EDais", 172, 1),
  442. Among(u"er\u00EDais", 172, 1),
  443. Among(u"ir\u00EDais", 172, 1),
  444. Among(u"aseis", -1, 1),
  445. Among(u"ieseis", -1, 1),
  446. Among(u"asteis", -1, 1),
  447. Among(u"isteis", -1, 1),
  448. Among(u"inis", -1, 1),
  449. Among(u"sis", -1, 1),
  450. Among(u"isis", 181, 1),
  451. Among(u"assis", 181, 1),
  452. Among(u"essis", 181, 1),
  453. Among(u"issis", 181, 1),
  454. Among(u"\u00EFssis", 181, 1),
  455. Among(u"esquis", -1, 1),
  456. Among(u"eixis", -1, 1),
  457. Among(u"itzis", -1, 1),
  458. Among(u"\u00E1is", -1, 1),
  459. Among(u"ar\u00E9is", -1, 1),
  460. Among(u"er\u00E9is", -1, 1),
  461. Among(u"ir\u00E9is", -1, 1),
  462. Among(u"ams", -1, 1),
  463. Among(u"ados", -1, 1),
  464. Among(u"idos", -1, 1),
  465. Among(u"amos", -1, 1),
  466. Among(u"\u00E1bamos", 197, 1),
  467. Among(u"\u00E1ramos", 197, 1),
  468. Among(u"i\u00E9ramos", 197, 1),
  469. Among(u"\u00EDamos", 197, 1),
  470. Among(u"ar\u00EDamos", 201, 1),
  471. Among(u"er\u00EDamos", 201, 1),
  472. Among(u"ir\u00EDamos", 201, 1),
  473. Among(u"aremos", -1, 1),
  474. Among(u"eremos", -1, 1),
  475. Among(u"iremos", -1, 1),
  476. Among(u"\u00E1semos", -1, 1),
  477. Among(u"i\u00E9semos", -1, 1),
  478. Among(u"imos", -1, 1),
  479. Among(u"adors", -1, 1),
  480. Among(u"ass", -1, 1),
  481. Among(u"erass", 212, 1),
  482. Among(u"ess", -1, 1),
  483. Among(u"ats", -1, 1),
  484. Among(u"its", -1, 1),
  485. Among(u"ents", -1, 1),
  486. Among(u"\u00E0s", -1, 1),
  487. Among(u"ar\u00E0s", 218, 1),
  488. Among(u"ir\u00E0s", 218, 1),
  489. Among(u"ar\u00E1s", -1, 1),
  490. Among(u"er\u00E1s", -1, 1),
  491. Among(u"ir\u00E1s", -1, 1),
  492. Among(u"\u00E9s", -1, 1),
  493. Among(u"ar\u00E9s", 224, 1),
  494. Among(u"\u00EDs", -1, 1),
  495. Among(u"i\u00EFs", -1, 1),
  496. Among(u"at", -1, 1),
  497. Among(u"it", -1, 1),
  498. Among(u"ant", -1, 1),
  499. Among(u"ent", -1, 1),
  500. Among(u"int", -1, 1),
  501. Among(u"ut", -1, 1),
  502. Among(u"\u00EFt", -1, 1),
  503. Among(u"au", -1, 1),
  504. Among(u"erau", 235, 1),
  505. Among(u"ieu", -1, 1),
  506. Among(u"ineu", -1, 1),
  507. Among(u"areu", -1, 1),
  508. Among(u"ireu", -1, 1),
  509. Among(u"\u00E0reu", -1, 1),
  510. Among(u"\u00EDreu", -1, 1),
  511. Among(u"asseu", -1, 1),
  512. Among(u"esseu", -1, 1),
  513. Among(u"eresseu", 244, 1),
  514. Among(u"\u00E0sseu", -1, 1),
  515. Among(u"\u00E9sseu", -1, 1),
  516. Among(u"igueu", -1, 1),
  517. Among(u"\u00EFgueu", -1, 1),
  518. Among(u"\u00E0veu", -1, 1),
  519. Among(u"\u00E1veu", -1, 1),
  520. Among(u"itzeu", -1, 1),
  521. Among(u"\u00ECeu", -1, 1),
  522. Among(u"ir\u00ECeu", 253, 1),
  523. Among(u"\u00EDeu", -1, 1),
  524. Among(u"ar\u00EDeu", 255, 1),
  525. Among(u"ir\u00EDeu", 255, 1),
  526. Among(u"assiu", -1, 1),
  527. Among(u"issiu", -1, 1),
  528. Among(u"\u00E0ssiu", -1, 1),
  529. Among(u"\u00E8ssiu", -1, 1),
  530. Among(u"\u00E9ssiu", -1, 1),
  531. Among(u"\u00EDssiu", -1, 1),
  532. Among(u"\u00EFu", -1, 1),
  533. Among(u"ix", -1, 1),
  534. Among(u"eix", 265, 1),
  535. Among(u"\u00EFx", -1, 1),
  536. Among(u"itz", -1, 1),
  537. Among(u"i\u00E0", -1, 1),
  538. Among(u"ar\u00E0", -1, 1),
  539. Among(u"ir\u00E0", -1, 1),
  540. Among(u"itz\u00E0", -1, 1),
  541. Among(u"ar\u00E1", -1, 1),
  542. Among(u"er\u00E1", -1, 1),
  543. Among(u"ir\u00E1", -1, 1),
  544. Among(u"ir\u00E8", -1, 1),
  545. Among(u"ar\u00E9", -1, 1),
  546. Among(u"er\u00E9", -1, 1),
  547. Among(u"ir\u00E9", -1, 1),
  548. Among(u"\u00ED", -1, 1),
  549. Among(u"i\u00EF", -1, 1),
  550. Among(u"i\u00F3", -1, 1)
  551. ]
  552. a_4 = [
  553. Among(u"a", -1, 1),
  554. Among(u"e", -1, 1),
  555. Among(u"i", -1, 1),
  556. Among(u"\u00EFn", -1, 1),
  557. Among(u"o", -1, 1),
  558. Among(u"ir", -1, 1),
  559. Among(u"s", -1, 1),
  560. Among(u"is", 6, 1),
  561. Among(u"os", 6, 1),
  562. Among(u"\u00EFs", 6, 1),
  563. Among(u"it", -1, 1),
  564. Among(u"eu", -1, 1),
  565. Among(u"iu", -1, 1),
  566. Among(u"iqu", -1, 2),
  567. Among(u"itz", -1, 1),
  568. Among(u"\u00E0", -1, 1),
  569. Among(u"\u00E1", -1, 1),
  570. Among(u"\u00E9", -1, 1),
  571. Among(u"\u00EC", -1, 1),
  572. Among(u"\u00ED", -1, 1),
  573. Among(u"\u00EF", -1, 1),
  574. Among(u"\u00F3", -1, 1)
  575. ]
  576. g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 129, 81, 6, 10]
  577. I_p2 = 0
  578. I_p1 = 0
  579. def __r_mark_regions(self):
  580. self.I_p1 = self.limit
  581. self.I_p2 = self.limit
  582. v_1 = self.cursor
  583. try:
  584. if not self.go_out_grouping(CatalanStemmer.g_v, 97, 252):
  585. raise lab0()
  586. self.cursor += 1
  587. if not self.go_in_grouping(CatalanStemmer.g_v, 97, 252):
  588. raise lab0()
  589. self.cursor += 1
  590. self.I_p1 = self.cursor
  591. if not self.go_out_grouping(CatalanStemmer.g_v, 97, 252):
  592. raise lab0()
  593. self.cursor += 1
  594. if not self.go_in_grouping(CatalanStemmer.g_v, 97, 252):
  595. raise lab0()
  596. self.cursor += 1
  597. self.I_p2 = self.cursor
  598. except lab0: pass
  599. self.cursor = v_1
  600. return True
  601. def __r_cleaning(self):
  602. while True:
  603. v_1 = self.cursor
  604. try:
  605. self.bra = self.cursor
  606. among_var = self.find_among(CatalanStemmer.a_0)
  607. if among_var == 0:
  608. raise lab0()
  609. self.ket = self.cursor
  610. if among_var == 1:
  611. if not self.slice_from(u"a"):
  612. return False
  613. elif among_var == 2:
  614. if not self.slice_from(u"e"):
  615. return False
  616. elif among_var == 3:
  617. if not self.slice_from(u"i"):
  618. return False
  619. elif among_var == 4:
  620. if not self.slice_from(u"o"):
  621. return False
  622. elif among_var == 5:
  623. if not self.slice_from(u"u"):
  624. return False
  625. elif among_var == 6:
  626. if not self.slice_from(u"."):
  627. return False
  628. else:
  629. if self.cursor >= self.limit:
  630. raise lab0()
  631. self.cursor += 1
  632. continue
  633. except lab0: pass
  634. self.cursor = v_1
  635. break
  636. return True
  637. def __r_R1(self):
  638. if not self.I_p1 <= self.cursor:
  639. return False
  640. return True
  641. def __r_R2(self):
  642. if not self.I_p2 <= self.cursor:
  643. return False
  644. return True
  645. def __r_attached_pronoun(self):
  646. self.ket = self.cursor
  647. if self.find_among_b(CatalanStemmer.a_1) == 0:
  648. return False
  649. self.bra = self.cursor
  650. if not self.__r_R1():
  651. return False
  652. if not self.slice_del():
  653. return False
  654. return True
  655. def __r_standard_suffix(self):
  656. self.ket = self.cursor
  657. among_var = self.find_among_b(CatalanStemmer.a_2)
  658. if among_var == 0:
  659. return False
  660. self.bra = self.cursor
  661. if among_var == 1:
  662. if not self.__r_R1():
  663. return False
  664. if not self.slice_del():
  665. return False
  666. elif among_var == 2:
  667. if not self.__r_R2():
  668. return False
  669. if not self.slice_del():
  670. return False
  671. elif among_var == 3:
  672. if not self.__r_R2():
  673. return False
  674. if not self.slice_from(u"log"):
  675. return False
  676. elif among_var == 4:
  677. if not self.__r_R2():
  678. return False
  679. if not self.slice_from(u"ic"):
  680. return False
  681. else:
  682. if not self.__r_R1():
  683. return False
  684. if not self.slice_from(u"c"):
  685. return False
  686. return True
  687. def __r_verb_suffix(self):
  688. self.ket = self.cursor
  689. among_var = self.find_among_b(CatalanStemmer.a_3)
  690. if among_var == 0:
  691. return False
  692. self.bra = self.cursor
  693. if among_var == 1:
  694. if not self.__r_R1():
  695. return False
  696. if not self.slice_del():
  697. return False
  698. else:
  699. if not self.__r_R2():
  700. return False
  701. if not self.slice_del():
  702. return False
  703. return True
  704. def __r_residual_suffix(self):
  705. self.ket = self.cursor
  706. among_var = self.find_among_b(CatalanStemmer.a_4)
  707. if among_var == 0:
  708. return False
  709. self.bra = self.cursor
  710. if among_var == 1:
  711. if not self.__r_R1():
  712. return False
  713. if not self.slice_del():
  714. return False
  715. else:
  716. if not self.__r_R1():
  717. return False
  718. if not self.slice_from(u"ic"):
  719. return False
  720. return True
  721. def _stem(self):
  722. self.__r_mark_regions()
  723. self.limit_backward = self.cursor
  724. self.cursor = self.limit
  725. v_2 = self.limit - self.cursor
  726. self.__r_attached_pronoun()
  727. self.cursor = self.limit - v_2
  728. v_3 = self.limit - self.cursor
  729. try:
  730. try:
  731. v_4 = self.limit - self.cursor
  732. try:
  733. if not self.__r_standard_suffix():
  734. raise lab2()
  735. raise lab1()
  736. except lab2: pass
  737. self.cursor = self.limit - v_4
  738. if not self.__r_verb_suffix():
  739. raise lab0()
  740. except lab1: pass
  741. except lab0: pass
  742. self.cursor = self.limit - v_3
  743. v_5 = self.limit - self.cursor
  744. self.__r_residual_suffix()
  745. self.cursor = self.limit - v_5
  746. self.cursor = self.limit_backward
  747. v_6 = self.cursor
  748. self.__r_cleaning()
  749. self.cursor = v_6
  750. return True
  751. class lab0(BaseException): pass
  752. class lab1(BaseException): pass
  753. class lab2(BaseException): pass