addr

package module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 4, 2021 License: MIT Imports: 4 Imported by: 0

README

收货地址智能解析(Go语言版)

1. 基本介绍

1.1 项目介绍

本项目包含2个功能

  • 把字符串解析成姓名、收货电话、邮编、身份证号、收货地址
  • 把收货地址解析成省、市、区县、街道地址

该项目采用的是统计特征分析,然后以最大的概率来匹配,得出大概率的解。因此只能解析中文的收货信息,不能保证100%解析成功,但是从生产环境的使用情况来看,解析成功率至少保持在99%以上,就算是百度基于人工智能的地址识别,经我实测,也是有一定的不能识别的情况。

纯Go语言版本采用hash map索引检索模式对正则提取出的关键词进行信息匹配,该版本将性能和时间损失最大化降低了,实测解析10000个地址时间消耗在1.1s左右(也就是说每解析一条地址大约耗时在0.11ms/条)

2. 使用说明

- golang版本 >= v1.11
  • Install

    • go get git8z1z0ap2wtcrj.superqr.cn/dev2/addr
      
  • 使用git克隆本项目

    • git clone https://git8z1z0ap2wtcrj.superqr.cn/dev2/addr.git
      
  • 行政索引树自动生成

    • cd /generate
      make all
      如需更新最新的行政信息,请自行修改/data下的json数据然后重新执行一遍以上命令
      
  • 使用示例

    • // 代码引入
      import (
      	"fmt"
      	"git8z1z0ap2wtcrj.superqr.cn/dev2/addr"
      )
      
      func main() {
      	address := addr.Smart("深圳市龙华区龙华街道1980科技文化产业园3栋317    张三    13800138000 518000 120113196808214821")
      
      	// 输出解析结果
      	fmt.Println(address.Name)     // 张三
      	fmt.Println(address.IdNumber) // 120113196808214821
      	fmt.Println(address.Mobile)   // 13800138000
      	fmt.Println(address.PostCode) // 518000
      	fmt.Println(address.Address)  // 深圳市龙华区龙华街道1980科技文化产业园3栋317
      	fmt.Println(address.Province) // 广东省
      	fmt.Println(address.City)     // 深圳市
      	fmt.Println(address.Region)   // 龙华区
      	fmt.Println(address.Street)   // 龙华街道1980科技文化产业园3栋317
      }
      

Documentation

Index

Constants

This section is empty.

Variables

View Source
var FilterWord = []string{"身份证号", "地址", "收货人", "收件人", "收货", "邮编", "电话", "身份证号码", "身份证号", "身份证", ":", ":", ";", ";", ",", ",", "。", "."}

FilterWord 需要过滤掉收货地址中的常用说明字符,排除干扰词

Functions

This section is empty.

Types

type Address

type Address struct {
	IdNumber string `json:"id_number"`
	Mobile   string `json:"mobile"`
	PostCode string `json:"post_code"`
	Name     string `json:"name"`
	Address  string `json:"address"`
	Province string `json:"province"`
	City     string `json:"city"`
	Region   string `json:"region"`
	Street   string `json:"street"`
}

func Decompose

func Decompose(info *Address, str string) *Address

Decompose 分离手机号(座机),身份证号,姓名,地址等信息

func Parse

func Parse(address *Address) *Address

Parse 智能解析出省市区+街道地址

func Smart

func Smart(str string) *Address

Smart 智能解析

Directories

Path Synopsis
Package areaMap 该文件是由go generate自动生成的,请勿直接修改代码!!! 如需更新请更新/data文件的数据源,然后在/generate下执行 make all Package areaMap 该文件是由go generate自动生成的,请勿直接修改代码!!! 如需更新请更新/data文件的数据源,然后在/generate下执行 make all Package areaMap 该文件是由go generate自动生成的,请勿直接修改代码!!! 如需更新请更新/data文件的数据源,然后在/generate下执行 make all
Package areaMap 该文件是由go generate自动生成的,请勿直接修改代码!!! 如需更新请更新/data文件的数据源,然后在/generate下执行 make all Package areaMap 该文件是由go generate自动生成的,请勿直接修改代码!!! 如需更新请更新/data文件的数据源,然后在/generate下执行 make all Package areaMap 该文件是由go generate自动生成的,请勿直接修改代码!!! 如需更新请更新/data文件的数据源,然后在/generate下执行 make all

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL