Create awesome acronyms for your projects!
Project description
AcronymMaker in Python
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 thefirst
letter orall
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 consideredordered
orunordered
. The strategyordered-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 theordered
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d63d53f98fb661fbebf8093c7f4ccfb71342b72054381b01b5ae5c2cc27c82e |
|
MD5 | b6400776db53f98c245ac9499ca7e164 |
|
BLAKE2b-256 | c49186f3b888a95e7600f964a157eb537d42e1c21c52bbe6550159524c891c88 |