最近在做一个关于中文大段文本中的手机号码识别,由于属于对抗性的一个文本,发现传统的手机号码识别方法,比如正则匹配并不是很适用。

理论情况下文本中的手机号码出现方式应该如下:

9*6箱车转让,连线路一起打包,带线路转让,固定货源联系13802131234,手机号,非诚勿扰2+1合同

对于这种情况,只要需要进行一下正则就行了:

text = '9*6箱车转让,连线路一起打包,带线路转让,固定货源联系13802131234,手机号,非诚勿扰2+1合同'
mobilephone_pattern = "1\d{10}"
phoneNumbers = re.findall(mobilephone_pattern, text, flags=0)

得到了如下结果:

In [36]: phoneNumbers
Out[36]: ['13802131234']

但是实际情况下,第三方会进行逃避规则的操作,出现了比如:

9*6箱车转让,连线路一起打包,带线路转让,固定货源联系138-02##131234,手机号,非诚勿扰2+1合同
9*6箱车转让,连线路一起打包,带线路转让,固定货源联系138-洞2##幺3幺234,手机号,非诚勿扰2+1合同

甚至还会有:

9*6箱车转让,连线路一起打包,带线路转让,固定货源联系1衫8-洞2##幺散幺2删4,手机号,非诚勿扰2+1合同

这样的情况下,继续通过规则就难以实现了:

In [38]: re.findall(mobilephone_pattern, text, flags=0)
Out[38]: []

所以,我们做了一个拼音转译+循环判断的逻辑进行了优化,会先把文本处理一边:

In [37]: text = '9*6箱车转让,连线路一起打包,带线路转让,固定货源联系1衫8-洞2##幺散幺2删4,手机号,非诚勿扰2+1合同'In [38]: re.findall(mobilephone_pattern, text, flags=0)
Out[38]: []In [39]: from YMMNlpUtils import YMMNlpUtilsIn [40]: obj = YMMNlpUtils(strict=True)In [41]: obj.get_all_phone_number(text)
Out[41]: '96箱车转让连线路17打包带线路转让固定货源联系13802131234手机号非诚5扰21合同'In [42]: re.findall(mobilephone_pattern,obj.get_all_phone_number(text), flags=0)
Out[42]: ['13802131234']

这样处理完就可以得到手机号码了。

由于是定制化的功能,后期可能还会维护出微信号,身份证号这些,更多的可以去git看一下,放上地址链接手机号码小工具,安装方法在README里面有解释。

欢迎大家关注我的个人bolg,知乎,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码、转行疑问都欢迎通过邮箱发消息给我。

中文语境下的手机号识别相关推荐

  1. 中文电子病例命名实体识别项目

    MedicalNamedEntityRecognition Medical Named Entity Recognition implement using bi-directional lstm a ...

  2. python 手机号码识别,python 通过手机号识别出对应的微信性别(实例代码)

    python 通过手机号识别出对应的微信性别,具体代码如下所述: def getGender(self,tel): self.d(resourceId="com.tencent.mm:id/ ...

  3. python判断性别的源代码_python 通过手机号识别出对应的微信性别(实例代码)

    python 通过手机号识别出对应的微信性别,详细代码如下所述: def getGender(self,tel): self.d(resourceId="com.tencent.mm:id/ ...

  4. python怎么通过手机号定位_python 通过手机号识别出对应的微信性别(实例代码)

    python 通过手机号识别出对应的微信性别,具体代码如下所述: def getGender(self,tel): self.d(resourceId="com.tencent.mm:id/ ...

  5. QQ拼音在中文输入下默认英文标点

    别小看这个功能, 感觉在写一些技术 Blog 的情况下还是挺有用的. 打开QQ拼音: 输入法设置->基本设置->初始状态->中文状态下使用英文标点. 转载于:https://www. ...

  6. 应用层下的人脸识别(二):人脸库

    本文作者根据多年人脸识别项目经验,总结了人脸识别技术在安防.商业领域应用及产品设计细节,汇总成应用层下的人脸识别系列文章. 本文为系列文章的第二篇,介绍人脸库的相关内容.人脸库是人脸识别的基础,建立人 ...

  7. 应用层下的人脸识别(四):人脸研判

    作者根据多年人脸识别项目经验,总结了人脸识别技术在安防.商业领域应用及产品设计细节,汇总成应用层下的人脸识别系列文章.本文为系列文章的第四篇,从什么是人脸研判及人脸研判类型和应用两方面介绍相关内容. ...

  8. 模式识别新研究:微软OCR两层优化提升自然场景下的文字识别精度

    模式识别新研究:微软OCR两层优化提升自然场景下的文字识别精度 发表于2015-03-30 23:46| 6209次阅读| 来源CSDN| 8 条评论| 作者霍强 模式识别微软亚洲研究院微软OCR文字 ...

  9. 微软OCR两层优化提升自然场景下的文字识别精度(模式识别新研究)

    摘要:OCR识别可分为两步:首先是文本检测,将文字从图片中提取出来:然后对文本进行识别.此次的突破主要是在文本检测环节的两个子阶段:先采用对比极值区域CER检测方法,再采用基于浅层神经网络的文字/非文 ...

最新文章

  1. Android 利用ListView制作带竖线的多彩表格
  2. 魏代汉,晋代魏,背后是士族与寒族的博弈,也是士族门阀的形成时期
  3. java创建线程代码_Java创建与结束线程代码示例
  4. instanceof java list_Java:Instanceof和泛型
  5. P3870-[TJOI2009]开关【分块】
  6. wether.html5.qq.com,人教版英语九年级全一册Unit 1单元测试卷及参考答案解析(含听力...
  7. 工业相机,大恒,面振相机8脚电源线和I/O触发接口线,颜色和接法说明和触发软件设定
  8. Android BottomNavigationBar导航栏
  9. 线性筛法--------2013年1月2日
  10. 几个危险的扩展存储过程
  11. java面试 线程_Java面试题(线程)
  12. 大一计算机基础重点知识,2015-大一计算机基础知识点归纳.doc
  13. Python中使用wxpy定时机器人给微信好友发送每日一文
  14. 国内TCP单边“加速”的“正确”做法
  15. ORA-01654: unable to extend index报错解决
  16. 基于BPM的低代码平台如何选型
  17. Vundle ,Vim Bundle
  18. 获取本机ip和端口号
  19. python中的numpy库有什么优缺点_python中关于numpy库的介绍
  20. 【Web】html+js 制作小游戏

热门文章

  1. c语言循环并行处理,C语言设计并行处理
  2. Pri3D:一种利用RGB-D数据固有属性完成3D场景感知的表示学习方法
  3. 大疆车载招聘|SLAM、地图定位、感知算法、机器学习算法工程师
  4. Mobile3DRecon:手机上的实时单眼3D重建
  5. LSD-SLAM解读——帧间追踪(详细推导)
  6. 一分钟详解VS中快速生成dll和lib方法
  7. string日期格式化_java面向对象---日期类
  8. RDKit | RDKit(2019.09)新增相似性图函数
  9. Linux(CentOS 7_x64位)系统下安装ACPYPE
  10. Pytorch实践中的几个重要概念