在文本中快速搜索城市和国家的大列表
ahogeotagger的Python项目详细描述
地理标签
如果你有成千上万的文本段落,你想在其中搜索成百上千的搜索字符串,那么这个过程很快就会变得非常麻烦。这是一个非常相关和快速的搜索。您可以阅读有关算法here的更多信息。在
这段代码将python中的very efficient implementation of ahocorasick与预先绑定的城市、州和国家列表结合起来,在文本中标记位置。在
要求
- Python 3.6或更高版本
- pyahocorasick 1.4.0或更高版本
安装
通过PyPi使用PIP
pip install ahogeotagger
使用
现在的用法很简单。导入并初始化标记器,其中包含要搜索文本的城市数。城市按人口顺序排列(东京、纽约、墨西哥城等)。在
这些城市的数据已经从免费版本的simplemaps数据库中预填充,您可以找到here。在
^{pr2}$或者,如果您不想使用内置的城市数据库,您可以提供自己的城市列表。该列表需要是一个元组列表,每个元组的值按以下顺序排列:
(id,城市,州,国家,iso2,iso3,人口,lat,lng)
id
和population
的类型是int
,lat
和{
tagger.init(num_cities = 500, cities = [a,b,c])
其中a,b,c是上面描述的元组。在
要搜索文本是否包含位置,请按如下方式向搜索函数提供纯文本:
results = tagger.search('New york and London are are competing for tech talent')
print(results)
这将产生以下元组列表
[(0, 7, 'New York', 'New York', 'United States', 'US', 'USA', 19354922, 40.6943, -73.9249),
(13, 18, 'London', 'London, City of', 'United Kingdom', 'GB', 'GBR', 8567000, 51.5, -0.1167)]
每个元组总是按以下顺序包含值start_index
(用于源字符串中的匹配)、end_index
、city
、state
、country
、iso2
、iso3
、population
、latitude
、longitude
- 项目
标签: