文章目录
前言
-
行政区划信息抽取算法,简称区划抽取
-
本文区划仅针对中国(缺港澳台,2020年国家统计局更新,2019年数据):
http://www.stats.gov.cn/tjsj/tjbz/
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/index.html

必备常识
- 行政区划:是行政区域划分的简称,是国家为了进行分级管理而实行的区域划分。
| 等级 | 详情(2019年,每年会有更新,以更新为准,不要参考此处) | 合计 |
|---|---|---|
| 省级行政区 | 23个省、5个自治区、4个直辖市、2个特别行政区 | 34 |
| 地级行政区 | 293个地级市、7个地区、30个自治州、3个盟 | 333 |
| 县级行政区 | 965个市辖区、387个县级市、1323个县、117个自治县、49个旗、3个自治旗、1个特区、1个林区 | 2846 |
| 乡级行政区 | 8516个街道、20975个镇、8122个乡、966个民族乡、153个苏木、1个民族苏木、1个县辖区 | 38734 |
- 省级行政区划
| 区划代码(前2位) | 省级行政区 | 简称 | 行政中心 | 区划代码(前2位) | 省级行政区 | 简称 | 行政中心 |
|---|---|---|---|---|---|---|---|
| 11 | 北京市 | 京 | 北京 | 43 | 湖南省 | 湘 | 长沙 |
| 12 | 天津市 | 津 | 天津 | 44 | 广东省 | 粤 | 广州 |
| 13 | 河北省 | 冀 | 石家庄 | 45 | 广西壮族自治区 | 桂 | 南宁 |
| 14 | 山西省 | 晋 | 太原 | 46 | 海南省 | 琼 | 海口 |
| 15 | 内蒙古自治区 | 内蒙古 | 呼和浩特 | 50 | 重庆市 | 渝 | 重庆 |
| 21 | 辽宁省 | 辽 | 沈阳 | 51 | 四川省 | 川、蜀 | 成都 |
| 22 | 吉林省 | 吉 | 长春 | 52 | 贵州省 | 贵、黔 | 贵阳 |
| 23 | 黑龙江省 | 黑 | 哈尔滨 | 53 | 云南省 | 云、滇 | 昆明 |
| 31 | 上海市 | 沪 | 上海 | 54 | 西藏自治区 | 藏 | 拉萨 |
| 32 | 江苏省 | 苏 | 南京 | 61 | 陕西省 | 陕、秦 | 西安 |
| 33 | 浙江省 | 浙 | 杭州 | 62 | 甘肃省 | 甘、陇 | 兰州 |
| 34 | 安徽省 | 皖 | 合肥 | 63 | 青海省 | 青 | 西宁 |
| 35 | 福建省 | 闽 | 福州 | 64 | 宁夏回族自治区 | 宁 | 银川 |
| 36 | 江西省 | 赣 | 南昌 | 65 | 新疆维吾尔自治区 | 新 | 乌鲁木齐 |
| 37 | 山东省 | 鲁 | 济南 | 71 | 台湾省 | 台 | 台北 |
| 41 | 河南省 | 豫 | 郑州 | 81 | 香港特别行政区 | 港 | 香港 |
| 42 | 湖北省 | 鄂 | 武汉 | 82 | 澳门特别行政区 | 澳 | 澳门 |
极简代码示例
from jieba.posseg import dt # 带词性分词
dt.tokenizer.add_word('禅城区', 9, 'ns') # 地名词库加载
text = '''
广东省佛山市南海区桂城街道地处南海区东南部,西部与禅城区祖庙街道、南部与禅城区石湾镇街道、顺德区陈村镇接壤
'''.strip()
print(set(i.word for i in dt.cut(text)if i.flag == 'ns')) # 带词性分词
-
print
- {‘顺德区’, ‘佛山市’, ‘南海区’, ‘广东省’, ‘桂城’, ‘禅城区’, ‘石湾镇’}
特殊数据处理
歧义名称
不知所云的名称,直接抛弃
exclusion = {
'市辖区', '县', '省直辖县级行政区划'}
例如【郊区】一词有歧义,可用【阳泉市郊区、佳木斯市郊区、铜陵市郊区】来替代
exclusion = {
'城区', '郊区', '矿区', '东区', '西区'}
重名
- 省级和市级的行政区划没有重名,区级和县级的行政区划有重名,遇到重名要进一步从文本中查找其上级区划来消除歧义
消歧方法1:层级查找(荐给Java用)


本文深入探讨中国行政区划信息抽取算法,涵盖区划代码、重名消歧、特殊数据处理及代码示例,适用于Python与Java开发者。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



