Vocabulary

PyPI
version License Python
Versions Build
Status Join the chat at https://gitter.im/tasdikrahman/vocabulary Bitdeli
Badge

A dictionary magician in the form of a module!

Author

: Tasdik Rahman

What is it

For a given word, using Vocabulary, you can get it's

Features

Why should I use Vocabulary

Wordnet is a great resource. No doubt about it! So why should you use Vocabulary when we already have Wordnet out there?

My 2 cents

Wordnet Comparison

Let's say you want to find out the synonyms for the word car.

>>> from nltk.corpus import wordnet
>>> syns = wordnet.synsets('car')
>>> syns[0].lemmas[0].name
'car'
>>> [s.lemmas[0].name for s in syns]
['car', 'car', 'car', 'car', 'cable_car']

>>> [l.name for s in syns for l in s.lemmas]
['car', 'auto', 'automobile', 'machine', 'motorcar', 'car', 'railcar', 'railway_car', 'railroad_car', 'car', 'gondola', 'car', 'elevator_car', 'cable_car', 'car']
>>> from vocabulary import Vocabulary as vb
>>> vb.synonym("car")
'[{"seq": 0, "text": "automotive"}, {"seq": 1, "text": "motor"}, {"seq": 2, "text": "wagon"}, {"seq": 3, "text": "cart"}, {"seq": 4, "text": "automobile"}]'
>>> ## load the json data
>>> car_synonyms = json.loads(vb.synonym("car"))
>>> type(car_synonyms)
<class 'list'>
>>> 

So there you go. You get the data in an easy JSON format.

You can go on comparing for the other methods too.

Installation

Option 1: installing through pip (Suggested way)

pypi package link

$ pip install vocabulary

If you are behind a proxy

$ pip --proxy [username:[email protected]]domain_name:port install vocabulary

Note: If you get command not found then $ sudo apt-get install python-pip should fix that

Option 2: Installing from source

$ git clone https://github.com/tasdikrahman/vocabulary.git
$ cd vocabulary/
$ pip install -r requirements.txt
$ python setup.py install

Upgrade

You can update to the latest version by doing a

$ pip install --upgrade vocabulary

Uninstalling

$ pip uninstall vocabulary

Usage

A Simple demonstration of the module

## Importing the module
>>> from vocabulary import Vocabulary as vb

## Extracting "Meaning"
>>> vb.meaning("hillbilly")
'[{"text": "Someone who is from the hills; especially from a rural area, with a connotation of a lack of refinement or sophistication.", "seq": 0}, {"text": "someone who is from the hills", "seq": 1}, {"text": "A white person from the rural southern part of the United States.", "seq": 2}]'
>>> 

## "Synonym"
>>> vb.synonym("hurricane")
'[{"text": "storm", "seq": 0}, {"text": "tropical cyclone", "seq": 1}, {"text": "typhoon", "seq": 2}, {"text": "gale", "seq": 3}]'
>>> 

## "Antonym"
>>> vb.antonym("respect")
'{"text": ["disesteem", "disrespect"]}'
>>> vb.antonym("insane")
'{"text": ["sane"]}'

## "Part of Speech"
>>> vb.part_of_speech("hello")
'[{"text": "interjection", "example:": "Used to greet someone, answer the telephone, or express surprise.", "seq": 0}]'
>>>

## "Usage Examples"
>>> vb.usage_example("chicanery")
'[{"text": "The Bush Administration is now the commander-in-theif (lower-case intentional) thanks to their chicanery.", "seq": 0}]'
>>>

## "Pronunciation"
>>> vb.pronunciation("hippopotamus")
[{'raw': '(hĭpˌə-pŏtˈə-məs)', 'rawType': 'ahd-legacy', 'seq': 0}, {'raw': 'HH IH2 P AH0 P AA1 T AH0 M AH0 S', 'rawType': 'arpabet', 'seq': 0}]
>>>

## "Hyphenation"
>>> vb.hyphenation("hippopotamus")
'[{"text": "hip", "type": "secondary stress", "seq": 0}, {"text": "po", "seq": 1}, {"text": "pot", "type": "stress", "seq": 2}, {"text": "a", "seq": 3}, {"text": "mus", "seq": 4}]'
>>> vb.hyphenation("amazing")
'[{"text": "a", "seq": 0}, {"text": "maz", "type": "stress", "seq": 1}, {"text": "ing", "seq": 2}]'
>>>

