FST(有限状态传感器)库,C ++或Java

时间:2010-11-03 15:05:26

标签: java c++ performance fsm

我有使用FST解决的问题。 基本上,我将制作一个形态解析器,在这一刻我必须使用大型传感器。表演是这里的重大问题。

最近,我在其他性能很重要的项目中使用c ++,但是现在,我考虑使用java,因为java的好处因为java越来越好。

我研究了java和c ++之间的一些比较,但我无法确定我应该使用哪种语言来解决这个问题,因为它依赖于使用的lib。

我找不到关于java的lib的很多信息,所以,我的问题是:是否有任何性能良好的开源java库,比如我在一篇文章中读到的最快的The RWTH FSA Toolkit c ++ lib?

谢谢大家。

6 个答案:

答案 0 :(得分:4)

为了您的目的,Java的“好处”是什么?该平台解决了您需要的具体问题是什么?您必须考虑的性能限制是什么?是“比较”公平,因为Java实际上非常难以进行基准测试。 C ++也是如此,但你至少可以从STL获得一些算法边界保证。

我建议你看一下OpenFst和AT& T有限状态传感器工具。那里还有其他人,但我认为你对Java的担忧会把车推到马前 - 专注于什么能很好地解决你的问题。

祝你好运!

答案 1 :(得分:2)

http://jautomata.sourceforge.net/http://www.cs.duke.edu/csed/jflap/基于Java有限状态机库,虽然我没有使用它们的经验,所以我无法对效率发表评论。

答案 2 :(得分:2)

我是morfologik-stemming库的开发人员之一。它是纯Java,它的性能非常好,无论是在构建自动机时还是在使用它时。我们在LanguageTool中用它进行形态分析。

答案 3 :(得分:0)

这里的问题是Java中对象的最小大小。在C ++中,没有虚拟方法和运行时类型标识,您的对象就会严格加权其内容。而自动机操作内存的时间对性能有很大影响。

我认为这应该是选择C ++而不是Java的主要原因。

答案 4 :(得分:0)

OpenFST是一个非常全面的C ++有限状态传感器框架。 CMU的一些人将其移植到Java用于他们的自然语言处理。

博客文章系列describing it 代码位于on svn

更新: 我把它移植到java here

答案 5 :(得分:0)

Lucene 拥有出色的 implementation FST,它易于使用且性能高,使得 Elasticsearch、Solr 等查询引擎能够提供非常快速的基于亚秒级的查询。让我举个例子:

list1 = [[1.0, 0.0, 0.0],[0.0, 0.0, 1.0],[0.0, 0.0, 1.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]]