正则表达式分词器周期与省略号

regex tokenizer period vs. ellipsis

我想用句末标点符号(如“.”、“?”、“!”)分隔字符串,不包括省略号(“...”)。请注意,我正在处理的文本中的省略号是三个句点,而不是专用的 Unicode 字符串。

目前我做的是

tokenizer = nltk.RegexpTokenizer(r"[?.!]+", gaps=True)

但这仍然会在 ... 处拆分字符串。 但是,我想在 !!!?? 处继续拆分,而不是 . 的多个连续实例。如果我想使用 RegexpTokenizer,区分省略号和句点的最简单方法是什么?

像这样的东西可以工作[?!]+|(?<!\.)\.{1,2}(?!\.)

我们匹配任何 non-zero 数量的 ?! 或 1 或 2 个既没有点也没有点之前的点。

但是lookbehind 和lookahead 的性能很差。

顺便说一句,我找到这个网站 https://pythex.org 来检查 python 正则表达式