这应该是后缀,中缀或前缀规则吗?

时间:2020-03-31 15:10:44

标签: spacy

我想添加特殊情况以标记以下内容

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]) 

但是我想知道我应该将它添加到哪一个-后缀,中缀或前缀?

我无法提出一个有效的后缀规则。

通常,我们如何决定要使用的规则类别?

1 个答案:

答案 0 :(得分:2)

最后,令牌是前缀,后缀还是后缀并不重要,通常可以有多种方法来获得相同的结果。

我认为最好的方法是添加一个:和数字之间的前缀DATE的正则表达式。如果在其他情况下不会引起任何副作用,也可以同时添加DATE:作为前缀,这样做可能会更容易些,因为您可以将内容添加到TOKENIZER_PREFIXES无需编写任何正则表达式。