[directions] wrapper for adding cardinal/relative directions probabilistically

This commit is contained in:
Al
2016-05-05 18:44:58 -04:00
parent ed12d7bbe4
commit d38918ca7f

View File

@@ -1,4 +1,6 @@
from geodata.addresses.config import address_config
from geodata.addresses.numbering import NumericPhrase
from geodata.math.sampling import weighted_choice
class RelativeDirection(NumericPhrase):
@@ -9,3 +11,19 @@ class RelativeDirection(NumericPhrase):
class CardinalDirection(NumericPhrase):
key = 'cardinal_directions'
dictionaries = ['cardinal_directions']
class Direction(object):
CARDINAL = 'cardinal'
RELATIVE = 'relative'
@classmethod
def random(cls, language, country=None, cardinal_proability=0.5):
values = [cls.CARDINAL, cls.RELATIVE]
probs_cdf = [cardinal_proability, 1.0]
choice = weighted_choice(values, probs_cdf)
if choice == cls.CARDINAL:
return CardinalDirection.phrase(None, language, country=country)
else:
return RelativeDirection.phrase(None, language, country=country)