Я хочу добавить специальный случай для токенизации следующего
DATE:01/01/2020
Токенизация по умолчанию сохраняет это как один токен, но мне нужно разделить его следующим образом
'DATE', ':', '01/01/2020'
Я добавил инфиксное правило к стандартному, как показано ниже, что, кажется, работает
# modify tokenizer infix patterns
infixes = (
LIST_ELLIPSES
+ LIST_ICONS
+ [
r"(?<=[0-9])[+\-\*^](?=[0-9-])",
r"(?<=[{al}{q}])\.(?=[{au}{q}])".format(
al=ALPHA_LOWER, au=ALPHA_UPPER, q=CONCAT_QUOTES
),
r"(?<=[{a}]),(?=[{a}])".format(a=ALPHA),
r"(?<=[{a}])(?:{h})(?=[{a}])".format(a=ALPHA, h=HYPHENS),
r"(?<=[{a}0-9])[:<>=/](?=[{a}])".format(a=ALPHA),
#this regex is added to handle colon preceded by alpha and followed by numeric
r"(?<=[{a}])[:](?=([0-9][0-9][/]))".format(a=ALPHA)
]
)
infix_re = compile_infix_regex(infixes)
nlp.tokenizer.infix_finditer = infix_re.finditer
doc = nlp(text)
print([t.text for t in doc])
Однако мне было интересно, к какому из них я должен добавить это - суффикс, инфикс или префикс?
Я не смог придумать работающее суффиксное правило.
В общем, как мы решаем, какую категорию правил использовать?