Correção / Analisador de Endereço de Código Aberto com Correspondência Difusa

8

Aqui está uma pergunta detalhada relacionada à análise / geocodificação de endereços, que eu acho que deveria ser interessante para muitos usuários.

Então, basicamente, estou curioso para saber se alguém teve alguma experiência na instalação, construção ou extensão de uma ferramenta de geocodificação de código aberto e / ou correção de endereço.

Estou ciente do geocoder: iniciativas dos EUA 2.0 que, penso, são mantidas pelos geocommons, mas não tenho certeza se existem alternativas melhores, outras ferramentas de código aberto, se o sistema pode ser efetivamente estendido ou se há desenvolvimentos dos quais talvez eu não esteja ciente.

Meus objetivos são os seguintes:

  1. Preciso de uma ferramenta altamente precisa, capaz de analisar e / ou padronizar automaticamente os dados de localização inseridos pelos usuários em um único campo de entrada, tudo em tempo real e com o maior volume possível.
  2. Os dados de entrada seriam um ou mais dos seguintes componentes de endereço: CEP, município, cidade, rua, endereço e estado.
  3. Os dados de entrada também precisam ser capazes de pesquisar em nosso banco de dados de nomes geográficos personalizados. Por exemplo, ele pode inserir o nome de um bairro ou um nome de local não USPS que, naturalmente, não são variáveis ​​de endereço padrão.

Tendo em vista esses objetivos, estou ciente do fato de que, quando um único campo de formulário é conduzido para realizar essa pesquisa, cada usuário insere seus dados em diferentes formatos, enquanto o outro fator geralmente cai em erros de ortografia.

Além de utilizar o banco de dados do censo como o núcleo dos endereços / intervalos válidos (tudo que eu acredito que o Geocoder: EUA faz, acredito que algum tipo de capacidade de definir "aliases" conhecidos seria ideal para erros de ortografia conhecidos de nomes de ruas. O mesmo vale para coisas como um usuário digitando Ave em comparação com Ave. em comparação com Avenue. Não pense que esses recursos alternativos sejam totalmente possíveis com a ferramenta Geocoder: US.

Embora os elementos acima possam realmente resolver a maioria dos problemas, acho que precisa existir algum tipo de correspondência nebulosa eficaz quando a entrada não puder ser correspondida com% de idade suficientemente alta.

Se os dados de entrada puderem ser analisados ​​de maneira eficaz em elementos individuais com base em algumas regras assumidas e, em seguida, utilizando um tipo de componente "score score" para corresponder a distorção, qualquer elemento não correspondido terá que se basear nos elementos que já foram "correspondidos" com um valor alto. grau.

Por exemplo: suponho que, para que a geocodificação seja a mais eficaz possível, precisamos extrair elementos de dados individuais do campo de entrada primeiro, na tentativa de restringir a "área" para a qual o usuário está tentando encontrar resultados. Na minha opinião, isso significa que um número de 5 dígitos pode ser considerado um CEP, se houver outro elemento, como um nome de cidade, que corresponda ao CEP, na suposição de que temos a "área" correta ... Em seguida, usaremos o restante dados para tentar encontrar uma correspondência completa, parcial ou difusa, pontuar e listar os possíveis resultados.

De qualquer forma - eu apreciaria muito se alguém pudesse fornecer alguns conselhos aqui, juntamente com quaisquer conselhos, estatísticas de desempenho ou desenvolvimentos futuros que eles sabem que podem ajustar minha direção (como o uso do postgis 2.0 como um meio para melhorar as capacidades de correspondência)

NetConstructor.com
fonte

Respostas:

7

você pode tentar a gisografia. inclui um analisador de endereço, um geocoder e um geocoder reverso. (não use o serviço gratuito em lote, mas instale-o no seu servidor). Ao pesquisar textos completos com sinônimos, a verificação ortográfica provavelmente também ajuda. não há problemas se você precisar de grandes volumes, porque o gisgraphy está disponível como serviços da web com vários formatos (XML, JSON, PHP, Python, Ruby, YAML, GeoRSS e Atom) para que possa ser dimensionado

gisgrafia

gisgrafia
fonte
6

Eu tenho alguma experiência com isso. No SmartyStreets (onde trabalho), criamos um software de verificação de endereço chamado LiveAddress . (Na verdade, é tudo baseado na Web; não é necessário fazer o download ou instalá-lo.)

Os desafios de validar e padronizar endereços são muitos, garanto. Fica ainda mais complicado quando você tenta analisar o endereço em componentes específicos ou implementa a "pesquisa difusa". Mas não tenha medo ... publicamos oficialmente um procedimento básico para executar a validação de endereço de forma livre . Embora nosso serviço não seja de código aberto, somos bastante abertos sobre o compartilhamento de nossa experiência com a comunidade e o estabelecimento de novos padrões de qualidade e desempenho.

Enfim, acho que você achará essa página um pouco útil. Uma API como a nossa atenderá a milhares e milhares de solicitações por segundo, uma vez que estamos distribuídos geograficamente em três datacenters nacionalmente . O LiveAddress deve cuidar da "correspondência difusa" para você e retornar apenas resultados válidos, preenchendo as peças ausentes e corrigindo erros de ortografia.

Ele leva em conta aliases oficiais do USPS e até nomes de ruas ou locais não oficiais e os combina com pontos finais entregues e oficiais. Porém, para seus próprios nomes personalizados, você precisará trabalhar com isso em seu próprio banco de dados.

Uma palavra final também: eu acrescentaria que, embora as ferramentas de código aberto sejam ótimas e gratuitas, você provavelmente a trocará por algum aspecto de serviço, desempenho e qualidade geral. Mesmo se você hospedar o serviço internamente, é responsável por mantê-lo e atender às demandas do que parece, no seu caso, uma carga útil pesada.

Ficarei feliz em responder pessoalmente às suas próprias perguntas sobre endereços - acho que a tarefa antes de você é realmente bastante interessante e pode parecer esmagadora sem os recursos certos.

Matt
fonte
3

A padronização de endereços (correção de endereços AKA, normalização de endereços, análise de endereços) não é uma tarefa simples. Se você tem dedos rápidos e ampla criatividade, pode ser elaborado um REGEX muito bom que pode fazer um trabalho notavelmente bom. No entanto, ele não lida muito bem com os casos extremos onde os resultados podem ser ambíguos. O motivo é a falta de contexto. Você precisa saber como é o resultado correto para saber se alcançou a precisão necessária. Certamente, pegar uma lista de 100 mil endereços e conseguir analisar 70% deles com precisão (usando apenas REGEX) é melhor do que não analisar nenhum deles. Mas, quanto tempo leva para analisar os endereços "físicos" restantes? MUITO TEMPO. Eles exigem um grande número de funções especializadas de análise porque o contexto ou a "resposta correta" é desconhecida. É aqui que a verificação de endereço é útil porque o "contexto" é conhecido. O endereço totalmente padronizado e corrigido é conhecido e a lista principal pode ser usada para comparar os resultados.

Muitas vezes me perguntam isso, pois trabalho com verificação de endereço na Smartystreets .

Jeffrey
fonte
2

Um desafio enfrentado pelos serviços de verificação de endereço é que alguns endereços são válidos, mas não podem ser entregues pelo USPS. Eu moro em uma pequena cidade na qual o USPS não fornece entrega em domicílio; todos os residentes devem usar caixas postais. No entanto, tanto a UPS quanto a FedEx fornecem entrega em nossas casas, portanto nossos endereços significam claramente alguma coisa. ;-)

