Exemple #1
0
    def normalizarPorPartido(self, direccion, partido='', maxOptions=10):
        res = [[], [], [], []]
        for nd in self.normalizadores:
            try:
                if partido == '':
                    res[2] += nd.normalizar(direccion, maxOptions)
                else:
                    m = matcheaTexto(partido, nd.partido.keywords)
                    if m:
                        result = nd.normalizar(direccion, maxOptions)
                        if m == MATCH_EXACTO:
                            res[0] += result
                        elif m == MATCH_PERMUTADO:
                            res[1] += result
                        elif m == MATCH_INCLUIDO:
                            res[2] += result
                        elif m == MATCH:
                            res[3] += result
            except Exception as e:
                pass

        if len(res[0] + res[1] + res[2] + res[3]):
            res = (res[0] + res[1] + res[2] + res[3])
            if partido != '':
                res = [
                    r for r in res if (matcheaTexto(partido, r.partido.nombre)
                                       or matcheaTexto(partido, r.localidad))
                ]
            return res[:maxOptions]
        else:
            raise e
    def normalizarPorPartido(self, direccion, partido='', maxOptions=10):
        res = [[], [], [], []]
        global errorGlobal
        errorGlobal = None
        for nd in self.normalizadores:
            try:
                if partido == '':
                    res[2] += nd.normalizar(direccion, maxOptions)
                else:
                    m = matcheaTexto(partido, nd.partido.keywords)
                    if m:
                        result = nd.normalizar(direccion, maxOptions)
                        if m == MATCH_EXACTO:
                            res[0] += result
                        elif m == MATCH_PERMUTADO:
                            res[1] += result
                        elif m == MATCH_INCLUIDO:
                            res[2] += result
                        elif m == MATCH:
                            res[3] += result
            except Exception as e:
                errorGlobal = e

        if len(res[0] + res[1] + res[2] + res[3]):
            res = (res[0] + res[1] + res[2] + res[3])
            if partido != '':
                res = [r for r in res if (matcheaTexto(partido, r.partido.nombre) or matcheaTexto(partido, r.localidad))]
            return res[:maxOptions]
        else:
            raise errorGlobal
 def test_matcheaTexto_no_normalizar_no_match(self):
     res = matcheaTexto('Lanus', 'Lanús', normalizar=False)
     self.assertEqual(res, NO_MATCH)
     res = matcheaTexto('-  (lomas, dé,  zámórá)-', 'Lomas de Zamora', normalizar=False)
     self.assertEqual(res, NO_MATCH)
     res = matcheaTexto('de lomas zamora', 'Lomas de Zamora', normalizar=False)
     self.assertEqual(res, NO_MATCH)
     res = matcheaTexto('lOMAS DE zAMORA', 'Lomas de Zamora', normalizar=False)
     self.assertEqual(res, NO_MATCH)
 def test_matcheaTexto_permutado(self):
     res = matcheaTexto('de lomas zamora', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_PERMUTADO)
     res = matcheaTexto('lomas zamora de', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_PERMUTADO)
     res = matcheaTexto('zamora lomas de', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_PERMUTADO)
     res = matcheaTexto('zamora de lomas', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_PERMUTADO)
 def test_matcheaTexto_incluido(self):
     res = matcheaTexto('Lomas', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_INCLUIDO)
     res = matcheaTexto('Lomas de', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_INCLUIDO)
     res = matcheaTexto('Lomas ZAMORA', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_INCLUIDO)
     res = matcheaTexto('ZAMORA Lomas', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_INCLUIDO)
 def test_matcheaTexto_incluido(self):
     res = matcheaTexto('Lomas', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_INCLUIDO)
     res = matcheaTexto('Lomas de', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_INCLUIDO)
     res = matcheaTexto('Lomas ZAMORA', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_INCLUIDO)
     res = matcheaTexto('ZAMORA Lomas', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_INCLUIDO)
 def test_matcheaTexto_permutado(self):
     res = matcheaTexto('de lomas zamora', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_PERMUTADO)
     res = matcheaTexto('lomas zamora de', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_PERMUTADO)
     res = matcheaTexto('zamora lomas de', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_PERMUTADO)
     res = matcheaTexto('zamora de lomas', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_PERMUTADO)
Exemple #8
0
 def _buscarPartidoLocalidad(self, texto, partido, localidad):
     retval = False
     palabras = re.split('\s', normalizarTexto(texto))
     cant_palabras = len(palabras)
     for i in range(cant_palabras):
         texto_cortado = ' '.join(palabras[:i + 1])
         if matcheaTexto(texto_cortado, partido) or matcheaTexto(texto_cortado, localidad):
             retval = True
         else:
             break
     return retval
 def test_matcheaTexto_no_normalizar_no_match(self):
     res = matcheaTexto('Lanus', 'Lanús', normalizar=False)
     self.assertEqual(res, NO_MATCH)
     res = matcheaTexto('-  (lomas, dé,  zámórá)-',
                        'Lomas de Zamora',
                        normalizar=False)
     self.assertEqual(res, NO_MATCH)
     res = matcheaTexto('de lomas zamora',
                        'Lomas de Zamora',
                        normalizar=False)
     self.assertEqual(res, NO_MATCH)
     res = matcheaTexto('lOMAS DE zAMORA',
                        'Lomas de Zamora',
                        normalizar=False)
     self.assertEqual(res, NO_MATCH)
