我应该使用正则表达式还是机器学习?

数据挖掘 机器学习 nlp 自动总结
2021-09-22 22:31:33

我在考虑两个用例:

  1. 您向网站提交 PDF 格式的简历,它会提取您的联系信息、职位等。
  2. 您收到一封来自朋友的电子邮件,内容是“让我们下周二吃午饭”,您的电子邮件程序检测到它并询问您是否要为“周二午餐”保存一个新的日历条目。

我可以看到如何使用 ML 和(非常复杂的)正则表达式来完成。这些场景通常使用哪些方法?我假设相同的方法可以应用于上述两种情况?

4个回答

我会说取决于要求以及您要为任务付出多少努力。

  • 使用正则表达式肯定更容易,但在某些时候,如果你所拥有的文本不是你所期望的那样结构化,你将无法特别涵盖所有内容。因此,在这种情况下,您将在每次错过某些内容时更新您的正则表达式模式......

  • 如果您采用机器学习方法,那么您将需要数据来训练您的模型(大量此类数据)。是时候训练和提高模型的质量了。希望你会得到一些好东西。

作为一个结论,我认为,如果你能用正则表达式满足这个要求,那就去吧。如果正则表达式不是一个好的解决方案,那么就开始考虑机器学习解决方案。

如果您打算为广大公众构建一些东西,那么您绝对不能使用正则表达式。您无法编写可以跨越一类文档(电子邮件或 PDF)可能具有的差异的正则表达式。

即使您对可以有效处理一小部分(小)可能文档的正则表达式感到满意,然后不时对其进行修改,查找训练数据和训练 ML 算法也将花费更多时间去做吧。

只有当您必须解析某种标准化文档(PDF 或电子邮件)时,您才可以考虑使用一些正则表达式解析器。

这就是为什么通常需要使用一些 ML 技术来实现目标的原因。

您收到一封来自朋友的电子邮件,内容是“让我们下周二吃午饭”,您的电子邮件程序检测到它并询问您是否要为“周二午餐”保存一个新的日历条目。

你所描述的叫做信息提取,是NLP(自然语言处理)的一大领域。您正在寻找时间表达识别您可以查看Stanford Temporal Tagger: SUTime以获得“现场”演示。从我在这里看到的,它是一个基于正则表达式的规则系统。

为了给您一个印象,基于规则的系统有多么强大:

据报道,魏岑鲍姆自己的秘书要求魏岑鲍姆离开房间,以便她和 ELIZA 可以进行真正的对话。Weizenbaum 对此感到惊讶,后来写道:“我没有意识到……对一个相对简单的计算机程序进行极短时间的暴露会在相当正常的人中引发强大的妄想思维。”

资料来源:维基百科:伊丽莎

也可以看看

在规模上,除非您期望只接收特定格式,否则它就是机器学习。对于第一个任务,您应该首先解析文本然后扫描它,可能使用命名实体识别 (NER) 系统来提取您想要的信息。拥有 NER 系统会起作用,因为您可以手动编码不同类型的功能,这将大大提高性能。如果您只想执行候选匹配,那么标准的词袋方法会表现得不错。

对于第二种情况,情况类似。您可以依靠对句子的一些句法分析来获得邀请和提案的时间/日期。这又可以与 NER 系统相结合。最近,对于这两个任务,神经网络产生了有希望的方法。但是,无论如何,您都需要标记数据,获取这些数据可能很麻烦。

另一方面,正则表达式可能是很好的方法,特别是如果您可以预测/适应传入数据的可变性。在任何情况下,它们都可用于创建您的第一个训练数据。