0
点赞
收藏
分享

微信扫一扫

Python:使用 jionlp和cpca 实现国内地址文本解析


Python:使用 jionlp和cpca 实现国内地址文本解析_json


目录

  • 使用 jionlp解析国内地址文本
  • 使用 cpca 实现解析国内地址文本
  • 总结


使用 jionlp解析国内地址文本

jionlp: 中文 NLP 预处理、解析工具包,准确、高效、易用

  • github: https://github.com/dongrixinyu/JioNLP
  • 文档:http://www.jionlp.com/

使用示例

import json

import jionlp as jio

lst = [
    '四川省成都市武侯区红牌楼街19号红星大厦9楼2号',
    '杭州市滨江区网商路599号',
    '东城区和平里街道',
    '上海市徐汇区xx小区'
]

for text in lst:
    res = jio.parse_location(text)
    print(json.dumps(res, ensure_ascii=False, indent=2))

解析结果

{
  "province": "四川省",
  "city": "成都市",
  "county": "武侯区",
  "detail": "红牌楼街19号红星大厦9楼2号",
  "full_location": "四川省成都市武侯区红牌楼街19号红星大厦9楼2号",
  "orig_location": "四川省成都市武侯区红牌楼街19号红星大厦9楼2号"
}
{
  "province": "浙江省",
  "city": "杭州市",
  "county": "滨江区",
  "detail": "网商路599号",
  "full_location": "浙江省杭州市滨江区网商路599号",
  "orig_location": "杭州市滨江区网商路599号"
}
{
  "province": "北京市",
  "city": "北京市",
  "county": "东城区",
  "detail": "和平里街道",
  "full_location": "北京市东城区和平里街道",
  "orig_location": "东城区和平里街道"
}
{
  "province": "上海市",
  "city": "上海市",
  "county": "徐汇区",
  "detail": "xx小区",
  "full_location": "上海市徐汇区xx小区",
  "orig_location": "上海市徐汇区xx小区"
}

使用 cpca 实现解析国内地址文本

cpca:一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块

目前仅仅支持python3

github: https://github.com/DQinYuan/chinese_province_city_area_mapper

import json

import cpca

lst = [
    '四川省成都市武侯区红牌楼街19号红星大厦9楼2号',
    '杭州市滨江区网商路599号',
    '东城区和平里街道',
    '上海市徐汇区xx小区'
]

df = cpca.transform(lst)
print(json.dumps(df.to_dict(), ensure_ascii=False, indent=2))

省    市    区               地址  adcode
0  四川省  成都市  武侯区  红牌楼街19号红星大厦9楼2号  510107
1  浙江省  杭州市  滨江区          网商路599号  330108
2  北京市  市辖区  东城区            和平里街道  110101
3  上海市  市辖区  徐汇区             xx小区  310104

转为json数据

{
  "省": {
    "0": "四川省",
    "1": "浙江省",
    "2": "北京市",
    "3": "上海市"
  },
  "市": {
    "0": "成都市",
    "1": "杭州市",
    "2": "市辖区",
    "3": "市辖区"
  },
  "区": {
    "0": "武侯区",
    "1": "滨江区",
    "2": "东城区",
    "3": "徐汇区"
  },
  "地址": {
    "0": "红牌楼街19号红星大厦9楼2号",
    "1": "网商路599号",
    "2": "和平里街道",
    "3": "xx小区"
  },
  "adcode": {
    "0": "510107",
    "1": "330108",
    "2": "110101",
    "3": "310104"
  }
}

总结

通过比对,发现两者的解析结果相差不是太大

库名

star

JioNLP

2.9K

cpca

1.6K


举报

相关推荐

0 条评论