查找长度在一定范围内的标记

Finding tokens with a length that falls within a certain range

我正在使用 spacy 在文本正文中查找 PII 实体。现在我正在使用以下模式

{
    "label": "CREDIT_CARD",
    "id": "CREDIT_CARD_PATTERN",
    "pattern": [{"IS_DIGIT": True, "LENGTH": 14}, {"IS_DIGIT": True, "OP": "?"}]
}

我希望找到长度为 14 或 15 的 DIGIT 令牌。但是,这没有按预期工作,我只得到长度为 14 的 DIGIT 令牌的结果。有谁知道更好的查找长度在一定范围内的 DIGIT 令牌的方法。说一个寻找长度从 14 到 16 的所有 DIGIT 标记的模式?

您可以使用扩展比较运算符为 LENGTH 等值指定范围:

pattern = [{"LENGTH": {">=": 10, "<=": 12}}]

参见:https://spacy.io/usage/rule-based-matching#adding-patterns-attributes-extended