Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从文本文件中提取句子的正则表达式_Php_Regex - Fatal编程技术网

Php 从文本文件中提取句子的正则表达式

Php 从文本文件中提取句子的正则表达式,php,regex,Php,Regex,我需要一个正则表达式,将从文本文件中提取句子。 示例文本: 以2004年底发生的亚洲海啸灾难为例。对谷歌新闻的质疑(http://news.google.com)在一个月内(2005年1月17日至2月17日)返回了80000多篇关于这一事件的在线新闻文章。卡哈纳先生提供的资料 这是我的密码: $re = '/(?<=[.!?]|[.!?][\'"])\s+/'; $sentences = preg_split($re, $text, -1, PREG_SPLIT_NO_EMPTY); $

我需要一个正则表达式,将从文本文件中提取句子。 示例文本:

以2004年底发生的亚洲海啸灾难为例。对谷歌新闻的质疑(http://news.google.com)在一个月内(2005年1月17日至2月17日)返回了80000多篇关于这一事件的在线新闻文章。卡哈纳先生提供的资料

这是我的密码:

$re = '/(?<=[.!?]|[.!?][\'"])\s+/';
$sentences = preg_split($re, $text, -1, PREG_SPLIT_NO_EMPTY);

$re='/(?正则表达式不能执行此操作

作为一种语言,英语不适合恰当的格式规则。因此,正则表达式不适合实现您所寻求的目的。您真正想要的是一种类似于自然语言处理器的东西

除非这对您的计划至关重要,否则我建议您确定以下事项:

  • 什么是可接受的错误级别?你所做的任何事情都不是完美的。但是如果它工作了80%,可以吗?90%?99%?这对你/你的客户有多重要
  • 文本从何而来?例如,一本教科书的编写方式很可能与人们的推特订阅源不同。你可以根据你在实际使用的文本中看到的内容进行研究并做出例外
  • 我在用文本做什么?如果你只是索引关键字之类的东西,那么正确地拆分句子就没什么关系了。这都是关于调整程序以获得适合此特定目的的输出
我的建议是使用反复试验来尽可能降低错误率。在大量文本上运行您的程序,并不断添加异常,直到获得可接受的错误率。但是,如果您需要几十条以上的规则,您可能只想重新考虑这个问题


简言之,PHP和正则表达式并不适用于此,因为英语很时髦。因此,要么通过添加异常来获得一个小的(er)错误率,或者完全重新考虑这一点。

问题是,你知道有什么额外的规则使句子的结尾不同于点后跟空格,然后是大写字符?我唯一能想到的是做一些特殊的例外,比如加上“mr”特别是正则表达式。我不相信存在一个通用的解决方案,但我希望看到一个!@Iain如果
Kahana先生
被更改,例如
a.Kahana
这将是一个新问题。我知道,所以你需要更多的例外。就像我说的,我不相信有一个通用的解决方案,除非你想告诉我有什么不同在标点符号和句子结尾之间的e是一种计算机可以理解的方式,而不涉及例外情况?好吧,但需要很多具体的例外情况-a先生、a太太和很多!!这是不可能的,也不是一种明智的方式!但我也不认为有一个通用的解决方案是可能的!@KaidulIslamSazal:如果你感兴趣:。