Coverage for limitys/stop.py: 42.42%
25 statements
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-04 20:06:37 +00:00
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-04 20:06:37 +00:00
1from enum import Enum
2from typing import List
5class Language(str, Enum):
6 """Mix in some usability into the language keying."""
8 DE = 'german'
9 EN = 'english'
10 ES = 'spanish'
11 FR = 'french'
14DE = Language.DE
15EN = Language.EN
16ES = Language.ES
17FR = Language.FR
19WORDS = {
20 DE: (
21 'aber',
22 'alle',
23 'allem',
24 'allen',
25 'aller',
26 'alles',
27 'als',
28 'also',
29 'am',
30 'an',
31 'ander',
32 'andere',
33 'anderem',
34 'anderen',
35 'anderer',
36 'anderes',
37 'anderm',
38 'andern',
39 'anderr',
40 'anders',
41 'auch',
42 'auf',
43 'aus',
44 'bei',
45 'bin',
46 'bis',
47 'bist',
48 'da',
49 'damit',
50 'dann',
51 'der',
52 'den',
53 'des',
54 'dem',
55 'die',
56 'das',
57 'dass',
58 'daß',
59 'derselbe',
60 'derselben',
61 'denselben',
62 'desselben',
63 'demselben',
64 'dieselbe',
65 'dieselben',
66 'dasselbe',
67 'dazu',
68 'dein',
69 'deine',
70 'deinem',
71 'deinen',
72 'deiner',
73 'deines',
74 'denn',
75 'derer',
76 'dessen',
77 'dich',
78 'dir',
79 'du',
80 'dies',
81 'diese',
82 'diesem',
83 'diesen',
84 'dieser',
85 'dieses',
86 'doch',
87 'dort',
88 'durch',
89 'ein',
90 'eine',
91 'einem',
92 'einen',
93 'einer',
94 'eines',
95 'einig',
96 'einige',
97 'einigem',
98 'einigen',
99 'einiger',
100 'einiges',
101 'einmal',
102 'er',
103 'ihn',
104 'ihm',
105 'es',
106 'etwas',
107 'euer',
108 'eure',
109 'eurem',
110 'euren',
111 'eurer',
112 'eures',
113 'für',
114 'gegen',
115 'gewesen',
116 'hab',
117 'habe',
118 'haben',
119 'hat',
120 'hatte',
121 'hatten',
122 'hier',
123 'hin',
124 'hinter',
125 'ich',
126 'mich',
127 'mir',
128 'ihr',
129 'ihre',
130 'ihrem',
131 'ihren',
132 'ihrer',
133 'ihres',
134 'euch',
135 'im',
136 'in',
137 'indem',
138 'ins',
139 'ist',
140 'jede',
141 'jedem',
142 'jeden',
143 'jeder',
144 'jedes',
145 'jene',
146 'jenem',
147 'jenen',
148 'jener',
149 'jenes',
150 'jetzt',
151 'kann',
152 'kein',
153 'keine',
154 'keinem',
155 'keinen',
156 'keiner',
157 'keines',
158 'können',
159 'könnte',
160 'machen',
161 'man',
162 'manche',
163 'manchem',
164 'manchen',
165 'mancher',
166 'manches',
167 'mein',
168 'meine',
169 'meinem',
170 'meinen',
171 'meiner',
172 'meines',
173 'mit',
174 'muss',
175 'musste',
176 'nach',
177 'nicht',
178 'nichts',
179 'noch',
180 'nun',
181 'nur',
182 'ob',
183 'oder',
184 'ohne',
185 'sehr',
186 'sein',
187 'seine',
188 'seinem',
189 'seinen',
190 'seiner',
191 'seines',
192 'selbst',
193 'sich',
194 'sie',
195 'ihnen',
196 'sind',
197 'so',
198 'solche',
199 'solchem',
200 'solchen',
201 'solcher',
202 'solches',
203 'soll',
204 'sollte',
205 'sondern',
206 'sonst',
207 'über',
208 'um',
209 'und',
210 'uns',
211 'unsere',
212 'unserem',
213 'unseren',
214 'unser',
215 'unseres',
216 'unter',
217 'viel',
218 'vom',
219 'von',
220 'vor',
221 'während',
222 'war',
223 'waren',
224 'warst',
225 'was',
226 'weg',
227 'weil',
228 'weiter',
229 'welche',
230 'welchem',
231 'welchen',
232 'welcher',
233 'welches',
234 'wenn',
235 'werde',
236 'werden',
237 'wie',
238 'wieder',
239 'will',
240 'wir',
241 'wird',
242 'wirst',
243 'wo',
244 'wollen',
245 'wollte',
246 'würde',
247 'würden',
248 'zu',
249 'zum',
250 'zur',
251 'zwar',
252 'zwischen',
253 ),
254 EN: (
255 'i',
256 'me',
257 'my',
258 'myself',
259 'we',
260 'our',
261 'ours',
262 'ourselves',
263 'you',
264 "you're",
265 "you've",
266 "you'll",
267 "you'd",
268 'your',
269 'yours',
270 'yourself',
271 'yourselves',
272 'he',
273 'him',
274 'his',
275 'himself',
276 'she',
277 "she's",
278 'her',
279 'hers',
280 'herself',
281 'it',
282 "it's",
283 'its',
284 'itself',
285 'they',
286 'them',
287 'their',
288 'theirs',
289 'themselves',
290 'what',
291 'which',
292 'who',
293 'whom',
294 'this',
295 'that',
296 "that'll",
297 'these',
298 'those',
299 'am',
300 'is',
301 'are',
302 'was',
303 'were',
304 'be',
305 'been',
306 'being',
307 'have',
308 'has',
309 'had',
310 'having',
311 'do',
312 'does',
313 'did',
314 'doing',
315 'a',
316 'an',
317 'the',
318 'and',
319 'but',
320 'if',
321 'or',
322 'because',
323 'as',
324 'until',
325 'while',
326 'of',
327 'at',
328 'by',
329 'for',
330 'with',
331 'about',
332 'against',
333 'between',
334 'into',
335 'through',
336 'during',
337 'before',
338 'after',
339 'above',
340 'below',
341 'to',
342 'from',
343 'up',
344 'down',
345 'in',
346 'out',
347 'on',
348 'off',
349 'over',
350 'under',
351 'again',
352 'further',
353 'then',
354 'once',
355 'here',
356 'there',
357 'when',
358 'where',
359 'why',
360 'how',
361 'all',
362 'any',
363 'both',
364 'each',
365 'few',
366 'more',
367 'most',
368 'other',
369 'some',
370 'such',
371 'no',
372 'nor',
373 'not',
374 'only',
375 'own',
376 'same',
377 'so',
378 'than',
379 'too',
380 'very',
381 's',
382 't',
383 'can',
384 'will',
385 'just',
386 'don',
387 "don't",
388 'should',
389 "should've",
390 'now',
391 'd',
392 'll',
393 'm',
394 'o',
395 're',
396 've',
397 'y',
398 'ain',
399 'aren',
400 "aren't",
401 'couldn',
402 "couldn't",
403 'didn',
404 "didn't",
405 'doesn',
406 "doesn't",
407 'hadn',
408 "hadn't",
409 'hasn',
410 "hasn't",
411 'haven',
412 "haven't",
413 'isn',
414 "isn't",
415 'ma',
416 'mightn',
417 "mightn't",
418 'mustn',
419 "mustn't",
420 'needn',
421 "needn't",
422 'shan',
423 "shan't",
424 'shouldn',
425 "shouldn't",
426 'wasn',
427 "wasn't",
428 'weren',
429 "weren't",
430 'won',
431 "won't",
432 'wouldn',
433 "wouldn't",
434 ),
435 ES: (
436 'de',
437 'la',
438 'que',
439 'el',
440 'en',
441 'y',
442 'a',
443 'los',
444 'del',
445 'se',
446 'las',
447 'por',
448 'un',
449 'para',
450 'con',
451 'no',
452 'una',
453 'su',
454 'al',
455 'lo',
456 'como',
457 'más',
458 'pero',
459 'sus',
460 'le',
461 'ya',
462 'o',
463 'este',
464 'sí',
465 'porque',
466 'esta',
467 'entre',
468 'cuando',
469 'muy',
470 'sin',
471 'sobre',
472 'también',
473 'me',
474 'hasta',
475 'hay',
476 'donde',
477 'quien',
478 'desde',
479 'todo',
480 'nos',
481 'durante',
482 'todos',
483 'uno',
484 'les',
485 'ni',
486 'contra',
487 'otros',
488 'ese',
489 'eso',
490 'ante',
491 'ellos',
492 'e',
493 'esto',
494 'mí',
495 'antes',
496 'algunos',
497 'qué',
498 'unos',
499 'yo',
500 'otro',
501 'otras',
502 'otra',
503 'él',
504 'tanto',
505 'esa',
506 'estos',
507 'mucho',
508 'quienes',
509 'nada',
510 'muchos',
511 'cual',
512 'poco',
513 'ella',
514 'estar',
515 'estas',
516 'algunas',
517 'algo',
518 'nosotros',
519 'mi',
520 'mis',
521 'tú',
522 'te',
523 'ti',
524 'tu',
525 'tus',
526 'ellas',
527 'nosotras',
528 'vosotros',
529 'vosotras',
530 'os',
531 'mío',
532 'mía',
533 'míos',
534 'mías',
535 'tuyo',
536 'tuya',
537 'tuyos',
538 'tuyas',
539 'suyo',
540 'suya',
541 'suyos',
542 'suyas',
543 'nuestro',
544 'nuestra',
545 'nuestros',
546 'nuestras',
547 'vuestro',
548 'vuestra',
549 'vuestros',
550 'vuestras',
551 'esos',
552 'esas',
553 'estoy',
554 'estás',
555 'está',
556 'estamos',
557 'estáis',
558 'están',
559 'esté',
560 'estés',
561 'estemos',
562 'estéis',
563 'estén',
564 'estaré',
565 'estarás',
566 'estará',
567 'estaremos',
568 'estaréis',
569 'estarán',
570 'estaría',
571 'estarías',
572 'estaríamos',
573 'estaríais',
574 'estarían',
575 'estaba',
576 'estabas',
577 'estábamos',
578 'estabais',
579 'estaban',
580 'estuve',
581 'estuviste',
582 'estuvo',
583 'estuvimos',
584 'estuvisteis',
585 'estuvieron',
586 'estuviera',
587 'estuvieras',
588 'estuviéramos',
589 'estuvierais',
590 'estuvieran',
591 'estuviese',
592 'estuvieses',
593 'estuviésemos',
594 'estuvieseis',
595 'estuviesen',
596 'estando',
597 'estado',
598 'estada',
599 'estados',
600 'estadas',
601 'estad',
602 'he',
603 'has',
604 'ha',
605 'hemos',
606 'habéis',
607 'han',
608 'haya',
609 'hayas',
610 'hayamos',
611 'hayáis',
612 'hayan',
613 'habré',
614 'habrás',
615 'habrá',
616 'habremos',
617 'habréis',
618 'habrán',
619 'habría',
620 'habrías',
621 'habríamos',
622 'habríais',
623 'habrían',
624 'había',
625 'habías',
626 'habíamos',
627 'habíais',
628 'habían',
629 'hube',
630 'hubiste',
631 'hubo',
632 'hubimos',
633 'hubisteis',
634 'hubieron',
635 'hubiera',
636 'hubieras',
637 'hubiéramos',
638 'hubierais',
639 'hubieran',
640 'hubiese',
641 'hubieses',
642 'hubiésemos',
643 'hubieseis',
644 'hubiesen',
645 'habiendo',
646 'habido',
647 'habida',
648 'habidos',
649 'habidas',
650 'soy',
651 'eres',
652 'es',
653 'somos',
654 'sois',
655 'son',
656 'sea',
657 'seas',
658 'seamos',
659 'seáis',
660 'sean',
661 'seré',
662 'serás',
663 'será',
664 'seremos',
665 'seréis',
666 'serán',
667 'sería',
668 'serías',
669 'seríamos',
670 'seríais',
671 'serían',
672 'era',
673 'eras',
674 'éramos',
675 'erais',
676 'eran',
677 'fui',
678 'fuiste',
679 'fue',
680 'fuimos',
681 'fuisteis',
682 'fueron',
683 'fuera',
684 'fueras',
685 'fuéramos',
686 'fuerais',
687 'fueran',
688 'fuese',
689 'fueses',
690 'fuésemos',
691 'fueseis',
692 'fuesen',
693 'sintiendo',
694 'sentido',
695 'sentida',
696 'sentidos',
697 'sentidas',
698 'siente',
699 'sentid',
700 'tengo',
701 'tienes',
702 'tiene',
703 'tenemos',
704 'tenéis',
705 'tienen',
706 'tenga',
707 'tengas',
708 'tengamos',
709 'tengáis',
710 'tengan',
711 'tendré',
712 'tendrás',
713 'tendrá',
714 'tendremos',
715 'tendréis',
716 'tendrán',
717 'tendría',
718 'tendrías',
719 'tendríamos',
720 'tendríais',
721 'tendrían',
722 'tenía',
723 'tenías',
724 'teníamos',
725 'teníais',
726 'tenían',
727 'tuve',
728 'tuviste',
729 'tuvo',
730 'tuvimos',
731 'tuvisteis',
732 'tuvieron',
733 'tuviera',
734 'tuvieras',
735 'tuviéramos',
736 'tuvierais',
737 'tuvieran',
738 'tuviese',
739 'tuvieses',
740 'tuviésemos',
741 'tuvieseis',
742 'tuviesen',
743 'teniendo',
744 'tenido',
745 'tenida',
746 'tenidos',
747 'tenidas',
748 'tened',
749 ),
750 FR: (
751 'au',
752 'aux',
753 'avec',
754 'ce',
755 'ces',
756 'dans',
757 'de',
758 'des',
759 'du',
760 'elle',
761 'en',
762 'et',
763 'eux',
764 'il',
765 'ils',
766 'je',
767 'la',
768 'le',
769 'les',
770 'leur',
771 'lui',
772 'ma',
773 'mais',
774 'me',
775 'même',
776 'mes',
777 'moi',
778 'mon',
779 'ne',
780 'nos',
781 'notre',
782 'nous',
783 'on',
784 'ou',
785 'par',
786 'pas',
787 'pour',
788 'qu',
789 'que',
790 'qui',
791 'sa',
792 'se',
793 'ses',
794 'son',
795 'sur',
796 'ta',
797 'te',
798 'tes',
799 'toi',
800 'ton',
801 'tu',
802 'un',
803 'une',
804 'vos',
805 'votre',
806 'vous',
807 'c',
808 'd',
809 'j',
810 'l',
811 'à',
812 'm',
813 'n',
814 's',
815 't',
816 'y',
817 'été',
818 'étée',
819 'étées',
820 'étés',
821 'étant',
822 'étante',
823 'étants',
824 'étantes',
825 'suis',
826 'es',
827 'est',
828 'sommes',
829 'êtes',
830 'sont',
831 'serai',
832 'seras',
833 'sera',
834 'serons',
835 'serez',
836 'seront',
837 'serais',
838 'serait',
839 'serions',
840 'seriez',
841 'seraient',
842 'étais',
843 'était',
844 'étions',
845 'étiez',
846 'étaient',
847 'fus',
848 'fut',
849 'fûmes',
850 'fûtes',
851 'furent',
852 'sois',
853 'soit',
854 'soyons',
855 'soyez',
856 'soient',
857 'fusse',
858 'fusses',
859 'fût',
860 'fussions',
861 'fussiez',
862 'fussent',
863 'ayant',
864 'ayante',
865 'ayantes',
866 'ayants',
867 'eu',
868 'eue',
869 'eues',
870 'eus',
871 'ai',
872 'as',
873 'avons',
874 'avez',
875 'ont',
876 'aurai',
877 'auras',
878 'aura',
879 'aurons',
880 'aurez',
881 'auront',
882 'aurais',
883 'aurait',
884 'aurions',
885 'auriez',
886 'auraient',
887 'avais',
888 'avait',
889 'avions',
890 'aviez',
891 'avaient',
892 'eut',
893 'eûmes',
894 'eûtes',
895 'eurent',
896 'aie',
897 'aies',
898 'ait',
899 'ayons',
900 'ayez',
901 'aient',
902 'eusse',
903 'eusses',
904 'eût',
905 'eussions',
906 'eussiez',
907 'eussent',
908 ),
909}
912def cleanse(text: str, language_code: Language = EN) -> List[str]:
913 """Filter the stopwords of the language key out."""
914 return [w for w in text.lower().split() if w not in WORDS[language_code]]
917def language_code_of(language: str) -> Language:
918 """Leniently map language as str to language code for indexing into words."""
919 lenient = language.strip().lower()
920 if lenient == 'german':
921 return DE
922 if lenient == 'english':
923 return EN
924 if lenient == 'spanish':
925 return ES
926 if lenient == 'french':
927 return FR
929 raise ValueError(f'no stop words available for language {language}')