来源:Python实用宝典

在做NLP(自然语言处理)相关任务时,经常会遇到需要识别并提取省、城市、行政区的需求。虽然我们自己通过关键词表一个个查找也能实现提取目的,但是需要先搜集省市区关键词表,相对而言比较繁琐。

今天给大家介绍一个模块,你只需要把字符串传递给这个模块,他就能给你返回这个字符串内的省、市、区关键词,并能给你在图片上标注起来,它就是 Cpca 模块。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。

请选择以下任一种方式输入命令安装依赖
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install cpca

注意,目前 cpca 模块仅支持Python3及以上版本。

在 windows 上可能会出现类似如下问题:

Building wheel for pyahocorasick (setup.py) ... error

先阅读原文去下载 Microsoft Visual C++ Build Tools 安装VC++构建工具,再重新 pip install cpca,即可解决问题。

2.基本使用

通过两行代码就能实现最基本的省市区提取:

# 公众号: Python 实用宝典
# 2022/06/23import cpcalocation_str = ["广东省深圳市福田区巴丁街深南中路1025号新城大厦1层","特斯拉上海超级工厂是特斯拉汽车首座美国本土以外的超级工厂,位于中华人民共和国上海市。","三星堆遗址位于中国四川省广汉市城西三星堆镇的鸭子河畔,属青铜时代文化遗址"
]
df = cpca.transform(location_str)
print(df)

效果如下:

省 市 区 地址 adcode
0 广东省 深圳市 福田区 巴丁街深南中路1025号新城大厦1层 440304
1 上海市 None None 。310000
2 四川省 德阳市 广汉市 城西三星堆镇的鸭子河畔,属青铜时代文化遗址 510681

注意第三条的广汉市,cpca 不仅识别到了语句中的县级市广汉市,还能自动匹配到其代管市的德阳市,不得不说非常强大。

如果你想获知程序是从字符串的那个位置提取出省市区名的,可以添加一个 pos_sensitive=True 参数:

# 公众号: Python 实用宝典
# 2022/06/23import cpcalocation_str = ["广东省深圳市福田区巴丁街深南中路1025号新城大厦1层","特斯拉上海超级工厂是特斯拉汽车首座美国本土以外的超级工厂,位于中华人民共和国上海市。","三星堆遗址位于中国四川省广汉市城西三星堆镇的鸭子河畔,属青铜时代文化遗址"
]
df = cpca.transform(location_str, pos_sensitive=True)
print(df)

效果如下:

(base) G:\push\20220623>python 1.py省 市 区 地址 adcode 省_pos 市_pos 区_pos
0  广东省 深圳市 福田区 巴丁街深南中路1025号新城大厦1层 440304      0      3      6
1  上海市 None None 。310000     38     -1     -1
2  四川省 德阳市 广汉市 城西三星堆镇的鸭子河畔,属青铜时代文化遗址 510681      9     -1     12

它标记出了识别到省、市、区的关键位置(index),当然如果是德阳市这种特殊的识别会被标记为-1.

3.高级使用

它还可以从大段文本中批量识别多个地区:

# 公众号: Python 实用宝典
# 2022/06/23import cpcalong_text = "对一个城市的评价总会包含个人的感情。如果你喜欢一个城市,很有可能是喜欢彼时彼地的自己。"\"在广州、香港读过书,工作过,在深圳买过房、短暂生活过,去北京出了几次差。"\"想重点比较一下广州、深圳和香港,顺带说一下北京。总的来说,觉得广州舒适、"\"香港精致、深圳年轻气氛好、北京大气又粗糙。答主目前选择了广州。"
df = cpca.transform_text_with_addrs(long_text, pos_sensitive=True)
print(df)

效果如下:

(base) G:\push\20220623>python 1.py省 市 区 地址 adcode 省_pos 市_pos 区_pos
0       广东省 广州市 None     440100     -1     44     -1
1   香港特别行政区 None  None     810000     47     -1     -1
2       广东省 深圳市 None     440300     -1     58     -1
3       北京市 None  None     110000     71     -1     -1
4       广东省 广州市 None     440100     -1     86     -1
5       广东省 深圳市 None     440300     -1     89     -1
6   香港特别行政区 None  None     810000     92     -1     -1
7       北京市 None  None     110000    100     -1     -1
8       广东省 广州市 None     440100     -1    110     -1
9   香港特别行政区 None  None     810000    115     -1     -1
10      广东省 深圳市 None     440300     -1    120     -1
11      北京市 None  None     110000    128     -1     -1
12      广东省 广州市 None     440100     -1    143     -1

不仅如此,模块中还自带一些简单绘图工具,可以在地图上将上面输出的数据以热力图的形式画出来:

# 公众号: Python 实用宝典
# 2022/06/23import cpca
from cpca import drawerlong_text = "对一个城市的评价总会包含个人的感情。如果你喜欢一个城市,很有可能是喜欢彼时彼地的自己。"\"在广州、香港读过书,工作过,在深圳买过房、短暂生活过,去北京出了几次差。"\"想重点比较一下广州、深圳和香港,顺带说一下北京。总的来说,觉得广州舒适、"\"香港精致、深圳年轻气氛好、北京大气又粗糙。答主目前选择了广州。"
df = cpca.transform_text_with_addrs(long_text, pos_sensitive=True)
drawer.draw_locations(df[cpca._ADCODE], "df.html")

