对于使用Prodigy注释的整数/日期值,spaCy模型是否也了解值的范围



我设置了一个神童会话,为文档中的某些数值添加年龄注释(范围从0到100(。我只是在注释数字。我的问题是,假设有一个损坏的值悄悄出现(年龄为1000或22.7(,模型是否会理解,即使它接近文档中的年龄文本,也不应该被拾取?

换句话说,它能学习整数值的范围吗?如果能,这对日期格式也适用吗?例如,格式为dd/mm/yyyy的日期是DOB(所有带注释的日期都<01/01/2000(,并且有一个日期是2020年12月31日,由于所有带注释日期都远未接近该范围,所以也会选择该日期吗?

谢谢

好问题!spaCy内部并没有将数字标记表示为数字,所以它并没有明确的值概念。从这个意义上说,它无法区分年龄的有效值和无效值。

然而,spaCy确实使用";形状";表示有助于识别有效年龄的令牌时的功能。有不同种类的形状标记,但spaCy使用的形状标记将通过将字符转换为字符类型的表示来表示单词。它是这样工作的:

  • spaCy→xxxX
  • 鱼→xxxx
  • 鱼→xxx
  • 23→dd
  • 1000→dddd
  • 22.7→dd.d

正因为如此,你可以预期spaCy了解到两位数很可能是年龄,但带小数或四位数的数字不太可能。另一方面,这无助于区分100和999。

对于日期,这将无助于确定有效或无效的出生日期。形状只是spaCy的功能之一,但前缀和后缀等其他功能也无助于此。

由于在代码中验证数值很容易,我建议在spaCy中广泛匹配,然后使用自己的函数通过解析日期或年龄来检查日期或年龄是否有效。


特别是在spaCy之外,NLP模型如何表示数值的问题实际上是一个越来越受欢迎的研究主题-如果你想了解更多信息,这是最近一篇关于这个主题的文章:语言模型知道大象有多重吗?

最新更新