我试图定义一个正则表达式,用作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}}'}}]
但结果是一样的,它似乎不能得到任何匹配.
有人有什么建议吗?提前感谢!