python編程之製做省市縣名稱字典

在失蹤兒童信息保存在本地以後,有一個字段是失蹤地點,字段內容一般比較詳細,具體到了失蹤的街道或者村,我打算經過某種方法將失蹤地點中的省、市、縣/區三級地址提取出來。php

肯定分詞技術

知道要幹什麼以後,那就將這個「某種方法」肯定下來,根據以往的知識積累,利用分詞的原理來作,可能會更簡單。此次就不用php來寫了,換成python,在個人電腦上已經安裝了python的開發環境,在python下使用的分詞組件,搜索了一下,jieba用的比較多,並且調用也很是的容易。python

準備字典文件

爲了更加準確的將失蹤地址中的省、市、縣三級單位提取出來,最好可以直接以省、市、縣、區的名稱爲字典,這樣經過分詞99%以上的詞都能準確的切分出來。
在網上搜索發現,根據最新的國家統計區位碼之做的現成的字典文件,並無。可是有同窗以前開發過爬蟲將這些區位關係存在了mysql數據庫,而且在網上有他放出來的sql備份文件,下載下來恢復到數據庫中便可。
這個文件包含70多萬行數據,在導入數據庫的過程大約花了十來分鐘。數據表以下:
圖片描述mysql

所以,還須要將數據表中province_name,city_name,county_name提取出來便可,逐行存入文件就成爲可使用的字典文件。sql

import pymysql

class AnManMysql:
    phost = '127.0.0.1'
    pyuer = 'root'
    password = '123456'
    database = 'anman_org'
    def pyMyConnection(phost,pyuser,password,database):
        db = pymysql.connect(phost,pyuser,password,database,charset="utf8")
        # cursor = db.cursor()
        return db

    # 導出省市縣鎮村字典
    def getDict(db):
        cursor = db.cursor()
        cursor.execute("select distinct province_name from j_position")
        data = cursor.fetchall()
        # 打開字典文件my.dict
        fo = open("my.dict","w+")
        for da in data:
            print(da[0])
            fo.seek(0,2)
            fo.write(da[0]+"\n")
        print(len(data))
        cursor.execute("select distinct city_name from j_position")
        data = cursor.fetchall()
        for da in data:
            print(da[0])
            fo.seek(0, 2)
            fo.write(da[0] + "\n")
        print(len(data))
        cursor.execute("select distinct county_name from j_position")
        data = cursor.fetchall()
        for da in data:
            print(da[0])
            fo.seek(0, 2)
            fo.write(da[0] + "\n")
        print(len(data))
        cursor.execute("select distinct town_name from j_position")
        data = cursor.fetchall()
        for da in data:
            print(da[0])
            fo.seek(0, 2)
            fo.write(da[0] + "\n")
        print(len(data))
        # cursor.execute("select distinct village_name,village_id from j_position")
        # data = cursor.fetchall()
        # for da in data:
        #     print(da[0])
        #     print(da[1])
        #     fo.seek(0, 2)
        #     fo.write(da[0] + "\n")
        # print(len(data))
        fo.close()

在python裏新建一個類,增長一個方法,打開一個字典文件,逐個從數據庫中distinct字段,而後逐行追加到字典文件中。數據庫

cursor = AnManMysql.pyMyConnection(AnManMysql.phost,AnManMysql.pyuer,AnManMysql.password,AnManMysql.database)
AnManMysql.getDict(cursor)

最後再來看看獲得的字典文件

圖片描述

相關文章
相關標籤/搜索