我需要一个正则表达式来从文本文件中提取句子。
示例文本:
以 2004 年底发生的亚洲海啸灾难为例。对 Google 新闻 (http://news.google.com) 的查询在一个月内(1 月 17 日)返回了超过 80,000 篇有关该事件的在线新闻文章截至 2005 年 2 月 17 日)。先生提供的信息卡哈纳。
这是我的代码:
$re = '/(?<=[.!?]|[.!?][\'"])\s+/';
$sentences = preg_split($re, $text, -1, PREG_SPLIT_NO_EMPTY);
但最后一句话还是分裂了information by mr.
and Kahana.
怎么解决呢?谢谢 :)
你不能用正则表达式来做到这一点
英语作为一种语言并不符合适当的格式规则。因此,正则表达式不适合实现您正在寻求的目的。您真正需要的是自然语言处理器之类的东西。
除非这对您的程序至关重要,否则我建议您确定以下事项:
-
可接受的错误水平是多少?你所做的一切都不会是完美的。但如果80%有效就可以了吗? 90%? 99%?这对您/您的客户有多重要?
-
文字从哪里来?例如,教科书的写法很可能与人们的推特提要不同。您可以根据您在使用的实际文本中看到的内容进行研究并进行例外处理。
-
我在用文字做什么?如果您只是对关键字之类的内容进行索引,那么正确分割句子并不重要(同样重要)。这一切都是为了调整程序以获得适合此特定目的的输出。
我的建议是通过反复试验来尽可能降低错误率。在大量文本上运行程序,并不断添加异常,直到获得可接受的错误率。然而,如果您需要超过几十条规则,您可能只想重新考虑这个问题。
简而言之,PHP 和正则表达式并不是为此目的,因为英语很时髦。因此,要么通过添加异常来获得较小的错误率,要么完全重新考虑这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)