Skip to main content

Augmentex — a library for augmenting texts with errors

Project description

License Release Paper

Augmentex — a library for augmenting texts with errors

Augmentex introduces rule-based and common statistic (empowered by KartaSlov project) approach to insert errors in text. It is fully described again in the Paper and in this 🗣️Talk.

Contents

Installation

pip install augmentex

Implemented functionality

We collected statistics from different languages and from different input sources. This table shows what functionality the library currently supports.

Russian English
PC keyboard
Mobile kb

In the future, it is planned to scale the functionality to new languages and various input sources.

Usage

🖇️ Augmentex allows you to operate on two levels of granularity when it comes to text corruption and offers you sets of specific methods suited for particular level:

  • Word level:
    • replace - replace a random word with its incorrect counterpart;
    • delete - delete random word;
    • swap - swap two random words;
    • stopword - add random words from stop-list;
    • split - add spaces between letters to the word;
    • reverse - change a case of the first letter of a random word;
    • text2emoji - change the word to the corresponding emoji.
  • Character level:
    • shift - randomly swaps upper / lower case in a string;
    • orfo - substitute correct characters with their common incorrect counterparts;
    • typo - substitute correct characters as if they are mistyped on a keyboard;
    • delete - delete random character;
    • insert - insert random character;
    • multiply - multiply random character;
    • swap - swap two adjacent characters.

Word level

from augmentex.word import WordAug

word_aug = WordAug(
    unit_prob=0.4, # Percentage of the phrase to which augmentations will be applied
    min_aug=1, # Minimum number of augmentations
    max_aug=5, # Maximum number of augmentations
    )
  1. Replace a random word with its incorrect counterpart;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
word_aug.augment(text=text, action='replace')
# Съешь ещё этих мягких французских булок, дло выпей чаю.
  1. Delete random word;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
word_aug.augment(text=text, action='delete')
# Съешь ещё французских булок, да выпей
  1. Swap two random words;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
word_aug.augment(text=text, action='swap')
# Съешь ещё этих мягких французских булок, да чаю. выпей
  1. Add random words from stop-list;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
word_aug.augment(text=text, action='stopword')
# Съешь да ещё этих во мягких это французских булок, да выпей чаю.
  1. Adds spaces between letters to the word;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
word_aug.augment(text=text, action='split')
# С ъ е ш ь ещё этих мягких французских булок, д а в ы п е й чаю.
  1. Change a case of the first letter of a random word;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
word_aug.augment(text=text, action='reverse')
# Съешь ещё этих мягких Французских булок, Да выпей Чаю.
  1. Changes the word to the corresponding emoji.
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
word_aug.augment(text=text, action='text2emoji')
# Съешь ещё этих мягких французских булок, да выпей чаю.

Character level

from augmentex.char import CharAug

char_aug = CharAug(
    unit_prob=0.3, # Percentage of the phrase to which augmentations will be applied
    min_aug=1, # Minimum number of augmentations
    max_aug=5, # Maximum number of augmentations
    mult_num=3 # Maximum number of repetitions of characters (only for the multiply method)
    )
  1. Randomly swaps upper / lower case in a string;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
char_aug.augment(text=text, action='shift')
# СъЕшь ещё этих мягКих фраНцузских булок, да выпей Чаю.
  1. Substitute correct characters with their common incorrect counterparts;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
char_aug.augment(text=text, action='orfo')
# Съешь ещё этиз мягкех французских булок, ла тыпей саю.
  1. Substitute correct characters as if they are mistyped on a keyboard;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
char_aug.augment(text=text, action='typo')
# Съель езё этих мягких французскпх булок, да аыпей чпю.
  1. Delete random character;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
char_aug.augment(text=text, action='delete')
# Съеь щё эих мягких французскх булок, да выей чаю.
  1. Insert random character;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
char_aug.augment(text=text, action='insert')
# Съешь ещё этих мягкцих фчранцэузскиьх булок, да выпей шчаю.
  1. Multiply random character;
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
char_aug.augment(text=text, action='multiply')
# Съешь ещё этих мяггких французских булок, даа выпей чаю.
  1. Swap two adjacent characters.
text = "Съешь ещё этих мягких французских булок, да выпей чаю."
char_aug.augment(text=text, action='swap')
# Съешь ещёэ тихм якгих французских буолк, ад выпей чаю.

Contributing

Issue

  • If you see an open issue and are willing to do it, add yourself to the performers and write about how much time it will take to fix it. See the pull request module below.
  • If you want to add something new or if you find a bug, you should start by creating a new issue and describing the problem/feature. Don't forget to include the appropriate labels.

Pull request

How to make a pull request.

  1. Clone the repository;
  2. Create a new branch, for example git checkout -b issue-id-short-name;
  3. Make changes to the code (make sure you are definitely working in the new branch);
  4. git push;
  5. Create a pull request to the develop branch;
  6. Add a brief description of the work done;
  7. Expect comments from the authors.

References

  • SAGE — superlib, developed jointly with our friends by the AGI NLP team, which provides advanced spelling corruptions and spell checking techniques, including using Augmentex.

Authors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

augmentex-1.0.0.tar.gz (3.9 MB view details)

Uploaded Source

Built Distribution

augmentex-1.0.0-py3-none-any.whl (8.0 MB view details)

Uploaded Python 3

File details

Details for the file augmentex-1.0.0.tar.gz.

File metadata

  • Download URL: augmentex-1.0.0.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for augmentex-1.0.0.tar.gz
Algorithm Hash digest
SHA256 90976c41f61548e2dea52e0563423f4f46c081039725c46f6ca7e2b1d7ec05a3
MD5 e1caadfb3ccee253d9ee0137b728dd21
BLAKE2b-256 03465b91a1a7850c53d3be161ff372b304780d425daf8443889aa708fb3ded75

See more details on using hashes here.

File details

Details for the file augmentex-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: augmentex-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for augmentex-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3eee7531bcc5e9dcfbe1f9c0ab5c108330f84ab4759393968e151eb5fc1137e5
MD5 207fa1165438192357ab8553d8935160
BLAKE2b-256 f9cb8b45c2681c2196a9ccfa97d8924af8fc1f66e5b591c64e8d3b13a3cad675

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page