[directions] wrapper for adding cardinal/relative directions probabilistically
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
|
from geodata.addresses.config import address_config
|
||||||
from geodata.addresses.numbering import NumericPhrase
|
from geodata.addresses.numbering import NumericPhrase
|
||||||
|
from geodata.math.sampling import weighted_choice
|
||||||
|
|
||||||
|
|
||||||
class RelativeDirection(NumericPhrase):
|
class RelativeDirection(NumericPhrase):
|
||||||
@@ -9,3 +11,19 @@ class RelativeDirection(NumericPhrase):
|
|||||||
class CardinalDirection(NumericPhrase):
|
class CardinalDirection(NumericPhrase):
|
||||||
key = 'cardinal_directions'
|
key = 'cardinal_directions'
|
||||||
dictionaries = ['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)
|
||||||
|
|||||||
Reference in New Issue
Block a user