Demo

Help

If you need to see the usage for any of the methods, do a

>>> from vocabulary import Vocabulary as vb
>>> help(vb.meaning)
Help on function meaning in module vocabulary.vocabulary:

meaning(phrase, source_lang='en', dest_lang='en')
    make calls to the
    - glosbe API(default choice)
    - Wordnik API 

    Wordnik's API gives less results so not Using it here for getting the meanings

    params: 
    =======
    source_lang, dest_lang (both default to "en" if nothing is specified)

    Usage: 
    ======
    >>> from vocabulary import Vocabulary as vb
    >>> vb.meaning("levitate")
    '[{"text": "(intransitive) Be suspended in the air, as if in defiance of gravity.", "seq": 0}, {"text": "(transitive) To cause to rise in the air and float, as if in defiance of gravity.", "seq": 1}]'
    >>>
(END)

and so on for other functions

How does it work

Under the hood, it makes use of 4 awesome API's to give you consistent results. The API's being

Contributing

  1. Fork it.
  2. Clone it

create a virtualenv

$ virtualenv develop              # Create virtual environment
$ source develop/bin/activate     # Change default python to virtual one
(develop)$ git clone https://github.com/tasdikrahman/vocabulary.git
(develop)$ cd vocabulary
(develop)$ pip install -r requirements.txt  # Install requirements for 'Vocabulary' in virtual environment

Or, if virtualenv is not installed on your system:

$ wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
$ python virtualenv.py develop    # Create virtual environment
$ source develop/bin/activate     # Change default python to virtual one
(develop)$ git clone https://github.com/tasdikrahman/vocabulary.git
(develop)$ cd vocabulary
(develop)$ pip install -r requirements.txt  # Install requirements for 'Vocabulary' in virtual environment
  1. Create your feature branch ($ git checkout -b my-new-awesome-feature)
  2. Commit your changes ($ git commit -am 'Added <xyz> feature')
  3. Run tests
(develop) $ ./tests.py -v

If everything is running fine, integrate your feature

  1. Push to the branch ($ git push origin my-new-awesome-feature)
  2. Create new Pull Request

Hack away!

To do

Tests

Vocabulary uses unittesting for testing purposes.

Running the test cases

$ ./tests.py -v
test_antonym_1 (__main__.TestModule) ... ok
test_antonym_2 (__main__.TestModule) ... ok
test_hyphenation (__main__.TestModule) ... ok
test_meaning (__main__.TestModule) ... ok
test_partOfSpeech_1 (__main__.TestModule) ... ok
test_partOfSpeech_2 (__main__.TestModule) ... ok
test_pronunciation1 (__main__.TestModule) ... ok
test_pronunciation2 (__main__.TestModule) ... ok
test_synonym (__main__.TestModule) ... ok
test_usageExamples1 (__main__.TestModule) ... ok
test_usageExamples2 (__main__.TestModule) ... ok

----------------------------------------------------------------------
Ran 11 tests in 13.713s

OK

Known Issues

>>> vb.pronunciation("hippopotamus")
[{'raw': '(hĭpˌə-pŏtˈə-məs)', 'rawType': 'ahd-legacy', 'seq': 0}, {'raw': 'HH IH2 P AH0 P AA1 T AH0 M AH0 S', 'rawType': 'arpabet', 'seq': 0}]
>>> type(vb.pronunciation("hippopotamus"))
<class 'list'>
>>> json.dumps(vb.pronunciation("hippopotamus"))
'[{"raw": "(h\\u012dp\\u02cc\\u0259-p\\u014ft\\u02c8\\u0259-m\\u0259s)", "rawType": "ahd-legacy", "seq": 0}, {"raw": "HH IH2 P AH0 P AA1 T AH0 M AH0 S", "rawType": "arpabet", "seq": 0}]'
>>>

You are being returned a list object instead of a JSON object. When returning the latter, there are some unicode issues. A fix for this will be released soon.

Discuss

Join us on our Gitter channel if you want to chat or if you have any questions.

Contributers

Changelog

0.0.4

Bugs

Please report the bugs at the issue tracker

License :

MIT License © Tasdik Rahman

You can find a copy of the License at http://prodicus.mit-license.org/