Skip to main content

Create awesome acronyms for your projects!

Project description

AcronymMaker in Python

pipeline status coverage report Quality Gate Status

Description

AcronymMaker creates awesome acronyms for your projects. Let us briefly describe how it works with some vocabulary.

A token is a set of words from which one word must appear in the acronym built by AcronymMaker. Said differently, there must be a letter in common between a word from the set and the built acronym. This letter may be either the first letter of a word in the token or any letter, depending on the letter selection strategy that is given to AcronymMaker.

Additionally, tokens may be optional. In this case, AcronymMaker will try to match a letter from the words in the optional token to a letter in the acronym, but the acronym will still be accepted if it fails to do so.

To find an acronym for a given sequence of tokens, AcronymMaker uses a dictionary, i.e., a set of known words, in which it looks for acronyms. A word in the dictionary is said to be explained (as an acronym) by the sequence of tokens if there is a letter in the word for each word in each (non-optional) token. In this case, we say that the letter is explained by the corresponding word.

Moreover, there are two ways to explain a word as an acronym: either by following the order of the tokens in the specified sequence, or without considering this order. AcronymMaker supports both of them (independently).

Finally, note that there may be unexplained letters in the acronym. Their number may be limited, by limiting both the number of consecutive unused letters and the number of overall unused letters in a word. If one of these limits is exceeded, then the word will not be considered as explained.

Requirements

This project provides a Python implementation of AcronymMaker, you thus need Python 3 on your computer to run it.

You may install AcronymMaker on your computer along with all its dependencies thanks to pip with the following command line:

python3 -m pip install acronymmaker

How to use AcronymMaker

There are two ways to use the Python implementation of AcronymMaker. This section describes both of them.

Command-Line Interface

AcronymMaker comes with a command-line interface that has the following usage:

acronymmaker [-l {all,first}] [-m {ordered,ordered-greedy,unordered}] [-c <nb>] [-u <nb>] -d <dict> [<dict> ...]

Let us now describe the parameters of the command line above.

  • The parameter -l (--select-letters) allows specifying whether only the first letter or all the letters of a word from a token may be used to explain a letter of the acronym.

  • The parameter -m (--matching-strategy) allows specifying whether the tokens must be considered ordered or unordered. The strategy ordered-greedy also considers the tokens in order, but using a more efficient algorithm that may however miss matching acronyms which would have been found by the ordered strategy.

  • The parameters -c (--max-consecutive-unused) and -u (--max-total-unused) allow specifying the maximum numbers of unused letters in the acronym, by limiting the number of consecutive and overall unexplained letters, respectively.

  • The parameter -d (--dictionary) allows specifying the path to the dictionary file(s) from which AcronymMaker will look for acronyms. You may find such dictionaries here. This is the only required parameter.

Once the command-line application has started, a prompt asks you to enter your tokens, separated by blank spaces. Each token defines a set of words separated with slashes (/), and may end with a question mark (?) to specify that the token is optional. When you press Enter, the matching acronyms are displayed in the console. You may then enter new sequences of tokens if you wish to find other acronyms, or you may exit the application with either Ctrl-C or Ctrl-D.

Python API

You may also want to directly interact with the Python API of AcronymMaker. The acronymmaker package provides the function and classes to programmatically set up an instance of AcronymMaker similarly to what is proposed for the command-line interface.

First, there are two functions corresponding to the letter selection strategies. Both of them are in the acronymmaker.selection module.

from acronymmaker.selection import select_all_letters, select_first_letter

There are also three classes corresponding to the matching strategies. They are defined in the acronymmaker.matching module.

from acronymmaker.matching import GreedyOrderedMatchingStrategy
from acronymmaker.matching import RegexBasedOrderedMatchingStrategy
from acronymmaker.matching import UnorderedMatchingStrategy

All these strategies define a constructor that takes as parameters the maximum number of consecutive unused letters and the maximum number of overall unused letters, as this can be seen in the example below.

matching_strategy = UnorderedMatchingStrategy(max_consecutive_unused=3, max_total_unused=5)

It is now possible to instantiate an AcronymMaker to create your acronyms. First, you need to import AcronymMaker.

from acronymmaker.maker import AcronymMaker

Then, you may instantiate an AcronymMaker as follows.

my_acronyms = []
maker = AcronymMaker(select_all_letters, matching_strategy, my_acronyms.append)

The maker initialized above will append to my_acronyms all the acronyms it will identify. You may of course provide any callback function as third parameter to the constructor of AcronymMaker. The only requirement for this function is that it must take as parameter an instance of Acronym (from the acronymmaker.matching module). You can for instance print it, display it on a GUI, etc.

Then, you need to tell to the instance of AcronymMaker what are the words that are authorized as acronyms (a.k.a. the "dictionary"). We provide a set of dictionary as text files, but you can of course use your own set of words.

To add new words, you can either add them one at a time, or all of them at once.

maker.add_known_word('foo')
maker.add_known_words(['bar', 'baz'])

Then, you need to provide the list of the tokens for which to find an acronym. To this end, the TokenBuilder, defined in acronymmaker.token, makes easier the creation of a Token.

builder = TokenBuilder(select_all_letters)
builder.add_word('foo')
builder.add_word('bar')
builder.set_optional(True)
token = builder.build()

Once you have built all your tokens, put them in a list, say tokens. Finally, pass this list as parameter to the find_acronym method of maker. It will try to explain each word of the dictionary, and will invoke the callback function specified when creating the instance of AcronymMaker each time it successfully explains a word with the corresponding Acronym instance.

maker.find_acronyms(tokens)

To deal with the instances of Acronym that are produced by this method and stored in the list my_acronyms (in this example), you may be particularly interested in the following methods:

  • get_word() gives the word that is explained as an acronym, with each explained letter upper-cased.

  • get_explanations() gives the list of explanations of the acronym, i.e., all the possible combinations of words in the tokens that explain the word as an acronym. Moreover, each letter corresponding to an explained letter of the acronym are upper-cased.

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

acronymmaker-0.1.1.tar.gz (17.4 kB view details)

Uploaded Source

File details

Details for the file acronymmaker-0.1.1.tar.gz.

File metadata

  • Download URL: acronymmaker-0.1.1.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.0

File hashes

Hashes for acronymmaker-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6d63d53f98fb661fbebf8093c7f4ccfb71342b72054381b01b5ae5c2cc27c82e
MD5 b6400776db53f98c245ac9499ca7e164
BLAKE2b-256 c49186f3b888a95e7600f964a157eb537d42e1c21c52bbe6550159524c891c88

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