【问题标题】:Keeping special marks when splitting text into tokens using regex使用正则表达式将文本拆分为标记时保留特殊标记
【发布时间】:2017-01-01 15:51:08
【问题描述】:

我有这样的文字'我喜欢这个,但我有一个!问题?目前正在使用

token_pattern = re.compile(r"(?u)\b\w+\b")
token_pattern.findall(text)

当我使用这个正则表达式时,我得到了

['I','love', 'this', 'but', 'I', 'have', 'a', 'question', 'to']

我不是写这个正则表达式的人,我对正则表达式一无所知(试图从示例中理解但只是放弃了尝试),现在我需要以一种能够保留问题和感叹号的方式更改这个正则表达式标记并将它们拆分为唯一标记,因此它会返回此列表

['I','love', 'this', 'but', 'I', 'have', 'a', '!', 'question', 'to', '?']

关于如何做到这一点的任何建议。

【问题讨论】:

    标签: regex nlp tokenize


    【解决方案1】:

    试试这个:

    token_pattern = re.compile(r"(?u)[^\w ]|\b\w+\b")
    token_pattern.findall(text)
    

    它也将所有非字母数字字符作为一个匹配项进行匹配。

    如果你真的只需要问号和感叹号,你可以将正则表达式更改为

    token_pattern = re.compile(r"(?u)[!?]|\b\w+\b")
    token_pattern.findall(text)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      相关资源
      最近更新 更多