Python實(shí)現(xiàn)識(shí)別文字中的省市區(qū)并繪圖
在做NLP(自然語(yǔ)言處理)相關(guān)任務(wù)時(shí),經(jīng)常會(huì)遇到需要識(shí)別并提取省、城市、行政區(qū)的需求。雖然我們自己通過(guò)關(guān)鍵詞表一個(gè)個(gè)查找也能實(shí)現(xiàn)提取目的,但是需要先搜集省市區(qū)關(guān)鍵詞表,相對(duì)而言比較繁瑣。
今天給大家介紹一個(gè)模塊,你只需要把字符串傳遞給這個(gè)模塊,他就能給你返回這個(gè)字符串內(nèi)的省、市、區(qū)關(guān)鍵詞,并能給你在圖片上標(biāo)注起來(lái),它就是 Cpca 模塊。
1.準(zhǔn)備
開(kāi)始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒(méi)有,可以訪問(wèn)這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。
(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda,它內(nèi)置了Python和pip.
(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn)
請(qǐng)選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開(kāi) Cmd (開(kāi)始-運(yùn)行-CMD)。
2. MacOS 環(huán)境 打開(kāi) Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip?install?cpca
注意,目前 cpca 模塊僅支持Python3及以上版本。
在 windows 上可能會(huì)出現(xiàn)類似如下問(wèn)題:
Building wheel?for?pyahocorasick (setup.py) ... error
先閱讀原文去下載 Microsoft Visual C++ Build Tools 安裝VC++構(gòu)建工具,再重新 pip install cpca,即可解決問(wèn)題。
2.基本使用
通過(guò)兩行代碼就能實(shí)現(xiàn)最基本的省市區(qū)提?。?/p>
# 公眾號(hào): Python 實(shí)用寶典 # 2022/06/23 import?cpca location_str = [ ????"廣東省深圳市福田區(qū)巴丁街深南中路1025號(hào)新城大廈1層", ????"特斯拉上海超級(jí)工廠是特斯拉汽車首座美國(guó)本土以外的超級(jí)工廠,位于中華人民共和國(guó)上海市。", ????"三星堆遺址位于中國(guó)四川省廣漢市城西三星堆鎮(zhèn)的鴨子河畔,屬青銅時(shí)代文化遺址" ] df = cpca.transform(location_str) print(df)
效果如下:
省 市 區(qū) 地址 adcode
0 廣東省 深圳市 福田區(qū) 巴丁街深南中路1025號(hào)新城大廈1層 440304
1 上海市 None None 。310000
2 四川省 德陽(yáng)市 廣漢市 城西三星堆鎮(zhèn)的鴨子河畔,屬青銅時(shí)代文化遺址 510681
注意第三條的廣漢市,cpca 不僅識(shí)別到了語(yǔ)句中的縣級(jí)市廣漢市,還能自動(dòng)匹配到其代管市的德陽(yáng)市,不得不說(shuō)非常強(qiáng)大。
如果你想獲知程序是從字符串的那個(gè)位置提取出省市區(qū)名的,可以添加一個(gè) pos_sensitive=True 參數(shù):
# 公眾號(hào): Python 實(shí)用寶典 # 2022/06/23 import?cpca location_str = [ ????"廣東省深圳市福田區(qū)巴丁街深南中路1025號(hào)新城大廈1層", ????"特斯拉上海超級(jí)工廠是特斯拉汽車首座美國(guó)本土以外的超級(jí)工廠,位于中華人民共和國(guó)上海市。", ????"三星堆遺址位于中國(guó)四川省廣漢市城西三星堆鎮(zhèn)的鴨子河畔,屬青銅時(shí)代文化遺址" ] df = cpca.transform(location_str, pos_sensitive=True) print(df)
效果如下:
(base) G:\push\20220623>python 1.py
省 市 區(qū) 地址 adcode 省_pos 市_pos 區(qū)_pos
0 廣東省 深圳市 福田區(qū) 巴丁街深南中路1025號(hào)新城大廈1層 440304 0 3 6
1 上海市 None None 。310000 38 -1 -1
2 四川省 德陽(yáng)市 廣漢市 城西三星堆鎮(zhèn)的鴨子河畔,屬青銅時(shí)代文化遺址 510681 9 -1 12
它標(biāo)記出了識(shí)別到省、市、區(qū)的關(guān)鍵位置(index),當(dāng)然如果是德陽(yáng)市這種特殊的識(shí)別會(huì)被標(biāo)記為-1.
3.高級(jí)使用
它還可以從大段文本中批量識(shí)別多個(gè)地區(qū):
# 公眾號(hào): Python 實(shí)用寶典 # 2022/06/23 import?cpca long_text =?"對(duì)一個(gè)城市的評(píng)價(jià)總會(huì)包含個(gè)人的感情。如果你喜歡一個(gè)城市,很有可能是喜歡彼時(shí)彼地的自己。"\ ????"在廣州、香港讀過(guò)書(shū),工作過(guò),在深圳買過(guò)房、短暫生活過(guò),去北京出了幾次差。"\ ????"想重點(diǎn)比較一下廣州、深圳和香港,順帶說(shuō)一下北京。總的來(lái)說(shuō),覺(jué)得廣州舒適、"\ ????"香港精致、深圳年輕氣氛好、北京大氣又粗糙。答主目前選擇了廣州。" df = cpca.transform_text_with_addrs(long_text, pos_sensitive=True) print(df)
效果如下:
(base) G:\push\20220623>python 1.py
省 市 區(qū) 地址 adcode 省_pos 市_pos 區(qū)_pos
0 廣東省 廣州市 None 440100 -1 44 -1
1 香港特別行政區(qū) 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 香港特別行政區(qū) None None 810000 92 -1 -1
7 北京市 None None 110000 100 -1 -1
8 廣東省 廣州市 None 440100 -1 110 -1
9 香港特別行政區(qū) 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
不僅如此,模塊中還自帶一些簡(jiǎn)單繪圖工具,可以在地圖上將上面輸出的數(shù)據(jù)以熱力圖的形式畫(huà)出來(lái):
# 公眾號(hào): Python 實(shí)用寶典 # 2022/06/23 import?cpca from?cpca?import?drawer long_text =?"對(duì)一個(gè)城市的評(píng)價(jià)總會(huì)包含個(gè)人的感情。如果你喜歡一個(gè)城市,很有可能是喜歡彼時(shí)彼地的自己。"\ ????"在廣州、香港讀過(guò)書(shū),工作過(guò),在深圳買過(guò)房、短暫生活過(guò),去北京出了幾次差。"\ ????"想重點(diǎn)比較一下廣州、深圳和香港,順帶說(shuō)一下北京。總的來(lái)說(shuō),覺(jué)得廣州舒適、"\ ????"香港精致、深圳年輕氣氛好、北京大氣又粗糙。答主目前選擇了廣州。" df = cpca.transform_text_with_addrs(long_text, pos_sensitive=True) drawer.draw_locations(df[cpca._ADCODE],?"df.html")
運(yùn)行的時(shí)候可能會(huì)報(bào)這個(gè)錯(cuò):
(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_locations
import folium
ModuleNotFoundError: No module named 'folium'
使用pip安裝即可:
pip?install?folium
然后重新運(yùn)行代碼,會(huì)在當(dāng)前目錄下生成 df.html, 雙擊打開(kāi),效果如下:
怎么用,是不是感覺(jué)非常方便?以后地點(diǎn)的識(shí)別用這個(gè)模塊就完全夠了。
還有更多的細(xì)節(jié)你可以訪問(wèn)這個(gè)項(xiàng)目的Github主頁(yè)閱讀,該項(xiàng)目的README完全中文編寫(xiě),非常容易閱讀:
到此這篇關(guān)于Python實(shí)現(xiàn)識(shí)別文字中的省市區(qū)并繪圖的文章就介紹到這了,更多相關(guān)Python識(shí)別文字中省市區(qū)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 自動(dòng)監(jiān)控最新郵件并讀取的操作
這篇文章主要介紹了python 自動(dòng)監(jiān)控最新郵件并讀取的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03通過(guò)字符串導(dǎo)入 Python 模塊的方法詳解
這篇文章主要介紹了通過(guò)字符串導(dǎo)入 Python 模塊的方法詳解,本文通過(guò)實(shí)例結(jié)合,給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10Django中常用的查詢數(shù)據(jù)方法及查詢對(duì)象的條件詳解
在web 開(kāi)發(fā)過(guò)程中,Django 與后臺(tái)數(shù)據(jù)庫(kù)的交互是必不可少的一項(xiàng),也是實(shí)現(xiàn)業(yè)務(wù)邏輯所需數(shù)據(jù)的重要方式,這篇文章主要給大家介紹了關(guān)于Django中常用的查詢數(shù)據(jù)方法及查詢對(duì)象條件的相關(guān)資料,需要的朋友可以參考下2021-09-09Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊(duì)列解決小貓釣魚(yú)問(wèn)題
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊(duì)列解決小貓釣魚(yú)問(wèn)題,結(jié)合實(shí)例形式分析了Python使用隊(duì)列實(shí)現(xiàn)小貓釣魚(yú)游戲的算法操作技巧,代碼中備有較為詳盡的注釋便于讀者理解,需要的朋友可以參考下2017-12-12python自動(dòng)化實(shí)現(xiàn)登錄獲取圖片驗(yàn)證碼功能
這篇文章主要介紹了python自動(dòng)化實(shí)現(xiàn)登錄獲取圖片驗(yàn)證碼功能,本文通過(guò)實(shí)例截圖的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11python for循環(huán)內(nèi)輸出和外輸出方式
這篇文章主要介紹了python for循環(huán)內(nèi)輸出和外輸出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03Python使用matplotlib繪制多個(gè)圖形單獨(dú)顯示的方法示例
這篇文章主要介紹了Python使用matplotlib繪制多個(gè)圖形單獨(dú)顯示的方法,結(jié)合實(shí)例形式分析了matplotlib實(shí)現(xiàn)繪制多個(gè)圖形單獨(dú)顯示的具體操作技巧與注意事項(xiàng),代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下2018-03-03