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

1from enum import Enum 

2from typing import List 

3 

4 

5class Language(str, Enum): 

6 """Mix in some usability into the language keying.""" 

7 

8 DE = 'german' 

9 EN = 'english' 

10 ES = 'spanish' 

11 FR = 'french' 

12 

13 

14DE = Language.DE 

15EN = Language.EN 

16ES = Language.ES 

17FR = Language.FR 

18 

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} 

910 

911 

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]] 

915 

916 

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 

928 

929 raise ValueError(f'no stop words available for language {language}')