De qualquer forma, a demonstração 'LiveAddress' do SmartyStreets não reconhece meu endereço residencial. Isso questiona se eu gostaria de confiar em uma API que depende da verificação do USPS. Pensando em seguir a rota de código aberto para um projeto que estou iniciando.

Andrew Basile
fonte
1

Eu me deparei com o DataMatch by Data Ladder , que é uma excelente ferramenta de correspondência difusa e padronização de endereços / análise de endereço usada nos negócios e que funcionaria muito bem nessa situação. Eles oferecem uma avaliação gratuita para novos usuários.

De fato, uma avaliação independente verificada foi feita do software comparando-o às principais ferramentas de software da IBM e SAS. Houve um estudo realizado no Centro Curtin University para Data Linkage, na Austrália, que simulou a correspondência de 4,4 milhões de registros. Ele identificou o que os provedores tinham em termos de precisão (número de correspondências encontradas versus disponíveis. Número de correspondências falsas)

  1. DataMatch Enterprise, maior precisão (> 95%), muito rápido, baixo custo
  2. IBM Quality Stage, alta precisão (> 90%), muito rápido, alto custo (> US $ 100 mil)
  3. Fluxo de dados SAS, precisão média (> 85%), rápido, alto custo (> 100K)
Ralph Pawne
fonte
1

Existe um projeto GitHub chamado libpostal, que analisa / normaliza endereços de ruas ao redor do mundo usando PNL estatística e dados abertos. Parece que a maior parte da atividade do GitHub ocorreu em 2015-2016, mas pode valer a pena dar uma olhada, especialmente no lado da análise.

AdamsTips
fonte
0

Parece que o USPS tem uma ferramenta agora!

Acabei de descobrir sobre isso hoje. Também parece ser gratuito.

https://www.usps.com/business/web-tools-apis/welcome.htm

Kyurthich
fonte
depois de usá-lo, volte e nos dê uma descrição mais detalhada de como usá-lo, por favor.
Brad Nesom
Vai fazer. Eu deveria estar trabalhando com isso em breve.
kyurthich
O link foi movido e agora parece não ser relevante: "As APIs do USPS Web Tools® permitem que o carrinho de compras externo e o software de remessa acessem dados valiosos do USPS® - Gratuito! De taxas de envio a informações de rastreamento e agendamento de pacotes coleta, o Web Tools facilita o envio com o US Postal Service®. Comece agora ou continue lendo para saber mais. "
PolyGeo
Parece que eles ainda têm que: usps.com/business/web-tools-apis/...
kyurthich
Eu olhei para isso há algum tempo e acredito que os termos de serviço limitam o uso apenas aos endereços em execução para os quais você realmente está enviando algo. (Você não poderia tecnicamente usá-lo para esfregar lista geral e manutenção.)
AdamsTips