Precision metadata for TomTom
This commit is contained in:
parent
dbb4f9204a
commit
4123a4c442
@ -5,6 +5,7 @@ import json
|
|||||||
import requests
|
import requests
|
||||||
from uritemplate import URITemplate
|
from uritemplate import URITemplate
|
||||||
from math import tanh
|
from math import tanh
|
||||||
|
from cartodb_services import PRECISION_PRECISE, PRECISION_INTERPOLATED
|
||||||
from cartodb_services.metrics import Traceable
|
from cartodb_services.metrics import Traceable
|
||||||
from cartodb_services.tools.exceptions import ServiceException
|
from cartodb_services.tools.exceptions import ServiceException
|
||||||
from cartodb_services.tools.qps import qps_retry
|
from cartodb_services.tools.qps import qps_retry
|
||||||
@ -22,6 +23,7 @@ ENTRY_LAT = 'lat'
|
|||||||
EMPTY_RESPONSE = [[], {}]
|
EMPTY_RESPONSE = [[], {}]
|
||||||
|
|
||||||
SCORE_NORMALIZATION_FACTOR = 0.15
|
SCORE_NORMALIZATION_FACTOR = 0.15
|
||||||
|
PRECISION_SCORE_THRESHOLD = 0.5
|
||||||
|
|
||||||
class TomTomGeocoder(Traceable):
|
class TomTomGeocoder(Traceable):
|
||||||
'''
|
'''
|
||||||
@ -133,9 +135,15 @@ class TomTomGeocoder(Traceable):
|
|||||||
return EMPTY_RESPONSE
|
return EMPTY_RESPONSE
|
||||||
|
|
||||||
def _extract_metadata_from_result(self, result):
|
def _extract_metadata_from_result(self, result):
|
||||||
|
score = self._normalize_score(result['score'])
|
||||||
return {
|
return {
|
||||||
'relevance': self._normalize_score(result['score'])
|
'relevance': score,
|
||||||
|
'precision': self._precision_from_score(score)
|
||||||
}
|
}
|
||||||
|
|
||||||
def _normalize_score(self, score):
|
def _normalize_score(self, score):
|
||||||
return tanh(score * SCORE_NORMALIZATION_FACTOR)
|
return tanh(score * SCORE_NORMALIZATION_FACTOR)
|
||||||
|
|
||||||
|
def _precision_from_score(self, score):
|
||||||
|
return PRECISION_PRECISE \
|
||||||
|
if score > PRECISION_SCORE_THRESHOLD else PRECISION_INTERPOLATED
|
||||||
|
@ -73,7 +73,7 @@ class TestStreetFunctionsSetUp(TestCase):
|
|||||||
'Plaza España, Barcelona':
|
'Plaza España, Barcelona':
|
||||||
{'relevance': 0.9, 'precision': 'precise'},
|
{'relevance': 0.9, 'precision': 'precise'},
|
||||||
'Santiago Rusiñol 123, Valladolid':
|
'Santiago Rusiñol 123, Valladolid':
|
||||||
{'relevance': 0.8, 'precision': 'interpolated'}
|
{'relevance': 0.56, 'precision': 'interpolated'}
|
||||||
}
|
}
|
||||||
|
|
||||||
HERE_METADATAS = {
|
HERE_METADATAS = {
|
||||||
@ -84,9 +84,10 @@ class TestStreetFunctionsSetUp(TestCase):
|
|||||||
}
|
}
|
||||||
|
|
||||||
TOMTOM_METADATAS = {
|
TOMTOM_METADATAS = {
|
||||||
'Plaza España, Barcelona': {
|
'Plaza España, Barcelona':
|
||||||
'relevance': 0.85
|
{'relevance': 0.85, 'precision': 'precise'},
|
||||||
}
|
'Santiago Rusiñol 123, Valladolid':
|
||||||
|
{'relevance': 0.448283494533, 'precision': 'interpolated'}
|
||||||
}
|
}
|
||||||
|
|
||||||
MAPBOX_METADATAS = {
|
MAPBOX_METADATAS = {
|
||||||
@ -369,7 +370,7 @@ class TestBulkStreetFunctions(TestStreetFunctionsSetUp):
|
|||||||
"UNION " \
|
"UNION " \
|
||||||
"select 2 as cartodb_id, ''Spain'' as country, " \
|
"select 2 as cartodb_id, ''Spain'' as country, " \
|
||||||
"''Valladolid'' as city, " \
|
"''Valladolid'' as city, " \
|
||||||
"''Calle Santiago Rusiñol 123'' as street' " \
|
"''Santiago Rusiñol 123'' as street' " \
|
||||||
", 'street', 'city', NULL, 'country')"
|
", 'street', 'city', NULL, 'country')"
|
||||||
response = self._run_authenticated(query)
|
response = self._run_authenticated(query)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user