我有以下文字
text = 'Monday to Friday 12 midnight to 5am 30% . Midnight Friday to 6am Saturday 30% . 9pm Saturday to Midnight Saturday 25% . Midnight Saturday to 6am Sunday 100% . 6am Sunday to 9pm Sunday 50%'
当我使用normalregex时,我得到了以下结果
import re
regex = '\d{1}[a|p]m'
re.findall(regex, text)
# Returned:
['5am', '6am', '9pm', '6am', '6am', '6pm']
然而,当我在spaCy中使用相同的regex
时,我什么也没有得到
from spacy.matcher import Matcher
nlp = spacy.load('en_core_web_lg')
matcher = Matcher(nlp.vocab)
pattern = [{'TEXT': {'REGEX': '\d{1}[a|p]m'}}]
matcher.add('TIME', None, pattern)
doc = nlp(text)
matches = matcher(doc)
for match_id, start, end in matches:
matched_span = doc[start:end]
print(matched_span.sent.text)
这是否意味着我们不能将normalregex与spaCy一起使用?如果是的话,你知道我在哪里可以学到spaCy的特殊regex语法吗?非常感谢。你知道吗
你需要记住,这里的数字和字母是分开的,参见测试:
根据Spacy docs:
您需要使用基于规则的匹配来定义自己的实体:
然后将其添加到matcher:
找到火柴:
完整演示:
相关问题 更多 >
编程相关推荐