生产环境中的NLTK?

2024-09-27 09:26:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在pythonnltk中开发了一些用于聚类、数据抽象等的算法。现在,问题是,我要在向风投公司展示之前,先把它做成规模。NLTK有其自身的优势,如快速发展等,但这对我来说是有意义的,当我一开始选择的时候。现在我已经足够成熟了,并且发现了它的一些局限性,比如缺乏可伸缩性。做了一些关于Mahout的研究,但这也适用于聚类/分类和搭配。opennlp是一个选项,但我不确定我可以用它多久。有什么好的地方适合大范围nlp吗?在

请注意-这个问题与我以前的问题-How can I improve the performance of NLTK? alternatives?无关。我已经把NLTK on a production web application读完了。在


Tags: 算法nlp选项地方分类公司聚类意义
1条回答
网友
1楼 · 发布于 2024-09-27 09:26:23

NLTK确实是一个很好的学习平台,但它的设计并不是为了强大地服务于数以百万计的客户。在

您可以用两种不同的方法来解决可伸缩性问题:

  • 第一个“大数据”方法:让你的算法适应MapReduce并在MongoDB/Hadoop/googlemapreduce/上运行它们。。。有不同的地方可以提供这样的解决方案(亚马逊、谷歌、Rackspace……)
  • 第二种“自力更生”的方法:使用常见的托管解决方案或您自己的数据中心。在

“大数据”方法

这意味着重新考虑你的算法。需要良好的数学背景和对算法的正确理解。也许你甚至可以替换算法,因为执行时间与工作量的关系不大。在

因此,就实现你的想法而言,这可能是最困难(甚至不可能)的解决方案,这取决于你的技能。对于部署和将来的好处,这是迄今为止最简单的解决方案。在

“自力更生”的方法

可伸缩性意味着不同的东西:

  • 更大的训练集
  • 更多客户
  • 更多算法和应用
  • 增加你的训练集可以意味着再培训或适应
  • 。。。在

关于可伸缩性有不同的数量级:您想扩展10倍、100倍、1000倍吗。。。?在

有不同的方法可以克服可伸缩性问题:

  • Parallellize:添加服务器的精确副本并执行负载平衡
  • 流水线:在不同的服务器上进行不同步骤的分割处理
  • 更昂贵的硬件,更快的CPU,RAM,磁盘,总线,ASIC。。。在
  • 客户端处理
  • 请求的缓存
  • 软件的性能调整,实现C/C++ +LI>中的瓶颈
  • 使用更好的算法
  • 更智能地分离离线操作(例如,使用cron作业)和每个请求执行的操作。在
  • 。。。在

无论可伸缩性是什么类型的,以及您使用什么方法来克服它,请执行负载测试,看看您能处理什么。由于您无法立即负担所有硬件的费用,因此有多种方法可以对扩展的基础设施进行负载测试:

  • 租用处理器、内存、磁盘空间。。。每小时,只够做负载测试和跳伞。这样,你就不需要买设备了。在
  • 风险更大:对比生产中更少、更便宜的设备进行负载测试并推断结果。也许你有一个关于你的算法如何扩展的理论模型,但是要小心副作用。布丁的证据在吃。在

接近VCs(就可扩展性而言)

  • 创建一个能清楚地自我解释你的想法的原型(不一定是可伸缩的)
  • 向自己证明,在未来的某个时候,一切都会好起来的,付出什么代价(最低/预期/最高一次性/持续成本)
  • 从一个私有测试版开始,这样可伸缩性从一开始就不是问题。测试版没有最后期限。估计可以,但没有最后期限。别在那件事上妥协!在

祝你好运!在

相关问题 更多 >

    热门问题