前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Addressrec:地址解析库

Addressrec:地址解析库

作者头像
luckzack
发布2024-05-08 09:53:50
1400
发布2024-05-08 09:53:50
举报

在我们的日常工作中,特别是数据分析、地理信息系统 (GIS) 开发,或者在线零售等行业中,经常会遇到处理包含地址信息的文本数据这个棘手的任务。 面对大量规格不统一,格式不一致的非结构化地址数据,想要从中快速地提取分级地址、联系人、电话等,简直就是不可能完成的任务。 即使费九牛二虎之力写一个处理程序,也经不起国家统计局对地区信息的调整。到现在我还清楚地记得,当北京亦庄地区被命名为北京经济开发区时,我和小伙伴们通宵达旦修正系统中地址信息地狼狈样子…… 那么,有没有办法能快速解决者地址提取问题呢? 你猜的没错,确实有,那就是 —— addressrec

地址分析师

addressrec 是一种基于 Python 的地址解析库,它可以将纷繁复杂的地址信息变成结构化的数据。 它基于 JioNLP 地址解析工具以及国家统计局发布的最新行政区划数据(地址库:2020年国家统计局行政区划[1]),结合 jieba 分词技术与 Levenshtein 字符串相似度算法来处理和解析地址信息。 在线体验 colab[2] 提供了一个简单的演示,表明地址解析是多么轻松简单。 addressrec 的作者是王志超[3]。 项目地址:https://github.com/wzc570738205/smartParsePro-py

安装 addressrec

为了使用 addressrec,你需要确保你的 Python 版本为 3.8 或更高:

代码语言:javascript
复制
pip3 install addressrec

解析如魔法

addressrec 提供了简单而强大的接口来处理地址解析。下面是一个基本示例,演示如何使用 addressrec 来从一个文本字符串中识别出地址组件。

基本使用
代码语言:javascript
复制
import addressrec

result = addressrec.run(
    '王志超 029-68216000 新疆维吾尔自治区乌鲁木齐市沙依巴克区西虹东路 463 号',
    True, # 可不传默认true 指定参数town_village(bool),可获取乡镇、村、社区两级详细地名  
    False # 可不传默认false 指定参数change2new(bool)可自动将旧地址转换为新地址
)
print(result)

运行上面的代码,得到的结果会是一个结构化的字典,像这样:

代码语言:javascript
复制
{
    "city": "乌鲁木齐市",
    "county": "沙依巴克区",
    "detail": "西虹东路 463 号",
    "name": "王志超",
    "phone": "029-68216000",
    "province": "新疆维吾尔自治区",
    "town": "",
    "village": ""
}
API 化

如果你想将地址解析的功能集成到你的 web 服务中,addressrec 也提供了相应的方法。 以下是用 Flask 创建一个简单 Web 服务的示例:

代码语言:javascript
复制
from flask import Flask, request, jsonify
import addressrec

app = Flask(__name__)

@app.route('/smart_address', methods=['POST'])
def handle_smart_address():
    data = request.get_json()

    # 获取请求数据 
    text = data.get('text', '')
    town_village = data.get('town_village', True)
    change2new = data.get('change2new', False)

    # 运行地址解析 
    result = addressrec.run(text, town_village, change2new)

    if result:
        return jsonify(result)
    else:
        return jsonify({"error": "Failed to process the request"}), 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=3000)

请求数据:

代码语言:javascript
复制
URL: `http://127.0.0.1:3000/smart_address`
METHOD: 'POST'
BODY:
{
    "text":"马云,陕西省西安市雁塔区丈八沟街道高新四路高新大都荟  13593464918",
    "town_village": true, //
"change2new": false //可不传默认false 指定参数change2new(bool)可自动将旧地址转换为新地址
}

识别结果:

代码语言:javascript
复制
{
    "city": "西安市",
    "county": "雁塔区",
    "detail": "高新四路高新大都荟",
    "name": "马云",
    "phone": " 13593464918",
    "province": "陕西省",
    "town": "丈八沟街道",
    "village": ""
}

实践环节

作为一个 hands-on 的教程,不如我们动手试试吧!以下是几个练习建议:

  1. 尝试使用 addressrec 解析你家附近的某个地址,说不定有惊喜哦!
  2. 创建一个简单的 Web 表单,通过它接收用户输入的地址,然后使用 addressrec 进行解析。
  3. 思考如何将解析结果用于地图标记或其他地理信息服务。

参考资料 [1] 2020年国家统计局行政区划: http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020 [2] colab: https://colab.research.google.com/drive/1AQ4UAT8N6KeZCSNXfKmrlCaVyah72bKy#scrollTo=gIU_U088qX-g [3] 项目作者 王志超: https://github.com/wzc570738205

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 地址分析师
  • 安装 addressrec
  • 解析如魔法
    • 基本使用
      • API 化
      • 实践环节
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com