【问题标题】:Google geocoding API Inner WorkingsGoogle 地理编码 API 内部工作原理
【发布时间】:2023-03-27 03:12:02
【问题描述】:

我目前正在处理一些大型数据集,其中包含一些基于位置的信息,但缺少创建可视化所需的直接纬度和经度测量值。

为了解决这个问题,我一直在使用地理编码 API,这些 API 需要地址或类似地址的信息作为输入,并提供纬度和经度信息作为输出。

我从使用Nominatim API 开始。不幸的是,由于我拥有的类似地址的数据的性质,我的许多查询都失败了,所以我开始使用Google geocoding API。 Google API 为我提供了更高的成功率,但它是一个付费 API,并不理想。

我意识到,鉴于 Google 拥有令人难以置信的资源,几乎不可能在合理的时间内构建一个与他们的地理编码 API 相媲美的系统,但这让我想知道幕后发生了什么。

类似 BERT 的翻译系统是否在起作用?短信发出后会怎样?

【问题讨论】:

  • 我无法在地方搜索或地理编码 API 中使用 BERT 找到对 Google 的公开引用,或者关于“文本发送后会发生什么”的任何内容,真的。但是,鉴于 Google 在搜索方面的历史,他们不太可能会应用其文本搜索技术(BERT 或其他)来纠正拼写错误或以其他方式调整输入查询以识别同义词等,这可以解释较高的命中率。

标签: machine-learning google-api gis geocoding google-geocoder


【解决方案1】:

我通过创建索引和倒排索引将 n-gram 用于类似用途。看这个包ngram

import ngram 
...

country = filename.replace('.csv', '')
ind[country] = ngram.NGram()
inv[country] = {}
s_csv = csv.reader(stream, delimiter=';')
next(s_csv)
for row in s_csv:
    coord = tuple(map(float, row[0:2]))
    ad = ' '.join(row[2:]).lower()
    ind[country].add(ad)
    inv[country][ad] = (coord, address)

那么你可以使用find函数

注意像法国和 OSM Data 这样的国家/地区的内存消耗 ~16GB RAM

要查看它的实现,请查看OpenGeoCode HTTP API Service source code

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 2011-03-13
    • 2013-08-10
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2015-08-21
    相关资源
    最近更新 更多