<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在做NLP(自然語言處理)相關任務時,經常會遇到需要識別並提取省、城市、行政區的需求。雖然我們自己通過關鍵詞表一個個查詢也能實現提取目的,但是需要先蒐集省市區關鍵詞表,相對而言比較繁瑣。
今天給大家介紹一個模組,你只需要把字串傳遞給這個模組,他就能給你返回這個字串內的省、市、區關鍵詞,並能給你在圖片上標註起來,它就是 Cpca 模組。
開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,可以存取這篇文章:超詳細Python安裝指南 進行安裝。
(可選1) 如果你用Python的目的是資料分析,可以直接安裝Anaconda,它內建了Python和pip.
(可選2) 此外,推薦大家用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,即可解決問題。
通過兩行程式碼就能實現最基本的省市區提取:
# 公眾號: Python 實用寶典 # 2022/06/23 import cpca location_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/23 import cpca location_str = [ "廣東省深圳市福田區巴丁街深南中路1025號新城大廈1層", "特斯拉上海超級工廠是特斯拉汽車首座美國本土以外的超級工廠,位於中華人民共和國上海市。", "三星堆遺址位於中國四川省廣漢市城西三星堆鎮的鴨子河畔,屬青銅時代文化遺址" ] df = cpca.transform(location_str, pos_sensitive=True) print(df)
效果如下:
(base) G:push20220623>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.
它還可以從大段文字中批次識別多個地區:
# 公眾號: Python 實用寶典 # 2022/06/23 import cpca long_text = "對一個城市的評價總會包含個人的感情。如果你喜歡一個城市,很有可能是喜歡彼時彼地的自己。" "在廣州、香港讀過書,工作過,在深圳買過房、短暫生活過,去北京出了幾次差。" "想重點比較一下廣州、深圳和香港,順帶說一下北京。總的來說,覺得廣州舒適、" "香港精緻、深圳年輕氣氛好、北京大氣又粗糙。答主目前選擇了廣州。" df = cpca.transform_text_with_addrs(long_text, pos_sensitive=True) print(df)
效果如下:
(base) G:push20220623>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/23 import cpca from cpca import drawer long_text = "對一個城市的評價總會包含個人的感情。如果你喜歡一個城市,很有可能是喜歡彼時彼地的自己。" "在廣州、香港讀過書,工作過,在深圳買過房、短暫生活過,去北京出了幾次差。" "想重點比較一下廣州、深圳和香港,順帶說一下北京。總的來說,覺得廣州舒適、" "香港精緻、深圳年輕氣氛好、北京大氣又粗糙。答主目前選擇了廣州。" df = cpca.transform_text_with_addrs(long_text, pos_sensitive=True) drawer.draw_locations(df[cpca._ADCODE], "df.html")
執行的時候可能會報這個錯:
(base) G:push20220623>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:Anaconda3libsite-packagescpcadrawer.py", line 41, in draw_locations
import folium
ModuleNotFoundError: No module named 'folium'
使用pip安裝即可:
pip install folium
然後重新執行程式碼,會在當前目錄下生成 df.html, 雙擊開啟,效果如下:
怎麼用,是不是感覺非常方便?以後地點的識別用這個模組就完全夠了。
還有更多的細節你可以存取這個專案的Github主頁閱讀,該專案的README完全中文編寫,非常容易閱讀:
到此這篇關於Python實現識別文字中的省市區並繪圖的文章就介紹到這了,更多相關Python識別文字中省市區內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45