我有一个类使用自然语言处理的正则表达式,处理大量数据的时间花费看起来并不乐观。
我正在考虑将其扩大规模,并行工作,我还没有任何经验。
我希望有人可以解释我想要进入的内容,在PHP中这样做的优点和缺点。此外,如果你可以提供一般的缩放或PHP更好的缩放的良好资源。感谢。
编辑:
foreach ($sentences as $sentence) {
// for each sentence check if a keyword or any of its synonyms
// appear together with any sentiment applicable to the keyword
foreach ($this->keywords as $keyword => $synonyms) {
foreach ($this->sentiments[$keyword] as $sentiment => $weight) {
$match = $this->check($sentence, $synonyms, $sentiment);
}
}
}
// regex part of the code
$keywords = implode('|', $keywords);
$pattern = "/(\b$sentiment\b(.*|\s)\b($keywords)\b|\b($keywords)\b(.*|\s)\b$sentiment\b)/i";
preg_match_all($pattern, $sentence, $matches);
答案 0 :(得分:0)
对于那种类型的应用程序,PHP可能不是一个很好的选择。它是一种相当高级的语言,它带来了开销,可能会减慢任何重要的处理速度。
现在,如果您想坚持使用PHP,可以使用某种作业管理应用程序来完成它。可能已经存在一些你可以使用的应用程序,如gearman,甚至hadoop。您将数据分解为块并将其提供给应用程序。使用这些工具,您可以在一台或多台服务器上扩展处理。
如果您使用Amazon Web服务,您可能需要查看Elastic Map Reduce并查看它是否符合您的需求。
答案 1 :(得分:0)
Apache Hadoop Map Reduce作业非常适合这类工作。从一开始就是一点努力,但我认为你会发现它是一个很好的解决方案。使用Hadoop,您可以轻松地在1个节点或30个节点上运行计算。