简介
一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块。
举个例子:
["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区"]
↓ 转换
|省 |市 |区 |地址 |
|上海市|上海市|徐汇区|虹漕路461号58号楼5楼 |
|福建省|泉州市|洛江区|万安塘西工业区 |
注:“地址”列代表去除了省市区之后的具体地址
安装说明
代码目前仅仅支持python3
pip install cpca
注:cpca是chinese province city area的缩写
常见安装错误:
有的朋友在我的博客中反映他们在使用的时候会报如下错误:
ModuleNotFoundError: No module named 'jieba'
可能是因为某种原因,依赖未能成功的安装上去,这个时候则需要手动使用pip install jieba命令进行安装。
如果觉得本模块对你有用的话,施舍个star,谢谢。
中国三级行政区划分(参考自百度百科)
行政区级别
一级行政区(省级行政区)
34个(23个省、5个自治区、4个直辖市、2个特别行政区)
二级行政区(地级行政区)
334个(294个地级市、7个地区、30个自治州、3个盟)
三级行政区(县级行政区)
2876个(987个市辖区、363个县级市、1355个县、117自治县、49个旗、3个自治旗、1个特区、1个林区)
特点
基于jieba分词进行匹配,同时加入了一些额外的校验匹配逻辑
因为jieba分词本身有时候会分错,所以引入了全文匹配的模式,这种模式下能够提高准确率,但会导致性能降低,关于如何开启这个模式见下面的使用文档或者 issue #11
如果地址数据比较脏的,不能指望依靠这个模块达到100%的准确,本模块只能保证尽可能地提取信息,如果想要达到100%准确率的话,最好在匹配完后再人工核验一下
自带完整的省,市,区三级地名及其经纬度的数据
支持自定义省,市,区映射
输出的是基于pandas的DataFrame类型的表结构,易于理解和使用
封装了简单的绘图功能,可以很方便地进行简单的数据可视化
MIT 授权协议
Get Started
分词模式:
本模块中最主要的方法是cpca.transform,该方法可以输入任意的可迭代类型(如list,pandas的Series类型等),然后将其转换为一个DataFrame,下面演示一个最为简单的使用方法:
location_str = ["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区", "朝阳区北苑华贸城"]
from cpca import *
df = transform(location_str)
df
输出的结果为:
区 市 省 地址
0 徐汇区 上海市 上海市 虹漕路461号58号楼5楼
1 洛江区 泉州市 福建省 万安塘西工业区
2 朝阳区 北京市 北京市 北苑华贸城
注:程序输出的df是一个Pandas的DataFrame类型变量,DataFrame可以非常轻易地转化为csv或者excel文件,如果你对DataFrame不熟悉的话,可以参考Pandas的官方文档:http://pandas.pydata.org/pandas-docs/version/0.20/dsintro.html#dataframe
,或者往下翻到"示例与测试用例"大标题,那里我也展示了DataFrame的拼接与转换成csv文件的操作。
默认情况下transform方法的cut参数为True,即采用分词匹配的方式,这种方式速度比较快,但是准确率可能会比较低,如果追求准确率而不追求速度的话,建议将cut设为False(全文模式),具体见下一小节。
尝试着对代码稍加修改(其实就是将transform方法的umap参数置为空字典):
location_str = ["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区", "朝阳区北苑华贸城"]
from cpca import *
df = transform(location_str, umap={}