Code Monkey home page Code Monkey logo

addr's Introduction

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

1. 基本介绍

1.1 功能

项目内含2个功能

  • 把字符串解析成姓名、电话、邮编、身份证号、收货地址
  • 把收货地址再解析成省、市、区县、街道地址
  • 支持虚拟手机号(美团、饿了吗等)更新日期:2022-11-15

该项目仍然采用的是统计特征分析,以最大的概率来匹配,得出大概率的解。是根据PHP的addrss_prob版本改写优化而来,解析成功率在98%以上。

1.2 性能

Go语言版本采用hash map索引检索模式,对关键词进行匹配,将性能提升到了最高。实测解析10000个地址时间消耗在600ms左右(一条耗时约:0.06ms/条,即1s可解析约1.67w条),性能非常不错。相比纯PHP版本,性能提升近80倍。

1.3 特别感谢

因为工作繁忙,没有时间重头到尾来实现go语言的版本,在关键点的解析省、市、区的部分以及最后的梳理校订,cxy-chenxuanyu同学贡献了智慧和代码,再次特别感谢,欢迎围观。

1.4 Star History

Star History Chart

2. 使用说明

 golang版本 >= v1.11
  • Install

    • go get github.com/pupuk/addr
      
  • 使用git克隆本项目

    • git clone https://github.com/pupuk/addr.git
      
  • 索引树自动生成

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

package main

import (
	"fmt"

	"github.com/pupuk/addr"
)

func main() {
	parse := addr.Smart("张三 13800138000 龙华区龙华街道1980科技文化产业园3栋308 身份证120113196808214821")

	// 输出解析结果
	fmt.Println(parse.Name)     // 张三
	fmt.Println(parse.IdNumber) // 120113196808214821
	fmt.Println(parse.Mobile)   // 13800138000
	fmt.Println(parse.PostCode) // 570100
	fmt.Println(parse.Province) // 广东省
	fmt.Println(parse.City)     // 深圳市
	fmt.Println(parse.Region)   // 龙华区
	fmt.Println(parse.Street)   // 龙华街道1980科技文化产业园3栋317
	fmt.Println(parse.Address)  // 深圳市龙华区龙华街道1980科技文化产业园3栋317
}
  • 构建HTTP服务端DEMO(使用fiber,gin类似,几行代码即可构建一个解析服务)
package main

import (
	"github.com/gofiber/fiber/v2"
	"github.com/pupuk/addr"
)

func main() {
	app := fiber.New()

	app.Get("/", func(c *fiber.Ctx) error {
		parse := addr.Smart(c.Query("addr"))
		return c.JSON(parse)
	})

	app.Listen(":3000")
}

HTTP请求结果 image

反馈 &改进

Issue

如果有什么问题或建议,或者发现有不能识别,或者识别错误的地址, 提交到Github Issue

协作

  1. 本版本提供了注释,希望大家能fork,优化,提PR,点个star,大家一起来维护地更好
  2. 欢迎改写成其它语言版本,只需注明参考链接即可。

联系我

致谢

addr's People

Contributors

pupuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

addr's Issues

关于更极端的信息组合有什么解析的思路吗?

例如:
1.张三广东省深圳市南山区腾讯前海大厦23楼16777778888
2.广东省深圳市南山区腾讯前海大厦23楼张三16777778888

PS:没有任何标点符号做分割

个人目前想到的是:
根据库里的数据去匹配 省——>市 然后确定地址在字符串中的index,这样就可以解析上面第一种情况。
但是第二种没任何头绪。。。
感觉这条路也不是很合理

部分地方不准哦

广西壮族自治区 梧州市 长洲区 城区城区竹湾路南粤家居建材中心A11铺

解析成广东了。
: 广东省 中山市 城区 竹湾路南粤家居建材中心A1铺

解析名字不准

收货人: 徐六月
手机号码: 19308272897
所在地区: 四川省成都市武侯区武侯街道
详细地址: 武侯西路18号
淘宝复制的地址,解析出来name:号码

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.