Exemple #10
0
    def normalizarCalleYCalle(self,
                              calle1='',
                              calle2='',
                              partido='',
                              maxOptions=10):
        res = [[], [], [], []]

        if calle1 == '' or calle2 == '':
            raise Exception('Debe ingresar la calle y el cruce.')

        for nd in self.normalizadores:
            try:
                if partido == '':
                    res[2] += nd.normalizarCalleYCalle(calle1, calle2,
                                                       maxOptions)
                else:
                    m = matcheaTexto(partido, nd.partido.keywords)
                    if m:
                        result = nd.normalizarCalleYCalle(
                            calle1, calle2, maxOptions)
                        if m == MATCH_EXACTO:
                            res[0] += result
                        elif m == MATCH_PERMUTADO:
                            res[1] += result
                        elif m == MATCH_INCLUIDO:
                            res[2] += result
                        elif m == MATCH:
                            res[3] += result
            except Exception as e:
                pass

        if len(res[0] + res[1] + res[2] + res[3]):
            return (res[0] + res[1] + res[2] + res[3])[:maxOptions]
        else:
            raise e
Exemple #11
0
    def normalizarCalleYCalle(self, inCalle, inCruce, maxOptions=10):
        '''
        Normaliza una direccion de tipo calle-calle
        @param inCalle: Calle a ser normalizada
        @type inCalle: String
        @param inCruce: Cruce a ser normalizado
        @type inCruce: String
        @param maxOptions: Maximo numero de opciones a retornar. Por defecto es 10.
        @type maxOptions: Integer
        @return: Las opciones halladas que se corresponden con dir
        @rtype: Array de Direccion
        '''
        calles = self.c.buscarCalle(inCalle)

        opts = [[], [], [], [], []]
        for calle in calles:
            for idCruce in calle.cruces:
                cruces = self.c.buscarCodigo(idCruce)
                for cruce in cruces:
                    res = matcheaTexto(inCruce, cruce[2])
                    if res:
                        objCruce = Calle(cruce[0], cruce[1], [], cruce[4],
                                         calle.partido, cruce[5])
                        opts[res].append(Direccion(calle, 0, objCruce))
                        if (len(opts[MATCH_EXACTO]) >= maxOptions):
                            break
            if (len(opts[MATCH_EXACTO]) >= maxOptions):
                break

        opts = (opts[MATCH_EXACTO] + opts[MATCH_PERMUTADO] +
                opts[MATCH_INCLUIDO] + opts[MATCH])[:maxOptions]

        if (len(opts) == 0 and len(calles) > 0):
            raise ErrorCruceInexistente(inCalle, [], inCruce, [])
        return opts
    def normalizarCalleYCalle(self, inCalle, inCruce, maxOptions=10):
        '''
        Normaliza una direccion de tipo calle-calle
        @param inCalle: Calle a ser normalizada
        @type inCalle: String
        @param inCruce: Cruce a ser normalizado
        @type inCruce: String
        @param maxOptions: Maximo numero de opciones a retornar. Por defecto es 10.
        @type maxOptions: Integer
        @return: Las opciones halladas que se corresponden con dir
        @rtype: Array de Direccion
        '''
        calles = self.c.buscarCalle(inCalle)

        opts = [[], [], [], [], []]
        for calle in calles:
            for idCruce in calle.cruces:
                cruces = self.c.buscarCodigo(idCruce)
                for cruce in cruces:
                    res = matcheaTexto(inCruce, cruce[2])
                    if res:
                        objCruce = Calle(cruce[0], cruce[1], [], cruce[4], calle.partido, cruce[5])
                        opts[res].append(Direccion(calle, 0, objCruce))
                        if(len(opts[MATCH_EXACTO]) >= maxOptions):
                            break
            if(len(opts[MATCH_EXACTO]) >= maxOptions):
                break

        opts = (opts[MATCH_EXACTO] + opts[MATCH_PERMUTADO] + opts[MATCH_INCLUIDO] + opts[MATCH])[:maxOptions]

        if(len(opts) == 0 and len(calles) > 0):
            raise ErrorCruceInexistente(inCalle, [], inCruce, [])
        return opts
    def normalizarCalleYCalle(self, calle1='', calle2='', partido='', maxOptions=10):
        res = [[], [], [], []]
        global errorGlobal
        errorGlobal = None
        if calle1 == '' or calle2 == '':
            raise Exception('Debe ingresar la calle y el cruce.')

        for nd in self.normalizadores:
            try:
                if partido == '':
                    res[2] += nd.normalizarCalleYCalle(calle1, calle2, maxOptions)
                else:
                    m = matcheaTexto(partido, nd.partido.keywords)
                    if m:
                        result = nd.normalizarCalleYCalle(calle1, calle2, maxOptions)
                        if m == MATCH_EXACTO:
                            res[0] += result
                        elif m == MATCH_PERMUTADO:
                            res[1] += result
                        elif m == MATCH_INCLUIDO:
                            res[2] += result
                        elif m == MATCH:
                            res[3] += result
            except Exception as e:
                errorGlobal = e

        if len(res[0] + res[1] + res[2] + res[3]):
            return (res[0] + res[1] + res[2] + res[3])[:maxOptions]
        else:
            raise errorGlobal