运行的时候可能会报这个错:

(base) G:\push\20220623>python 1.py
Traceback (most recent call last):File "1.py", line 12, in <module>drawer.draw_locations(df[cpca._ADCODE], "df.html")File "G:\Anaconda3\lib\site-packages\cpca\drawer.py", line 41, in draw_locationsimport folium
ModuleNotFoundError: No module named 'folium'

使用pip安装即可:

pip install folium

然后重新运行代码,会在当前目录下生成 df.html, 双击打开,效果如下:

怎么用,是不是感觉非常方便?以后地点的识别用这个模块就完全够了。

还有更多的细节你可以访问这个项目的Github主页阅读,该项目的README完全中文编写,非常容易阅读:

https://github.com/DQinYuan/chinese_province_city_area_mapper

Python 神器!自动识别文字中的省市区并绘图相关推荐

  1. Python 神器,自动识别文字中的省市区并绘图

    在做NLP(自然语言处理)相关任务时,经常会遇到需要识别并提取省.城市.行政区的需求.虽然我们自己通过关键词表一个个查找也能实现提取目的,但是需要先搜集省市区关键词表,相对而言比较繁琐. 今天给大家介 ...

  2. python --cpca(从文本中提取省市区)

    安装 pip install cpcawindows报错的话 c++构建工具补全下动态链接库 或 pip install cpca-fix(替代) github https://github.com/ ...

  3. python并且符号_Python如何从文字中分离标点符号

    所以我想用空格将文本与标点符号分开.Python如何从文字中分离标点符号 my_text = "!where??and!!or$$then:)" 我想要有一个! where ?? ...

  4. 利用Python实现自动识别图片文字 -- OCR

    文章目录 什么是OCR? 安装Tesseract-OCR和pytesseract 实现自动识别文字 什么是OCR? OCR,全称Optical Character Recognition ,中文释义为 ...

  5. 使用Python轻松识别音频中文字(Whisper)

    使用Python轻松识别音频中文字 一.前言 在开会或是讨论问题的时候,我们总有一些内容需要记录下来.但由于各种原因,我们无法做到全面细致的记录.事后我们可能需要补充这些细节性内容,而回放视频或是录音 ...

  6. pdf exe如何提取pdf文件_python应用:如何用python提取pdf文件中的文字

    从pdf中提取文字,相信很多人都干过这事,怎么在python中实现呢,今天带大家看看. 第一步导入库 import PyPDF2 第二步导入pdf文件 pdf_file =open('dataset/ ...

  7. python查找文字在图片中的位置_使用Python识别图片中的中/英文字

    鉴于有小伙伴咨询图片识别实现的方式,在这里给大家分享一下,并提供主要的接口. 1.准备账号 申请百度开发者平台, 获取图片文字识别, 申请地址: https://console.bce.baidu.c ...

  8. Python 利用百度文字识别 API 识别并提取图片中文字

    Python 利用百度文字识别 API 识别并提取图片中文字 利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字.首先需注册获取 API 调用的 ID 和 key,步骤如下: ...

  9. Python 利用百度文字识别验证码、文字、图片并提取图片中文字或数字

    Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 以下是代码实现, Python 利用百度文字识别验证码. ...

最新文章

  1. 软件工程--总作业(已经完成)
  2. java 配置文件 路径问题_java 配置文件的路径问题
  3. L3-2 至多删三个字符
  4. 轮播图的3个常见bug,即处理bug思路及其解决办法
  5. 关于显式量化和隐式量化的英文对照
  6. SQL Server 建库,表,约束(一)
  7. Halcon 第六章◆第6节:光学字符识别OCR
  8. CPU缓存侧信道攻击综述-Survey of CPU Cache-Based Side-Channel Attacks
  9. 半带滤波器 cic滤波器
  10. 红外小目标检测中ROC曲线的绘制
  11. global.php,深入理解PHP中的global
  12. ThinkPad电脑黑屏只显示鼠标
  13. Android指针时钟的实现代码
  14. java中的 输入 方法
  15. 直播播放器+html5,10款html5网页播放器推荐(总有一款适合你)
  16. 将unix文本文件格式转换为windows文 本文件的格式
  17. 【IoT】创业:智能硬件企业如何开始?
  18. mysql一段时间过后 无法连接_MYSQL连接一段时间不操作后出现异常的解决方案
  19. MIT6.828 lab1 exercise 23
  20. WinDebug 调试工具-0

热门文章

  1. win10切换输入法快捷键_怎么给电脑win10添加其他语言输入?例:日语,俄语
  2. mate 10android o主题,华为Mate 10 Pro体验:这才是全面屏手机该有的样子
  3. C/C++语言100题练习计划 88——猜数游戏(二分查找实现)
  4. 20180818牛客小白月赛6.A
  5. 外贸B2C独立站如何做?
  6. Magento2.1x常见报错处理
  7. 深度学习项目:泰坦尼克号生存预测【附完整源码】
  8. HDFS强制退出安全模式
  9. 管晓宏院士谈工业数据共享和分类分级管理
  10. 转载:通信里 星座图 到底是什么