Regex 匹配句子的正则表达式

Regex 匹配句子的正则表达式,regex,Regex,我试图用python制作一个与句子匹配的正则表达式。我看到最有效的是:[^\.\?\!].*?[\.\?\!],但是下面的测试句子有一些错误。您可以查看如何使用该站点。我正在寻找一个正则表达式,它包含了下面所有的问题,例如省略号、敬语和I.e.的东西 要在英语以外的语言中执行标记化,我们可以 加载在tokenizers/punkt和中找到的相应语言pickle文件 然后用另一种语言标记文本,这是 tokenize()函数。对于法语文本的标记化,我们将 使用french.pickle文件如下:史密

我试图用python制作一个与句子匹配的正则表达式。我看到最有效的是:
[^\.\?\!].*?[\.\?\!]
,但是下面的测试句子有一些错误。您可以查看如何使用该站点。我正在寻找一个正则表达式,它包含了下面所有的问题,例如省略号、敬语和I.e.的东西

要在英语以外的语言中执行标记化,我们可以 加载在tokenizers/punkt和中找到的相应语言pickle文件 然后用另一种语言标记文本,这是 tokenize()函数。对于法语文本的标记化,我们将 使用french.pickle文件如下:史密斯先生购买了cheapsite.com 150万美元,也就是说,他为此付出了很多。他介意吗?亚当 小琼斯认为他没有。无论如何,这不是真的。。。嗯,有 概率是0.9,不是


p、 如果你想知道,我从一本自然语言处理书籍中得到了上面的句子,以及关于同一主题的另一个堆栈溢出问题。

最简单的方法是将它分成3个操作

  • 用其他不带点的标记替换,例如省略号和你想要的任何东西,如
    @@@ie@
    @@@ellipsis@@
  • 匹配句子
  • 在重建之后,即和省略号
更新:一些代码如何操作。你必须用你想从句子匹配器中排除的点替换每个项目

sentences = re.sub(r'i\.e\.', "@@@ie@@@", sentences);
matches = re.match(r'[^\.\?\!].*[\.\?\!]', sentences);
matches = re.sub(r'@@@ie@@@', "i.e.", matches);

是的,你会怎么做呢?好的,但请记住,这并不是那么简单,因为对于每种语言来说,你必须(至少)处理一个带有点的千字字典,而如果你想做一些有效的事情,那么对一千个或更多的子字符串这样做是不可能的。你是对的。但是正则表达式中没有其他方法来处理不是句子结尾的点,因为点是regexp中的点。对于广泛的用例,您必须处理NLP