自动识别地址省市区、手机号、姓名,淘宝的地址自动识别

  由于公司软件需求,需要将一段字符串进行解析出省、市、区、街道、详细地址、手机、姓名。类似淘宝的地址自动识别,研究了一个下午加一个上午,换了好多种算法。

  • 手机号
    这个不难,将字符串用特定的符号分割,如:英文逗号、中文逗号、空格
    分割出来的数组进行字数统计,找到11位字符且可以转换为数字的就是手机号,当然不嫌麻烦也可以用正则
  • 姓名
    这个不简单,如果输入的都是正常的姓名那也简单,做一个百家姓的数据表。匹配第一个字,且字数不要超过4个。中国4个字的姓名真的不多。
    但现在地址里写的可能都不会是真实姓名,且超过5个字的昵称,那就麻烦了。
    所以现在用的就是长度对比,数组里长度最长的当作地址来解析,排去手机号,剩下的当作姓名。(暂时没有想到更好的方法)
  • 地址
    真的走了好多弯路
  1. 省市区分割
    这个思路是最早的思路一串字符串用省市区去分割,显然对正规的地址是有效的。但我如果"浙江宁波海曙",这样就找不到了。
    失败!
  2. 模糊查询(统计法)
    既然地址里的省市区都可能不全,那我就用模糊查询,然后查询到的数据存入数组,且做次数统计。
    如地址是:河南郑州100号100幢
    先搜索“河”,如图

    总计1600多条匹配信息,OK!加入数组下一步
    搜索“河南”,如图:
    总计32条信息,数组里都存在,那次数+1
    接着搜“河南郑”,结果0条数据。
    如果数据是0,那就从前面删除一位接着搜
    搜索“南郑”,如图:

    1条数据,好加入数组。
    然后查看数组发现统计出来次数是2的有32条,还是确定不了。
    失败!

  3. 模糊查询(概率法)
    再加改造,上面的思路是没有错的,就是要去查询数据匹配出最优的选择,那该怎么办呢
    如 “河南”,数据库存储的“河南省”,3个字对了2个,那就是66%的正确率
    如 “河南”,数据库存储的“河南岸街道”(一个广东惠州的街道),5个字对了2个,那就是66%的正确率40%
    ok,这样就区分开来了,按照每个词语的正确率去排序
    但是!字数一样的呢?“河南乡“(中国,四川省,雅安市,汉源县,河南乡),正确率也是一样的66%
    这就真的区分不开了,谁都不知道用户指的河南是哪一个
  4. 模糊查询(概率最终版)
    “北京” 对应数据库的 “北京” 正确率是100%
    “北京” 对应数据库的 “北京市” 正确率是66%
    是不是区分不开客户到底是要哪一个地址呢?
    这还是和字数有关系,所以还要升级
    “呼和浩特市”对应数据库“呼和浩特市”正确率是100%
    这个正确率和北京的100%正确率一样,这就不对了,比较呼和浩特市这个已经是100%确定了,北京还是没有100%确定到底是 省 还是 市(代码中需要区分)
    升级版出来了就是概率之后再加上一个正确的字数
    “呼和浩特市”对应数据库“呼和浩特市”正确率是100%+正确字数5=105%正确率
    “北京” 对应数据库的 “北京” 正确率是100%+正确字数2=102%正确率
 int GetProbability(string str1, string str2)
{
            decimal fm = str1.Length;
            str1 = str1.Replace(str2, "");
            decimal fz = fm - str1.Length;
            return (int)Math.Floor(fz / fm * 100) + (int)fz;
}

这样的正确率计算就没什么大问题了,接下来就是处理。筛选出来的 省市区街道,进行筛选,确定最终结果了,下面都是 if else 的判断。
总计代码量写了300多行没有优化,因为全是if else,可以写递归或者循环省代码的,但是头太疼了就不写了。

下面放一下效果图

  1. 正常地址 
  2. 顺序随便换 
  3. 空格分割 
  4. 中文逗号分割 
  5. 不写省市只写区 

  6. 只写街道 
  7. 简短的地址测试 

有不懂的可以加我  QQ1124391467

原文地址:https://www.cnblogs.com/jy8888/p/10314729.html

时间: 2024-10-14 17:30:08

自动识别地址省市区、手机号、姓名,淘宝的地址自动识别的相关文章

淘宝IP地址库设计

