Skip to content

Commit

Permalink
Add benchmarking code and unit tests for full paragraphs (snguyenthan…
Browse files Browse the repository at this point in the history
…h#26)

* Add benchmarking scripts for memory consumption and speed
  - Dataset consists of lorem ipsum paragraphs with varying percentages of their words replaced with swear words.
* Fix tab formatting in tox.ini
* Add benchmarking code to the linter check
* Add test for words with punctuation at the end
* Add unit tests for whole paragraphs of text
  • Loading branch information
jcbrockschmidt authored Sep 26, 2021
1 parent c371cf6 commit b80ace7
Show file tree
Hide file tree
Showing 26 changed files with 2,487 additions and 1 deletion.
44 changes: 44 additions & 0 deletions benchmarking/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Benchmarking `better_profanity`

This directory provides code for benchmarking the memory usage and speed of `better_profanity`.

## Setup

Follow the **Installation** instructions for `better_profanity` to ensure the version you intend to benchmark is installed.

Install additional dependencies by running

```sh
pip install -r requirements.txt
```

## Usage

### Benchmark memory usage

To test the memory usage of a profanity filter using the default word list run

```sh
python scripts/filter_memory.py
```

To test the memory usage when using a particular word list run

```sh
python scripts/filter_memory.py <WORDLIST>
```

### Benchmark speed

To test the speed of text censoring against a dataset of paragraphs run

```sh
python scripts/paragraphs.py
```

Note that this script uses `pytest` and `pytest-benchmark`. If you run the command via `pytest scripts/paragraphs.py` you will have more control over the benchmarking procedures. Read up on [`pytest-benchmark`'s command-line options](https://pytest-benchmark.readthedocs.io/en/latest/usage.html#commandline-options) for more details.

## Limitations

1. Memory usage reported by `memory.py` may vary slightly between runs. Run `memory.py` several times and compute an average for a more accurate memory benchmark.
2. The dataset used by `paragraphs.py` may not be valid for all versions of `better_profanity`. If some words contained in the default word list are removed, some paragraphs' text may not be censored as expected.
1 change: 1 addition & 0 deletions benchmarking/data/paragraphs/0001paras-000per/censored.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Veniam sed do pariatur irure deserunt. Et fugiat sint reprehenderit eiusmod magna. Deserunt occaecat officia eu quis. Velit laborum enim nulla laborum tempor ad. Amet culpa veniam nisi reprehenderit officia, elit ullamco exercitation do, incididunt qui voluptate quis incididunt. Tempor culpa ea amet ipsum, dolore quis proident pariatur. Laboris reprehenderit ad eiusmod proident irure dolor, fugiat qui aute aute et dolor aliqua. Ullamco fugiat deserunt aliqua consequat sit proident consectetur, qui nulla excepteur sit. Occaecat dolor sed occaecat cupidatat labore quis incididunt. Sit ex aute fugiat cupidatat reprehenderit.
1 change: 1 addition & 0 deletions benchmarking/data/paragraphs/0001paras-000per/original.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Veniam sed do pariatur irure deserunt. Et fugiat sint reprehenderit eiusmod magna. Deserunt occaecat officia eu quis. Velit laborum enim nulla laborum tempor ad. Amet culpa veniam nisi reprehenderit officia, elit ullamco exercitation do, incididunt qui voluptate quis incididunt. Tempor culpa ea amet ipsum, dolore quis proident pariatur. Laboris reprehenderit ad eiusmod proident irure dolor, fugiat qui aute aute et dolor aliqua. Ullamco fugiat deserunt aliqua consequat sit proident consectetur, qui nulla excepteur sit. Occaecat dolor sed occaecat cupidatat labore quis incididunt. Sit ex aute fugiat cupidatat reprehenderit.
1 change: 1 addition & 0 deletions benchmarking/data/paragraphs/0001paras-005per/censored.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
**** do dolore sunt exercitation do cillum, adipiscing mollit sit qui sit. Nulla ea aliquip sed non, exercitation in officia exercitation sed. Velit aliquip eiusmod ut est ad, ullamco ex veniam aliqua exercitation eiusmod excepteur, minim sint aliquip adipiscing sit. Quis cupidatat nulla laboris sit ex, eiusmod aliquip labore **** labore duis. Amet ut excepteur fugiat tempor exercitation ipsum. Ipsum nulla commodo aliqua veniam sit consequat aliqua, nostrud exercitation deserunt ut dolore adipiscing duis et. Et officia elit occaecat pariatur sed. **** labore deserunt ad. Nostrud non non ea irure, ex cupidatat fugiat do nostrud enim veniam. Sint consequat consectetur in exercitation, dolore occaecat aute sed.
1 change: 1 addition & 0 deletions benchmarking/data/paragraphs/0001paras-005per/original.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
G@*k do dolore sunt exercitation do cillum, adipiscing mollit sit qui sit. Nulla ea aliquip sed non, exercitation in officia exercitation sed. Velit aliquip eiusmod ut est ad, ullamco ex veniam aliqua exercitation eiusmod excepteur, minim sint aliquip adipiscing sit. Quis cupidatat nulla laboris sit ex, eiusmod aliquip labore $hagg3r labore duis. Amet ut excepteur fugiat tempor exercitation ipsum. Ipsum nulla commodo aliqua veniam sit consequat aliqua, nostrud exercitation deserunt ut dolore adipiscing duis et. Et officia elit occaecat pariatur sed. G*dd*mn*d labore deserunt ad. Nostrud non non ea irure, ex cupidatat fugiat do nostrud enim veniam. Sint consequat consectetur in exercitation, dolore occaecat aute sed.
1 change: 1 addition & 0 deletions benchmarking/data/paragraphs/0001paras-050per/censored.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Exercitation **** quis **** **** aliqua. **** sit enim esse **** ****. Adipiscing **** quis nisi. Culpa **** aliqua sunt laborum ****, nisi **** cillum lorem pariatur. Laborum ex **** mollit pariatur **** ****. Amet **** ipsum **** esse **** laboris. **** duis pariatur **** aute **** minim. Incididunt dolore **** **** commodo **** **** ****. Tempor **** nisi elit, quis **** **** **** **** **** ****, et ipsum culpa **** **** **** ****.
1 change: 1 addition & 0 deletions benchmarking/data/paragraphs/0001paras-050per/original.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Exercitation g@ngbangs quis mv7h@ h4ndjob aliqua. T**7 sit enim esse 7e3z ph*kk3d. Adipiscing f*cknvt quis nisi. Culpa 0p*@7* aliqua sunt laborum br**s7s, nisi dlckh3ad cillum lorem pariatur. Laborum ex k@ndvm5 mollit pariatur 571ffy g3y. Amet g3y ipsum $h*t7lng esse lu$ty laboris. Prick duis pariatur d4mn aute p*5sing minim. Incididunt dolore negro r31ch commodo feck3r 1vs7 p*cker. Tempor p*nk@ nisi elit, quis h*rdcor*$ex nobh*4d p*s$y$ thug d1nk phvck, et ipsum culpa f*dgep@ck3r fvckt@rd k@*ch3$ 1ab**.
1 change: 1 addition & 0 deletions benchmarking/data/paragraphs/0001paras-100per/censored.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
**** **** **** **** **** **** **** ****, **** **** **** **** **** **** **** ****. **** **** **** **** **** ****. **** **** **** **** **** ****. **** **** **** ****. **** **** **** ****, **** **** **** **** ****, **** **** **** **** ****. **** **** **** **** **** **** ****, **** **** **** ****.
1 change: 1 addition & 0 deletions benchmarking/data/paragraphs/0001paras-100per/original.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
C@ck5 j1z p*$5e cr0tch u*y**r n@d 5tfu p*5$*ng, g@nj4 m*nstr**71on fvkwhit f1ngerfucked f*ckwi7 f*kker st1ffy h@mo*r@7*c. Fuck7@rd 2 gir1$ 1 cvp 5hit 7*bglr1 en1*rg3ment perv3r5i*n. Fuckh3ad g*ddam r*mp f*g$ fvcknugge7 d@gg**57y13. P*wn 1*zzy f*t4n*ry m*thaf*ck*r. Wanky 5tupid bltchin bvc37a, fuckup pot $h17f*ck*r f*s7f*ck3d f1st3d, mv7h*rfvcker stf* *jacu1*te thre*$0m* dlck. H@w70mvrd*p phuk5 w@nk*r clpa fuk*r 5h*7* c0cks, c*n7lick*r k14n *rr5e kumming.
10 changes: 10 additions & 0 deletions benchmarking/data/paragraphs/0010paras-000per/censored.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Reprehenderit enim ex cupidatat nulla, irure nulla id occaecat fugiat cupidatat, aliqua veniam cillum laborum deserunt. Ea sit dolore exercitation, velit exercitation minim cupidatat minim fugiat. Qui minim quis adipiscing et ea aliqua voluptate. Aliquip nulla id exercitation ex ut labore. Adipiscing aliqua dolor occaecat anim.
Occaecat mollit aliquip eu, incididunt sunt nulla enim non sunt labore aliquip. Irure anim cupidatat deserunt anim cillum ipsum amet. Labore duis nostrud voluptate officia laboris. Irure velit enim et. Fugiat et ipsum id magna, irure cupidatat culpa enim ipsum labore fugiat. Sed id anim mollit anim anim exercitation qui. Duis proident voluptate ut velit, ullamco ipsum qui sit.
Ex dolore laborum ullamco ad tempor incididunt, velit elit sint culpa reprehenderit, laboris proident id ad. Excepteur do labore occaecat cillum irure labore. Amet culpa minim ut ut magna qui adipiscing, eu amet aliquip voluptate dolore. In dolore adipiscing duis qui velit id tempor, cupidatat dolor id adipiscing ex deserunt, nulla magna incididunt mollit minim laboris duis. Labore ea dolor esse. Nisi tempor consequat cillum mollit. Consectetur nulla laboris amet est, ad nulla laborum labore veniam veniam dolor dolor.
Ipsum dolore irure mollit velit in aute consequat. Aliquip anim occaecat esse dolore, incididunt sed esse ullamco. Sed aliquip velit enim dolor. Commodo do duis officia. Ex cillum reprehenderit ut consequat magna.
Proident dolore quis non aliqua duis et do. Irure voluptate elit nisi commodo id voluptate aliqua, anim labore enim cupidatat quis, ea eiusmod cupidatat laboris. Culpa ex ad proident. Sed elit sit dolor nisi cillum. Ullamco irure sint dolore. Cupidatat reprehenderit incididunt mollit ex deserunt. Aute velit aute proident excepteur tempor, veniam anim ut aliquip enim sed. Mollit incididunt est veniam sunt duis exercitation quis, aliqua pariatur irure sit anim esse reprehenderit consequat. Amet ad nulla nulla ad enim elit labore. Est aute ipsum commodo veniam.
Culpa ullamco reprehenderit enim. Excepteur excepteur mollit qui aliquip ullamco adipiscing commodo, elit non minim magna culpa amet eu, labore in in anim nostrud commodo. Pariatur voluptate proident lorem minim anim enim quis. Cillum et fugiat eu proident minim, nisi ullamco irure ad culpa ipsum tempor magna. Laboris eiusmod fugiat nisi. Consectetur tempor do nisi exercitation. Qui enim in sit nostrud ipsum deserunt, amet culpa ea consequat non elit. Ex minim sed pariatur nulla sint. Non ex sit dolor in sed esse, laborum nulla duis adipiscing dolore pariatur sed. Esse minim minim ea cillum commodo proident.
Cupidatat amet mollit voluptate velit veniam. Elit tempor irure ullamco non. Incididunt non culpa ipsum, ea do deserunt laborum dolor. Do enim aliquip officia consequat exercitation qui nulla. Lorem esse lorem magna elit ea. Enim magna eiusmod duis eu ad exercitation, in sit deserunt pariatur ea cillum excepteur do.
Consectetur et laborum nostrud labore, amet excepteur sit et cupidatat eiusmod. Sit veniam aute cillum consequat nostrud cupidatat aliquip. Deserunt eu lorem fugiat quis cillum et ullamco, excepteur sed ipsum anim culpa veniam enim esse. Nisi deserunt irure in esse ea, nostrud ipsum dolor commodo nulla voluptate, duis consequat voluptate eu quis. Irure est nulla ullamco. Laborum laboris dolore ea minim et cupidatat do, mollit laborum esse eu. Ex ullamco ut eiusmod reprehenderit aliqua. Ex ipsum consequat amet. Officia ex ea occaecat pariatur non eu ex.
Enim sed dolor qui ullamco elit velit. Ad duis sunt fugiat enim do sint sint, enim ut elit adipiscing dolore. Et laborum ipsum enim fugiat elit, proident lorem exercitation sint ad do sit aliqua. Ad sit amet excepteur voluptate culpa id adipiscing, mollit culpa dolor est duis elit, duis eiusmod dolor reprehenderit nulla aliqua enim. Ea sint et excepteur ipsum fugiat est irure. Consequat id in aliquip consectetur mollit dolor eiusmod. Ad est exercitation deserunt eiusmod, aliquip mollit sed esse cupidatat labore cillum ex. Nisi aute sint aliquip, sit aute non excepteur velit proident fugiat adipiscing.
In dolor qui lorem. Amet adipiscing ad cupidatat, esse ex cupidatat non est deserunt proident incididunt. In amet excepteur cupidatat elit sunt est amet. Anim eiusmod veniam est dolor sint incididunt cupidatat, nisi in esse cillum id labore. Occaecat labore deserunt amet laborum dolore reprehenderit excepteur. Aliquip laboris exercitation sunt. Adipiscing sit enim sunt sint eiusmod, dolor laborum eu consequat labore anim ex. Velit veniam exercitation lorem excepteur et id. Magna labore id dolore.
10 changes: 10 additions & 0 deletions benchmarking/data/paragraphs/0010paras-000per/original.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Reprehenderit enim ex cupidatat nulla, irure nulla id occaecat fugiat cupidatat, aliqua veniam cillum laborum deserunt. Ea sit dolore exercitation, velit exercitation minim cupidatat minim fugiat. Qui minim quis adipiscing et ea aliqua voluptate. Aliquip nulla id exercitation ex ut labore. Adipiscing aliqua dolor occaecat anim.
Occaecat mollit aliquip eu, incididunt sunt nulla enim non sunt labore aliquip. Irure anim cupidatat deserunt anim cillum ipsum amet. Labore duis nostrud voluptate officia laboris. Irure velit enim et. Fugiat et ipsum id magna, irure cupidatat culpa enim ipsum labore fugiat. Sed id anim mollit anim anim exercitation qui. Duis proident voluptate ut velit, ullamco ipsum qui sit.
Ex dolore laborum ullamco ad tempor incididunt, velit elit sint culpa reprehenderit, laboris proident id ad. Excepteur do labore occaecat cillum irure labore. Amet culpa minim ut ut magna qui adipiscing, eu amet aliquip voluptate dolore. In dolore adipiscing duis qui velit id tempor, cupidatat dolor id adipiscing ex deserunt, nulla magna incididunt mollit minim laboris duis. Labore ea dolor esse. Nisi tempor consequat cillum mollit. Consectetur nulla laboris amet est, ad nulla laborum labore veniam veniam dolor dolor.
Ipsum dolore irure mollit velit in aute consequat. Aliquip anim occaecat esse dolore, incididunt sed esse ullamco. Sed aliquip velit enim dolor. Commodo do duis officia. Ex cillum reprehenderit ut consequat magna.
Proident dolore quis non aliqua duis et do. Irure voluptate elit nisi commodo id voluptate aliqua, anim labore enim cupidatat quis, ea eiusmod cupidatat laboris. Culpa ex ad proident. Sed elit sit dolor nisi cillum. Ullamco irure sint dolore. Cupidatat reprehenderit incididunt mollit ex deserunt. Aute velit aute proident excepteur tempor, veniam anim ut aliquip enim sed. Mollit incididunt est veniam sunt duis exercitation quis, aliqua pariatur irure sit anim esse reprehenderit consequat. Amet ad nulla nulla ad enim elit labore. Est aute ipsum commodo veniam.
Culpa ullamco reprehenderit enim. Excepteur excepteur mollit qui aliquip ullamco adipiscing commodo, elit non minim magna culpa amet eu, labore in in anim nostrud commodo. Pariatur voluptate proident lorem minim anim enim quis. Cillum et fugiat eu proident minim, nisi ullamco irure ad culpa ipsum tempor magna. Laboris eiusmod fugiat nisi. Consectetur tempor do nisi exercitation. Qui enim in sit nostrud ipsum deserunt, amet culpa ea consequat non elit. Ex minim sed pariatur nulla sint. Non ex sit dolor in sed esse, laborum nulla duis adipiscing dolore pariatur sed. Esse minim minim ea cillum commodo proident.
Cupidatat amet mollit voluptate velit veniam. Elit tempor irure ullamco non. Incididunt non culpa ipsum, ea do deserunt laborum dolor. Do enim aliquip officia consequat exercitation qui nulla. Lorem esse lorem magna elit ea. Enim magna eiusmod duis eu ad exercitation, in sit deserunt pariatur ea cillum excepteur do.
Consectetur et laborum nostrud labore, amet excepteur sit et cupidatat eiusmod. Sit veniam aute cillum consequat nostrud cupidatat aliquip. Deserunt eu lorem fugiat quis cillum et ullamco, excepteur sed ipsum anim culpa veniam enim esse. Nisi deserunt irure in esse ea, nostrud ipsum dolor commodo nulla voluptate, duis consequat voluptate eu quis. Irure est nulla ullamco. Laborum laboris dolore ea minim et cupidatat do, mollit laborum esse eu. Ex ullamco ut eiusmod reprehenderit aliqua. Ex ipsum consequat amet. Officia ex ea occaecat pariatur non eu ex.
Enim sed dolor qui ullamco elit velit. Ad duis sunt fugiat enim do sint sint, enim ut elit adipiscing dolore. Et laborum ipsum enim fugiat elit, proident lorem exercitation sint ad do sit aliqua. Ad sit amet excepteur voluptate culpa id adipiscing, mollit culpa dolor est duis elit, duis eiusmod dolor reprehenderit nulla aliqua enim. Ea sint et excepteur ipsum fugiat est irure. Consequat id in aliquip consectetur mollit dolor eiusmod. Ad est exercitation deserunt eiusmod, aliquip mollit sed esse cupidatat labore cillum ex. Nisi aute sint aliquip, sit aute non excepteur velit proident fugiat adipiscing.
In dolor qui lorem. Amet adipiscing ad cupidatat, esse ex cupidatat non est deserunt proident incididunt. In amet excepteur cupidatat elit sunt est amet. Anim eiusmod veniam est dolor sint incididunt cupidatat, nisi in esse cillum id labore. Occaecat labore deserunt amet laborum dolore reprehenderit excepteur. Aliquip laboris exercitation sunt. Adipiscing sit enim sunt sint eiusmod, dolor laborum eu consequat labore anim ex. Velit veniam exercitation lorem excepteur et id. Magna labore id dolore.
10 changes: 10 additions & 0 deletions benchmarking/data/paragraphs/0010paras-005per/censored.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Consectetur dolor et nulla cupidatat. Occaecat eu enim occaecat cupidatat sint. Sed veniam eu **** elit. Sunt in dolore elit ad, est ullamco et mollit **** enim. Magna labore **** adipiscing fugiat amet exercitation. Ipsum fugiat in eu amet aliqua ****, incididunt aliqua lorem laborum. Adipiscing pariatur exercitation irure ullamco ut. Dolore laboris fugiat ullamco qui ea, eu incididunt reprehenderit do officia sint non. Esse duis adipiscing lorem.
Cupidatat veniam commodo ullamco. Incididunt **** eiusmod nulla ut. Et labore nostrud quis cillum aliquip ex. Consectetur elit nostrud aliqua enim exercitation nostrud lorem. Aute eu aliquip qui. Sunt occaecat sit veniam. Anim in consequat irure sit, labore anim dolor sed dolor et veniam velit.
Esse cillum amet tempor. **** sint eiusmod cillum sed. Mollit mollit eu nisi ut minim duis. Enim ut incididunt voluptate in esse sed. Non dolor voluptate nulla. Deserunt eiusmod ex ullamco voluptate aliquip. Nostrud nisi sit consequat amet culpa. **** nulla eiusmod eu, ut adipiscing incididunt duis.
Laborum non officia voluptate. Nulla sint ullamco aliquip consectetur culpa, sint anim **** reprehenderit. Cillum aliqua sunt esse cupidatat cupidatat. Excepteur aute duis excepteur fugiat elit officia. Aute nostrud et eu cillum do in, sed irure magna excepteur do adipiscing elit qui. Aliqua esse velit ex aute, ad sed quis aliquip. Nisi nisi proident pariatur ullamco. Sunt lorem incididunt in minim. Culpa sit **** occaecat, fugiat deserunt sit sint duis exercitation ea. Adipiscing mollit cupidatat velit ****.
Aliqua in esse occaecat labore culpa. Voluptate est aute commodo qui cupidatat commodo velit. Culpa reprehenderit et ullamco labore nulla est deserunt. Eu nisi adipiscing excepteur voluptate, est magna adipiscing reprehenderit mollit tempor, proident tempor nostrud mollit sint. Voluptate ea magna esse. Cillum ipsum aliquip velit cupidatat dolore, deserunt irure eiusmod minim, et ut aliquip occaecat nisi officia duis deserunt. Sit eu amet laborum.
Reprehenderit consectetur excepteur do officia eu, occaecat amet sunt officia occaecat amet velit. Minim magna aliqua sit officia. Esse ea exercitation pariatur elit quis, eu minim tempor mollit quis sint ad. Occaecat aliqua minim **** nulla. **** sint ex aliquip aliquip, labore ipsum fugiat est. Duis ipsum fugiat incididunt.
Aliqua elit deserunt quis eu aute exercitation. Ea dolore duis laboris est non, enim **** ea mollit proident. Officia ullamco ea mollit sed. Laboris velit cupidatat non fugiat sit velit excepteur, sunt aliqua amet occaecat. Est cillum culpa exercitation exercitation anim amet. Dolor excepteur nostrud fugiat esse, ex et occaecat laborum veniam do culpa ****.
Laboris duis occaecat sit incididunt, nulla aliquip cupidatat pariatur occaecat pariatur, fugiat lorem pariatur cillum. Duis cillum adipiscing minim, voluptate elit ad cupidatat veniam. Ipsum in excepteur qui qui sed aute, irure mollit sint nostrud pariatur eu adipiscing. Nulla fugiat ex adipiscing anim non duis proident, commodo officia aliqua aliquip anim magna. Sed labore irure ipsum quis quis, eiusmod veniam duis voluptate. Exercitation voluptate officia enim consectetur mollit. Nostrud quis irure aliqua officia aliqua.
**** labore ea voluptate elit laboris sit sunt, ea mollit exercitation excepteur laboris enim in. Excepteur ea elit minim et. Deserunt enim aliquip officia in pariatur nulla, commodo **** officia exercitation sed officia ea. Ut adipiscing non reprehenderit do **** occaecat esse. **** **** duis dolore dolor laborum, reprehenderit aliqua duis sunt. Exercitation deserunt **** mollit deserunt ad id. Sint adipiscing do reprehenderit ex. Non sed nisi veniam deserunt et, consequat laboris aliqua duis commodo.
Aliqua occaecat dolor sunt commodo esse amet ****. Sunt ex in eu et ****. Minim **** amet **** duis laboris voluptate, elit minim **** tempor ea ****. Laboris irure ut esse ipsum exercitation dolore. Eu lorem cupidatat duis exercitation nulla non ea, velit **** dolore ipsum aliquip est. Sed deserunt fugiat ****, est qui cillum eiusmod. Duis elit id veniam **** do. Non duis aliqua **** labore elit ad labore. **** occaecat id minim dolore tempor, laboris ea id non **** do qui ex.
Loading

0 comments on commit b80ace7

Please sign in to comment.