0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Cpca 模塊:自動識別文字中的省市區(qū)并繪圖

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-21 11:26 ? 次閱讀

在做NLP(自然語言處理)相關(guān)任務(wù)時,經(jīng)常會遇到需要識別并提取省、城市、行政區(qū)的需求。雖然我們自己通過關(guān)鍵詞表一個個查找也能實現(xiàn)提取目的,但是需要先搜集省市區(qū)關(guān)鍵詞表,相對而言比較繁瑣。

今天給大家介紹一個模塊,你只需要把字符串傳遞給這個模塊,他就能給你返回這個字符串內(nèi)的省、市、區(qū)關(guān)鍵詞,并能給你在圖片上標注起來,它就是 Cpca 模塊。

1.準備

開始之前,你要確保Pythonpip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南 進行安裝。

**(可選1) **如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點:Python 編程的最好搭檔—VSCode 詳細指南。

請選擇以下任一種方式輸入命令安裝依賴

  1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。
  2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install cpca

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

在 windows 上可能會出現(xiàn)類似如下問題:

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

先閱讀原文去下載 Microsoft Visual C++ Build Tools 安裝VC++構(gòu)建工具,再重新 pip install cpca,即可解決問題。

2.基本使用

通過兩行代碼就能實現(xiàn)最基本的省市區(qū)提?。?/p>

# 公眾號: Python 實用寶典
# 2022/06/23

import cpca

location_str = [
    "廣東省深圳市福田區(qū)巴丁街深南中路1025號新城大廈1層",
    "特斯拉上海超級工廠是特斯拉汽車首座美國本土以外的超級工廠,位于中華人民共和國上海市。",
    "三星堆遺址位于中國四川省廣漢市城西三星堆鎮(zhèn)的鴨子河畔,屬青銅時代文化遺址"
]
df = cpca.transform(location_str)
print(df)

效果如下:

省 市 區(qū) 地址 adcode
0 廣東省 深圳市 福田區(qū) 巴丁街深南中路1025號新城大廈1440304
1 上海市 None None310000
2 四川省 德陽市 廣漢市 城西三星堆鎮(zhèn)的鴨子河畔,屬青銅時代文化遺址 510681

注意第三條的廣漢市,cpca 不僅識別到了語句中的縣級市廣漢市,還能自動匹配到其代管市的德陽市,不得不說非常強大。

如果你想獲知程序是從字符串的那個位置提取出省市區(qū)名的,可以添加一個 pos_sensitive=True 參數(shù):

# 公眾號: Python 實用寶典
# 2022/06/23

import cpca

location_str = [
    "廣東省深圳市福田區(qū)巴丁街深南中路1025號新城大廈1層",
    "特斯拉上海超級工廠是特斯拉汽車首座美國本土以外的超級工廠,位于中華人民共和國上海市。",
    "三星堆遺址位于中國四川省廣漢市城西三星堆鎮(zhèn)的鴨子河畔,屬青銅時代文化遺址"
]
df = cpca.transform(location_str, pos_sensitive=True)
print(df)

效果如下:

(base) G:push20220623 >python 1.py
     省 市 區(qū) 地址 adcode 省_pos 市_pos 區(qū)_pos
0  廣東省 深圳市 福田區(qū) 巴丁街深南中路1025號新城大廈1440304      0      3      6
1  上海市 None None 。310000     38     -1     -1
2  四川省 德陽市 廣漢市 城西三星堆鎮(zhèn)的鴨子河畔,屬青銅時代文化遺址 510681      9     -1     12

它標記出了識別到省、市、區(qū)的關(guān)鍵位置(index),當然如果是德陽市這種特殊的識別會被標記為-1.

3.高級使用

它還可以從大段文本中批量識別多個地區(qū):

# 公眾號: Python 實用寶典
# 2022/06/23

import cpca

