Python 标记化和标记文本

Python 标记化和标记文本,python,nlp,Python,Nlp,这是一个简单的扫描器,它根据特定规则标记文本,并标记标记 处理未知字符并将其标记为 不知道 是否有一种推荐的方法/库可以在 完成类似的结果,保持相对简单 例如: 输出: ps!已定义的函数可能会尝试对令牌进行进一步分类。重新扫描程序按照提供的顺序匹配模式。因此,您可以在结尾提供一个非常通用的模式来捕获“未知”字符: (r".", unknown) 屈服 [('This', 'a'), ('is', 'a'), ('a', 'a'), ('little', 'a'), ('test', 'a

这是一个简单的扫描器,它根据特定规则标记文本,并标记标记

  • 处理未知字符并将其标记为 不知道
  • 是否有一种推荐的方法/库可以在 完成类似的结果,保持相对简单
  • 例如:

    输出:


    ps!已定义的函数可能会尝试对令牌进行进一步分类。

    重新扫描程序按照提供的顺序匹配模式。因此,您可以在结尾提供一个非常通用的模式来捕获“未知”字符:

    (r".", unknown)
    

    屈服

    [('This', 'a'), ('is', 'a'), ('a', 'a'), ('little', 'a'), 
    ('test', 'a'), ('?', 'p'), ('With', 'a'), ('7', 'rn'), (',', 'p'), 
    ('9', 'rn'), ('and', 'a'), ('6', 'rn'), ('.', 'p'), ('\xa0', 'uk'), 
    ('-', 'uk'), ('\xaf', 'uk')]
    

    您的一些模式是
    unicode
    ,其中一个是
    str
    。确实,在Python2中,要匹配的模式和字符串可以是
    unicode
    str

    然而:

    Unicode字符串和8位字符串不能混合:也就是说,不能混合 将Unicode字符串与字节模式匹配,反之亦然

    因此,最好不要将它们混在一起,即使是在Python2中



    我认为您的代码非常简单(除了
    superscript
    regex.Eek!)。我不知道有哪家图书馆能使它更简单

    谢谢你的回答。我将尝试对上标做些什么:)
    (r".", unknown)
    
    import re
    
    def alpha(scanner,token):
        return token, 'a'
    
    def numeric(scanner,token):
        return token,'rn'
    
    def punctuation(scanner,token):
        return token, 'p'
    
    def superscript(scanner,token):
        return token, 'sn'
    
    def unknown(scanner,token):
        return token, 'uk'
    
    scanner = re.Scanner([
        (r"[a-zA-Z]+", alpha),
        (r"[.,:;!?]", punctuation),
        (r"[0-9]+", numeric),
        (r"[\xb9\u2070\xb3\xb2\u2075\u2074\u2077\u2076\u2079\u2078]", superscript),
        (r"[\s\n]+", None), # whitespace, newline
        (r".", unknown)
        ])
    
    tokens, _ = scanner.scan("This is a little test? With 7,9 and 6. \xa0-\xaf")
    print tokens
    
    [('This', 'a'), ('is', 'a'), ('a', 'a'), ('little', 'a'), 
    ('test', 'a'), ('?', 'p'), ('With', 'a'), ('7', 'rn'), (',', 'p'), 
    ('9', 'rn'), ('and', 'a'), ('6', 'rn'), ('.', 'p'), ('\xa0', 'uk'), 
    ('-', 'uk'), ('\xaf', 'uk')]