2010-11-03 74 views
6

我有一個問題需要解決使用FSTs。 基本上,我會做一個形態解析器,在這一刻我必須使用大型換能器。表現是這裏的大問題。FST(有限狀態傳感器)庫,C++或java

最近,我在C++中工作,其他項目的表現很重要,但現在,我考慮java,因爲java的好處,因爲java越來越好。

我研究了java和C++之間的一些比較,但我不能決定我應該使用哪種語言來解決這個特定問題,因爲它取決於使用中的lib。我的問題是:是否有任何開放源代碼的Java庫在其中的性能很好,如The RWTH FSA Toolkit,我讀了一篇文章,是最快的C++庫?

謝謝大家。

回答

4

爲了您的目的,Java的「優點」是什麼?該平臺解決您需要的具體問題是什麼?你必須考慮什麼性能約束? 「比較」是否公平,因爲Java實際上很難進行基準測試。 C++也是如此,但您至少可以從STL獲得一些算法邊界保證。

我建議你看看OpenFst和AT有限狀態傳感器的工具。還有其他的東西,但我認爲你對Java的擔心會把車放在馬上 - 關注什麼能很好地解決你的問題。

祝你好運!

0

這裏的問題是Java中對象的最小尺寸。在C++中,如果沒有虛擬方法和運行時類型標識,則對象會精確計算其內容。而你的自動機操縱記憶的時間對性能有很大的影響。

我認爲這應該是選擇C++ over Java的主要原因。

2

我是morfologik-stemming庫的開發人員之一。這是純Java,它的性能非常好,無論是在構建自動機器時還是在使用它時。我們將它用於LanguageTool中的形態分析。

0

OpenFST是一個非常全面的C++有限狀態轉換器框架。來自CMU的一些人將它移植到Java中用於自然語言處理。

博客文章系列describing it
該代碼位於on svn。我把它移植到了java here