long_text = "對一個城市的評價總會包含個人的感情。如果你喜歡一個城市,很有可能是喜歡彼時彼地的自己。"
    "在廣州、香港讀過書,工作過,在深圳買過房、短暫生活過,去北京出了幾次差。"
    "想重點比較一下廣州、深圳和香港,順帶說一下北京??偟膩碚f,覺得廣州舒適、"
    "香港精致、深圳年輕氣氛好、北京大氣又粗糙。答主目前選擇了廣州。"
df = cpca.transform_text_with_addrs(long_text, pos_sensitive=True)
print(df)

效果如下:

(base) G:push20220623 >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

不僅如此,模塊中還自帶一些簡單繪圖工具,可以在地圖上將上面輸出的數(shù)據(jù)以熱力圖的形式畫出來:

# 公眾號: Python 實用寶典
# 2022/06/23

import cpca
from cpca import drawer

long_text = "對一個城市的評價總會包含個人的感情。如果你喜歡一個城市,很有可能是喜歡彼時彼地的自己。"
    "在廣州、香港讀過書,工作過,在深圳買過房、短暫生活過,去北京出了幾次差。"
    "想重點比較一下廣州、深圳和香港,順帶說一下北京??偟膩碚f,覺得廣州舒適、"
    "香港精致、深圳年輕氣氛好、北京大氣又粗糙。答主目前選擇了廣州。"
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, 雙擊打開,效果如下:

圖片

