我在公共卫生部门工作,每天要接收和存储大量的医疗数据。我编写了一个程序,使用正则表达式来判断传入数据中特定字段的有效性或无效性。例如:出生日期以YYYYmmDD的格式输入,因此它们应该匹配正则表达式 ^[0-9]{8}$
我想分析“无效”数据,以帮助识别我们系统中的问题(我们接收的数据量太大,无法逐行检查每条‘坏’记录)。有没有人能建议一些AI技术/机器学习技术,可以‘监控’坏数据并找出错误的模式?我认为,提出一些正则表达式来描述数据可能无效的方式(例如,字符过少或过多),然后跟踪这些结果可能会有效。但与其让我想出所有数据可能无效的方式,我更好奇是否有方法可以使用AI从坏数据中‘学习’这些模式。
有没有已知的技术可以做到这一点?
回答:
我认为,提出一些正则表达式来描述数据可能无效的方式(例如,字符过少或过多),然后跟踪这些结果可能会有效。但与其让我想出所有数据可能无效的方式,我更好奇是否有方法可以使用AI从坏数据中‘学习’这些模式。
有趣的是,这让我想起了通常归于Jamie Zawinski的一句名言:
有些人,当面对问题时,会想“我知道,我会使用正则表达式。”现在他们有了两个问题。
但在这种情况下,我认为手工制作的正则表达式路线实际上是你最好的选择!
真是讽刺啊。
无论如何。
这句话的要点是,人们倾向于使他们的解决方案复杂化。在这里,正则表达式实际上是你问题的相当简单的解决方案,而创建一个学习器将花费你比你想象的更多的时间。
这种非常受限的数据表示(日期)正确表达的方式比错误表达的方式少。因为定义坏数据的方式是无限的。你想训练一个学习器来检测所有这些方式吗?这是一个无底洞。相反,把这个AI学习器想象成一个同事或朋友:你会如何向他们描述日期不能正确表示的所有方式?
虽然你的意图是长期为自己减少工作量——这是一个很好的品质——但弄清楚如何开发一个学习器,更不用说训练和验证它,更不用说仔细监控它,在这样一个狭窄的用例中,任何学习器能提供的好处都将被抵消。