使用正则表达式将文本拆分为标记时保留特殊标记

时间:2017-01-01 15:51:09

标签: regex nlp tokenize

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

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', '?']

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

1 个答案:

答案 0 :(得分: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)