我试图定义一个正则表达式,用作spaCy模型中的实体标尺组件中的文本模式. 其目的是在发现以下 struct 的单词时添加带有"COMP"标签的令牌:

  • XXX-YNN
  • XXX Ynnn 其中'XXX'是一个列表中的三元组,'Y'是一个字母,'nnn'是一个数字组合.

为此,我使用以下方法

def add_component_patterns_re(input_references, model_ruler):
    ruler = model_ruler
    ref_patterns = []
    letters = ['V', 'B', 'F', 'K', 'S']

    print("Adding component patterns")
    for ref in input_references.iloc[:, 0]:
        # print(f"Adding references for system: {ref}")
        for letter in letters:
            pattern_text = fr'{ref}(-| ){letter}[0-9]{{3}}'
            pattern = {"TEXT": {"REGEX": fr'{ref}(-| ){letter}[0-9]{{3}}'}}
            ref_patterns.append({"label":"COMP", "pattern":pattern})
    ruler.add_patterns(ref_patterns)

    return ref_patterns

打印出添加的模式,在我看来输出列表是正确的.所以我猜我在定义要添加到标尺的模式时做错了什么. 为了获取信息,我还try 将模式变量更改为列表条目,如下所示:

pattern = [{"TEXT": {"REGEX": fr'{ref}(-| ){letter}[0-9]{{3}}'}}]

但结果是一样的,它似乎不能得到任何匹配.

有人有什么建议吗?提前感谢!

推荐答案

最后我得到了

print(f"Adding references for system: {ref}")
    for letter in letters:
        for nnn in range(1000):
            pattern = f"{ref}-{letter}{nnn:03d}"
            ref_patterns.append({"label": "COMP", "pattern": pattern})
            pattern = f"{ref} {letter}{nnn:03d}"
            ref_patterns.append({"label": "COMP", "pattern": pattern})

对于每一种图案.代码更长,速度更慢,但它做得很好!

Python相关问答推荐

如何从具有多个嵌入选项卡的网页中Web抓取td类元素

理解Python的二分库:澄清bisect_left的使用

numba jitClass,记录类型为字符串

如何使用html从excel中提取条件格式规则列表?

无法定位元素错误404

如果条件不满足,我如何获得掩码的第一个索引并获得None?

使用Python更新字典中的值

使用Python从URL下载Excel文件

需要帮助重新调整python fill_between与数据点

如果初始groupby找不到满足掩码条件的第一行,我如何更改groupby列,以找到它?

使用Openpyxl从Excel中的折线图更改图表样式

如何将相同组的值添加到嵌套的Pandas Maprame的倒数第二个索引级别

删除Dataframe中的第一个空白行并重新索引列

Regex用于匹配Python中逗号分隔的AWS区域

对于标准的原始类型注释,从键入`和`从www.example.com `?

多索引数据帧到标准索引DF

为什么在更新Pandas 2.x中的列时,数据类型不会更改,而在Pandas 1.x中会更改?

如何使用Polars从AWS S3读取镶木地板文件

如何计算Pandas 中具有特定条件的行之间的天差

对列中的数字进行迭代,得到n次重复开始的第一个行号