Exemple #14
0
 def normalizarPorPartido(self, direccion, partido='', maxOptions=10):
     res = [[], [], [], []]
     for nd in self.normalizadores:
         try:
             if partido == '':
                 res[2] += nd.normalizar(direccion, maxOptions)
             else:
                 m = matcheaTexto(partido, nd.partido.keywords)
                 if m:
                     result = nd.normalizar(direccion, maxOptions)
                     if m == MATCH_EXACTO:
                         res[0] += result
                     elif m == MATCH_PERMUTADO:
                         res[1] += result
                     elif m == MATCH_INCLUIDO:
                         res[2] += result
                     elif m == MATCH:
                         res[3] += result
         except Exception, e:
             pass
Exemple #15
0
                        result = nd.normalizar(direccion, maxOptions)
                        if m == MATCH_EXACTO:
                            res[0] += result
                        elif m == MATCH_PERMUTADO:
                            res[1] += result
                        elif m == MATCH_INCLUIDO:
                            res[2] += result
                        elif m == MATCH:
                            res[3] += result
            except Exception, e:
                pass

        if len(res[0] + res[1] + res[2] + res[3]):
            res = (res[0] + res[1] + res[2] + res[3])
            if partido != '':
                res = [r for r in res if (matcheaTexto(partido, r.partido.nombre) or matcheaTexto(partido, r.localidad))]
            return res[:maxOptions]
        else:
            raise e

    def normalizarCalleYCalle(self, calle1='', calle2='', partido='', maxOptions=10):
        res = [[], [], [], []]

        if calle1 == '' or calle2 == '':
            raise Exception('Debe ingresar la calle y el cruce.')

        for nd in self.normalizadores:
            try:
                if partido == '':
                    res[2] += nd.normalizarCalleYCalle(calle1, calle2, maxOptions)
                else:
 def test_matcheaTexto_no_match(self):
     res = matcheaTexto('partido de Lomas de Zamora', 'Lomas de Zamora')
     self.assertEqual(res, NO_MATCH)
     res = matcheaTexto('Lanús', 'Lomas de Zamora')
     self.assertEqual(res, NO_MATCH)
 def test_matcheaTexto_case(self):
     res = matcheaTexto('lOMAS DE zAMORA', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_EXACTO)
 def test_matcheaTexto_exacto(self):
     res = matcheaTexto('Lomas de Zamora', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_EXACTO)
     res = matcheaTexto('Lanus', 'Lanús')
     self.assertEqual(res, MATCH_EXACTO)
 def test_matcheaTexto_match(self):
     res = matcheaTexto('', 'Lomas de Zamora')
     self.assertEqual(res, MATCH)
     res = matcheaTexto('Lom ZAM', 'Lomas de Zamora')
     self.assertEqual(res, MATCH)
 def test_matcheaTexto_normalizacion(self):
     res = matcheaTexto('-  (lomas, dé,  zámórá)-', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_EXACTO)
 def test_matcheaTexto_match(self):
     res = matcheaTexto('', 'Lomas de Zamora')
     self.assertEqual(res, MATCH)
     res = matcheaTexto('Lom ZAM', 'Lomas de Zamora')
     self.assertEqual(res, MATCH)
 def test_matcheaTexto_normalizacion(self):
     res = matcheaTexto('-  (lomas, dé,  zámórá)-', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_EXACTO)
 def test_matcheaTexto_exacto(self):
     res = matcheaTexto('Lomas de Zamora', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_EXACTO)
     res = matcheaTexto('Lanus', 'Lanús')
     self.assertEqual(res, MATCH_EXACTO)
 def test_matcheaTexto_no_match(self):
     res = matcheaTexto('partido de Lomas de Zamora', 'Lomas de Zamora')
     self.assertEqual(res, NO_MATCH)
     res = matcheaTexto('Lanús', 'Lomas de Zamora')
     self.assertEqual(res, NO_MATCH)
 def test_matcheaTexto_case(self):
     res = matcheaTexto('lOMAS DE zAMORA', 'Lomas de Zamora')
     self.assertEqual(res, MATCH_EXACTO)