What would be the best way to go about getting a function that returns a random English word (preferably a noun), without keeping a list of all possible words in a file before hand?
相关问题
- how to define constructor for Python's new Nam
- streaming md5sum of contents of a large remote tar
- How to get the background from multiple images by
- Evil ctypes hack in python
- Correctly parse PDF paragraphs with Python
Another theoretical approach: you could scrape the random wikipedia article page and return the N-th word of the article.
Word lists need not take up all that much space.
Here's a JSON wordlist with over 5000 words, all nouns. It clocks in at under 50K, the size of a medium-sized jpeg image.
I'll leave choosing a random one as an exercise for the reader.
Well, you have three options:
The only way to avoid the above is if you're not concerned whether the word is real: you can just generate random-length strings of characters. (There's no way to programmatically generate words without a dictionary list to go from.)
You can download the "words common to SOWPODS and TWL" lists from http://www.math.toronto.edu/jjchew/scrabble/lists/ . I put all the words in those files together and the list weighed in at about 642k. Not huge by any standards. The lists do contain a whole lot of obscure words though, since they are meant for tournament Scrabble use. The good thing is that the lists form a substantial subset of the English language.
Just use setgetgo's random word api. It's free, it's easy, and it rocks.
http://randomword.setgetgo.com/
You could have the function try and parse an online resource such as:
http://www.zokutou.co.uk/randomword/