【问题标题】:Use machine learning to validate phone numbers使用机器学习验证电话号码
【发布时间】:2019-03-20 13:51:26
【问题描述】:

所以我希望验证用户输入的电话号码。

到目前为止,我一直在使用 Regex。但是由于来自世界各地的电话号码格式不同,维护正则表达式变得越来越困难。

由于我有很多有效电话号码的数据集,我认为可以使用机器学习算法。

因为我之前没有任何机器学习经验,所以我尝试使用 scikitlearn SVM 对其进行原型设计。没用。

现在我很好奇这是否是机器学习算法的一个很好的用例。如果是,我应该查找哪些资源? 如果不是,有哪些机器学习替代方法可以创建易于扩展的电话号码验证?

【问题讨论】:

  • 我认为这不是机器学习问题,即使你创建一个它只会猜测这个数字属于哪个国家,我不认为你想猜测......一个简单的国家正则表达式查找表或电话验证 api 将非常准确和简单

标签: validation machine-learning scikit-learn


【解决方案1】:

这只是一个计算机编程案例,您可能需要将代码重构为某种类,该类负责验证来自不同国家/地区的电话号码。

同样从正则表达式的角度来看,这里提出了更新国际电话号码的问题:What regular expression will match valid international phone numbers?,最好的答案是使用以下正则表达式:

\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|
2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|
4[987654310]|3[9643210]|2[70]|7|1)\d{1,14}$

关于机器学习,这里有一个很好的总结what questions machine learning can answer,可以总结在下面的列表中:

  1. 这是 A 还是 B?
  2. 这很奇怪吗?
  3. 多少/多少?
  4. 它是如何组织的?
  5. 接下来我该怎么做?

查看博客文章(文章中还有一段视频)了解更多详情。您的问题并不真正适合上述五个类别中的任何一个。

【讨论】:

    【解决方案2】:

    国际电话号码规则非常复杂,因此正则表达式不太可能起作用。如果您有足够的数据,训练机器学习算法可能会奏效,但有一些奇怪的边缘情况和格式变量(包括表示同一电话号码的多种方式)会让生活变得困难。

    更好的选择是使用 Google 的libphonenumber。它是一个用 C++ 和 Java 实现的开源电话号码验证库,具有许多其他语言的端口。

    【讨论】:

    【解决方案3】:

    给定的任务是受语法限制的 + 受监管程序的约束

    机器学习需要这样一个超集训练数据集,以满足(霍夫丁不等式约束)预计错误率,这对于目前主要(几乎)不可能安排训练的低级别目标。

    因此,即使是正则表达式工具也(几乎)在猜​​测,因为 E.164-“地址”的终端部分(几乎)对于全局地址空间是不可维护的。

    概率性 ML 学习者可能会觉得在这里被利用有些意义,但同样 - 这些甚至会故意猜测(提供对每个此类猜测所达到的置信度水平的工作估计)。

    为什么?

    因为每个电话号码(在这里我们不假设词汇不规则和类似的外观细节)都必须符合一套全球法规(ITU-T 管辖),然后 - 在较低级别 - 受制于国家一整套规定(多方治理),最后还有两个截然不同的电话号码E.164-“地址”-分配程序,不是让故事变得简单一点。


    ITU-T RFC 4725 - 简要介绍:

    只是为了实现分布式规则的[ ITU-T [, NNPA [, CSP [, <privateAdmin> ]]]]-层次结构,将其引入(绝对语法 - 分布式治理)E.164 数字块分析(直至单个数字)。

    RFC 4725              ENUM Validation Architecture         November 2006
    
    
       These two variants of E.164 number assignment are depicted in
       Figure 2:
    
       +--------------------------------------------+
       | International Telecommunication Union (ITU)|
       +--------------------------------------------+
                            |
                  Country codes (e.g., +44)
                            |
                            v
        +-------------------------------------------+
        | National Number Plan Administrator (NNPA) |------------+
        +-------------------------------------------+            |
                            |                                    |
                      Number Ranges                              |
                (e.g., +44 20 7946 xxxx)                         |
                            |                                    |
                            v                                    |
          +--------------------------------------+               |
          | Communication Service Provider (CSP) |               |
          +--------------------------------------+               |
                            |                                    |
                            |                              Single Numbers
                  Either Single Numbers              (e.g., +44 909 8790879)
                     or Number Blocks                       (Variant 2)
         (e.g., +44 20 7946 0999, +44 20 7946 07xx)              |
                       (Variant 1)                               |
                            |                                    |
                            v                                    |
                      +----------+                               |
                      | Assignee |<------------------------------+
                      +----------+
    
                         Figure 2: E.164 Number Assignment
    
       (Note: Numbers above are "drama" numbers and are shown for
       illustrative purpose only.  Assignment polices for similar "real"
       numbers in country code +44 may differ.)
    
       As the Assignee (subscriber) data associated with an E.164 number is
       the primary source of number assignment information, the NAE usually
       holds the authoritative information required to confirm the
       assignment.
    
       A CSP that acts as NAE (indirect assignment) may therefore easily
       assert the E.164 number assignment for its subscribers.  In some
       cases, such CSPs operate database(s) containing service information
       on their subscribers' numbers. 
    

    【讨论】:

    • user3666197 是机器人吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2019-02-28
    • 2021-05-22
    • 2011-05-19
    • 2013-08-24
    • 1970-01-01
    相关资源
    最近更新 更多