2010-11-03 7 views
6

Tengo un problema para resolver con FST. Básicamente, haré un analizador morfológico, y en este momento tengo que trabajar con transductores de gran tamaño. El rendimiento es el gran problema aquí.FST (transductores de estado finito) Bibliotecas, C++ o java

Recientemente, he trabajado en C++ en otros proyectos en los que las cuestiones de rendimiento, pero ahora, teniendo en cuenta I'am java, porque los beneficios de la java y java, porque es cada vez mejor.

que estudiaron algunas comparaciones entre Java y C++, pero no puede decidir qué idioma debo usar para este problema específico, ya que depende de lib en uso.

No encuentro mucha información sobre las librerías de java, entonces, mi pregunta es: ¿hay librerías Java de código abierto en las que el rendimiento sea bueno, como The RWTH FSA Toolkit que he leído en un artículo que es el más rápido?

Gracias a todos.

Respuesta

4

¿Cuáles son los "beneficios" de Java, para sus propósitos? ¿Qué problema específico resuelve esa plataforma que necesitas? ¿Cuál es la restricción de rendimiento que debe considerar? Eran las "comparaciones" justas, porque Java es realmente extremadamente difícil de comparar. También lo es C++, pero al menos puede obtener algunas garantías de límite algorítmicas de STL.

que sugieren nos fijamos en OpenFst y el AT & herramientas de transductores de estados finitos T. Hay otros por ahí, pero creo que su preocupación acerca de Java pone el carro delante del caballo. Concéntrese en lo que resuelve bien su problema.

Buena suerte!

0

El problema aquí es el tamaño mínimo de sus objetos en Java. En C++, sin métodos virtuales e identificación del tipo de tiempo de ejecución, sus objetos ponderan exactamente su contenido. Y el tiempo que su autómata toma para manipular la memoria tiene un gran impacto en el rendimiento.

Creo que esa debería ser la razón principal para elegir C++ sobre Java.

2

yo soy uno de los desarrolladores de la biblioteca morfologik-stemming. Es puro Java y su rendimiento es muy bueno, tanto cuando construyes el autómata como cuando lo usas. Lo usamos para el análisis morfológico en LanguageTool.

0

OpenFST es un C++ marco transductor de estados finitos que es muy amplia. Algunas personas de CMU lo trasladaron a Java para usarlo en su procesamiento de lenguaje natural. serie de post

Un blog describing it.
El código se encuentra on svn.

Actualización: Me portado a Java here

Cuestiones relacionadas