Google geocoding API 的内部运作

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

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

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

我意识到,鉴于Google拥有的巨大资源,在合理的时间内构建一个能够与其地理编码API竞争的系统几乎是不可能的,但这让我很好奇它的内部运作方式。

是否在使用类似BERT的翻译系统?发送文本后会发生什么?


回答:

我通过创建索引和倒排索引,使用n-grams来进行类似的使用。查看这个包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数据大约需要16GB的RAM

要查看该实现,请检查这个OpenGeoCode HTTP API服务源代码

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注