怎么用,是不是感覺非常方便?以后地點的識別用這個模塊就完全夠了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2613

    瀏覽量

    47012
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    566

    瀏覽量

    20384
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    797

    瀏覽量

    30929
  • 數(shù)據(jù)分析
    +關(guān)注

    關(guān)注

    2

    文章

    1393

    瀏覽量

    33909
  • CPCA
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    5924
收藏 人收藏

    評論

    相關(guān)推薦

    如何實現(xiàn)串口的自動識別

    用visa設(shè)計串口通信程序每次都得選擇串口,請問有沒有哪位大俠會設(shè)計能夠自動識別串口的程序??謝謝了~
    發(fā)表于 03-23 22:48

    求助帖 labview自動識別

    自動識別 ,不想直接在前面板組合框輸入,因為如果表格的A和B變成C和D的話就不匹配了,想實現(xiàn)自動識別。問題是組合框是字符串類型,A,B形成了一個一維數(shù)組,怎么辦?。?!求助
    發(fā)表于 04-19 14:34

    LabVIEW怎么自動識別IMEI條碼

    公司的移動設(shè)備產(chǎn)品條碼號是IMEI(15位)類型的,想用labview通過視頻采集回圖像,然后通過圖像處理自動得到IMEI條碼號,而labview里面的條碼號識別的是13位的國際碼,這15位的IMEI條碼號怎么自動識別,哪個大神
    發(fā)表于 03-18 13:24

    請問USB自動識別芯片RH7901是怎樣自動識別充電設(shè)備的?

    控制IC,可自動識別充電設(shè)備類型,通過對應的USB充電協(xié)議與設(shè)備握手,使之獲得最大充電電流,在保護充電設(shè)備的前提下節(jié)省充電時間。RH7902 雙端口控制功能(RH7902):可同時獨立支持兩路USB
    發(fā)表于 05-22 14:15

    車輛自動識別稱重系統(tǒng)的工作原理

    車輛自動識別稱重系統(tǒng)的工作原理車輛自動識別稱重系統(tǒng)組成車輛自動識別稱重系統(tǒng)典型方案示意圖車輛自動識別稱重系統(tǒng)給用戶帶來的利益
    發(fā)表于 03-01 09:31

    車輛自動識別稱重系統(tǒng)是怎樣組成的?

    車輛自動識別稱重系統(tǒng)的工作原理是什么?車輛自動識別稱重系統(tǒng)是怎樣組成的?
    發(fā)表于 05-13 07:02

    如何實現(xiàn)系統(tǒng)自動識別切斷電池供電的呢?

    便攜式設(shè)備經(jīng)常會存在USB供電和鋰電池供電并存的情況,那么當USB插入供電的時候如何實現(xiàn)系統(tǒng)自動識別切斷電池供電的呢?帶著這個問題我們來看下今天的分享內(nèi)容。如下電路主要是實現(xiàn)USB插入自...
    發(fā)表于 01-26 07:40

    智能交通系統(tǒng)的車牌自動識別技術(shù)有哪些應用呢

    治安卡口等場合,成為研究的熱點。車牌識別技術(shù)是利用計算機等輔助設(shè)備進行的自動汽車牌照自動識別就是在裝備了數(shù)字攝像設(shè)備和計算機信息管理系統(tǒng)等軟硬件平臺的基礎(chǔ)之上,通過對車輛圖像的采集,采用先進的圖像處理、模式
    發(fā)表于 03-02 06:30

    Python pacp模塊——自動識別文字省市區(qū)繪圖

    省市區(qū)之后的具體地址也可以將大段文本中所有提到的地址提取出來,并且自動將相鄰的存在所屬關(guān)系的地址歸并到一條記錄(0.5.5版本新功能):"分店位于徐匯區(qū)虹漕路461號58號樓5樓
    發(fā)表于 06-27 17:20

    STLink是怎么自動識別STM32芯片型號的?

    這個自動識別機制是怎么樣做到的
    發(fā)表于 10-27 08:32

    基于射頻技術(shù)的車牌自動識別裝置設(shè)計

    基于射頻技術(shù)提出了一種新型車牌自動識別裝置的設(shè)計思路,詳細闡述了該裝置的工作原理、硬件電路及軟件的設(shè)計。利用單片機控制射頻讀寫模塊,讀取車牌的數(shù)據(jù)信息,可以通過
    發(fā)表于 11-15 11:32 ?173次下載
    基于射頻技術(shù)的車牌<b class='flag-5'>自動識別</b>裝置設(shè)計

    Python pacp模塊自動識別文字省市區(qū)并將其繪圖

    |市 |區(qū) |地址 ||上海市|上海市|徐匯區(qū)|虹漕路461號58號樓5樓 ||福建省|泉州市|洛江區(qū)|萬安塘西工業(yè)區(qū) | ? 注:“地址”列代表去除了省市區(qū)之后的具體地址 也可以將大段文本中所有提到的地址提取出來,并且自動將相鄰的存在所屬關(guān)系的地址歸并到一條記錄
    的頭像 發(fā)表于 06-27 17:19 ?2724次閱讀

    OCR如何自動識別圖片文字

    OCR 是光學字符識別(英語:Optical Character Recognition,OCR)是指對文本資料的圖像文件進行分析識別處理,獲取文字及版面信息的過程。 很早之前就有同學在公眾號后臺
    的頭像 發(fā)表于 10-31 16:45 ?638次閱讀
    OCR如何<b class='flag-5'>自動識別</b>圖片<b class='flag-5'>文字</b>

    數(shù)電票試點擴圍至36個省市區(qū) 百望云解決方案助力企業(yè)數(shù)電升級

    省市區(qū)(含計劃單列市)已全面開展數(shù)電票試點。 對于企業(yè)而言,這是一次系統(tǒng)升級的最好契機。 一方面,數(shù)電票的開票試點和用票試點已在36個省市區(qū)全面推廣,這使多數(shù)企業(yè)無須再顧慮各地試點步調(diào)不一致的問題,盡快上線數(shù)電票系統(tǒng),就能盡早享受
    的頭像 發(fā)表于 11-29 17:45 ?439次閱讀
    數(shù)電票試點擴圍至36個<b class='flag-5'>省市區(qū)</b> 百望云解決方案助力企業(yè)數(shù)電升級

    水位自動識別攝像機

    管理等方面提供有力支持。優(yōu)勢與特點水位自動識別攝像機是一種結(jié)合了攝像監(jiān)控技術(shù)和圖像識別技術(shù)的設(shè)備,它能夠通過拍攝、分析水面影像,自動識別水位的高低,實時上傳數(shù)據(jù)到監(jiān)測
    的頭像 發(fā)表于 07-31 10:34 ?208次閱讀
    水位<b class='flag-5'>自動識別</b>攝像機