Converts numbers expressed in words to numerical values.
Project description
word2num 💬 → 🔢
word2num
is a Python package for converting numbers expressed in natural language to numerical values. It supports:
- Fractions
- Decimals
- Negative values
- Large numbers into the quintillions
- Digit sequences
- Fuzzy string matching
Table of Contents
🛠️ Installation
To use word2num
, you must first install it. You can do this using pip by running the following command in your terminal:
pip install word2num
💻 Usage
Once installed, you can use word2num
to convert numbers expressed in natural language to numerical values. To parse a single string, use the word2num
convenience function:
from word2num import word2num
word2num("fifty-seven thousand four hundred and twenty-one") # 57421
If you need to parse multiple strings, you can create your own instance of Word2Num
and call its parse
method:
from word2num import Word2Num
w2n = Word2Num()
w2n.parse("one hundred and one") # 101
w2n.parse("seventeen billion") # 17000000000
w2n.parse("negative eight") # -8
w2n.parse("half") # 0.5
w2n.parse("one and three quarters") # 1.75
w2n.parse("one three three seven") # 1337
Note that these functions will return None
if a valid numerical value couldn't be interpreted.
🐻 Fuzzy String Matching
word2num
uses fuzzy string matching to help parse misspelled number words.
Default Fuzzy Threshold
By default, word2num
uses a fuzzy threshold of 80, which means that it will match a word to a number if the fuzzy score is 80 or higher.
Custom Fuzzy Threshold
You can change the fuzzy threshold by passing a fuzzy_threshold
parameter to the word2num
function or to the Word2Num
class constructor:
# Using the word2num function
word2num("soxteeeen", fuzzy_threshold=60) # [16]
# Using the Word2Num class
w2n = Word2Num(fuzzy_threshold=60)
w2n.parse("twoo hunrdered and twienty-too") # [222]
Disable Fuzzy Matching
To disable fuzzy matching (exact matching only), you can set the fuzzy_threshold
to 100:
w2n = Word2Num(fuzzy_threshold=100)
w2n.parse("two hundered and twinty-two") # None
🌐 Language Support
- English
- Spanish
We'd love to add support for other languages. Contributions are more than welcome, so if you're interested in contributing, see the "Contributing" section below!
🤝 Contributing
Contributions to word2num
are more than welcome! If you'd like to contribute, please follow these guidelines:
- Make sure the tests pass by running
pytest
in the root directory of the repository. - If appropriate, add new tests to cover your changes.
- Follow the existing code style and conventions.
- Create a pull request with your changes.
📃 License
word2num
is released under the MIT License. See LICENSE.txt
for more information.
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
Built Distribution
File details
Details for the file word2num-0.1.2.tar.gz
.
File metadata
- Download URL: word2num-0.1.2.tar.gz
- Upload date:
- Size: 13.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9cf7a73b0207a0c4113b1272811743982c83f13be03639ee800333cc0e5a942 |
|
MD5 | 512a94be7bb57f4d17e02d32f7eba896 |
|
BLAKE2b-256 | b01974026e941148de9f21a3bf4b78c264eeb4eae57079887c39e392329a41c4 |
File details
Details for the file word2num-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: word2num-0.1.2-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c30ce2631552857415ebd2aaf8419c9adbd1b26e28aa7299b839bed94dad86a |
|
MD5 | f219fbd187a53ec8f908c73aa63ad561 |
|
BLAKE2b-256 | 9791c1f0557d5516ec34c3f1a263b00923fd5607848af321e0efe38130411454 |