当初选择做这么一个项目,不是为了拷贝一份库自己做服务,也不是为了其他目的,只是单纯的熟悉关于http和mysql方面的知识. 下面言归正传. 1.淘宝IP地址库简介 此地址库可以根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商. 用户也可以主动提交信息来纠错. 主要优势表现为: (1)地域 覆盖度:94.54% 精确到市级 准确度:96.5% 精确到市级 (2)运营商 覆盖度:93.8% 准确度:暂无统计数据 (3)查询速度 10qps 注:阿

Delphi使用JSON解析调用淘宝IP地址库REST API 示例

淘宝IP地址库:http://ip.taobao.com,里面有REST API 说明. Delphi XE 调试通过,关键代码如下: [delphi] view plaincopy var IdHTTP: TIdHTTP; RequestURL: string; ResponseStream: TStringStream; JO, JData: TJSONObject; begin IdHTTP := TIdHTTP.Create(nil); IdHTTP.ReadTimeout := 0;

小米4天猫双11,双11买东西,双11外场红包入口淘宝活动地址入口taobao

[>>>点此查看更多会场] 2014双十一来了,本页面收集所有双11活动入口,攻略更新 请收藏! 柔软舒适,很好看, 质量很好,太值得了 -------------------------------------------------------------------------我现实穿36的 但是我买了37的 大了一点点 很时小米4天猫双11,双11买东西,双11外场红包入口尚个性 [双十一活动电器城会场] 店家服务好,物流神速,衣服质量.做工都好,就是袖子有点长,全五分 cjw小

JAVA解析淘宝IP地址库

服务器地址: http://ip.taobao.com/instructions.php 需 JSON jar包 1 import java.io.BufferedReader; 2 import java.io.DataOutputStream; 3 import java.io.InputStreamReader; 4 import java.net.HttpURLConnection; 5 import java.net.URL; 6 7 import org.json.JSONObjec

淘宝地址快速提取插件 for 琴朗淘宝助手

琴朗淘宝助手是一款专为 淘宝卖家 设计的进销存助手软件 ,以人为本,界面简洁大方,极具实用性. 功能完善,不仅是一个活帐本,理财助手, 更是团队协作的完美平台. http://www.onlinedown.net/soft/100324.htm 此软件有一个不错的功能,就是可以自动分解淘宝地址到对应的字段,提高工作效率.如下: 可惜的是,由于淘宝地址格式的升级,以及某些情况出现地址不规范围的情况下.而此软件多时未升级... 所以,不得以... 本人做了一个淘宝地址快速提取插件 for 琴朗淘宝助

淘宝店铺装修教程之下载淘宝视频及分析视频地址中的高逼格信息

摘要: 关于淘宝视频方面的教程,艺灵已写过好几篇了,唯独没有下载的教程,然后群内小伙伴也一直问这个问题,所以特写此教程,内含信息量巨大,看官慎入...... 一.起因 还是因为刚有群友在群里问这个问题,已会的神人请无视这篇基础教程. 在讲如何下载淘宝视频之前,不得不把之前写的几篇教程拿出来,要不然那谁又该问:怎么上传淘宝视频.怎么获取淘宝视频链接.店铺中怎么安装淘宝视频.详情页中怎么放淘宝视频等等问题.如果看官对刚提的几点有疑惑,请先看完下面几篇教程文章后再回来继续看这篇文章. 二.淘宝视频相关

手机淘宝新人0元购红包

手机淘宝新人0元购红包大礼包如何领取?小编详细介绍如何通过淘宝新人0元购的福利社,领取新人礼包并免费在淘宝购物. 什么是淘宝新人0元购? 淘宝新人0元购,大家看这个字面的意思,就知道是0元免费购物,不需要任何费用就可以在淘宝上面购物了.必须使用新的手机号,在新人福利社0元购地址,注册手机淘宝账号,然后登陆领取新人礼包,就可以利用你领取的新人礼包,免费在淘宝上面购物. 淘宝新人0元购是真的吗? 淘宝新人0元购绝对是真实的,是淘宝的一个优惠活动,只限首次注册手机淘宝的新用户参加. 淘宝新人0元购注意

淘宝客推广链接如何转换?

uland.taobao.com 是抢券的地址,参数e是加密参数 https://uland.taobao.com/coupon/edetail?e=YyEHQIPCTccGQASttHIRqdwGH2PTID%2BKvK1rnph%2BoA%2BHIbySOb969XMRGGSwjiUTs%2F8h%2Fnx8Jjq4phtlgUkTQ79fwBwwUiql6DF%2F2MLpJMq9GaVAvC2u%2FW7PVn13QcLNgPRfTgnhrZM%3D&traceId=0a96a23d15

【npm】使用NPM / 淘宝镜像

一.切换NPM仓库地址 二.使用淘宝镜像