FST (конечные преобразователи) библиотеки, C ++ или Java - PullRequest
7 голосов
/ 03 ноября 2010

У меня есть проблема, решаемая с помощью FST.По сути, я сделаю морфологический анализатор, и в этот момент мне нужно работать с большими преобразователями.Здесь большая проблема с производительностью.

В последнее время я работал на c ++ в других проектах, где важна производительность, но сейчас я рассматриваю java, потому что преимущества java и потому что java улучшается.

Я изучил некоторые сравнения между Java и C ++, но я не могу решить, какой язык я должен использовать для этой конкретной проблемы, потому что это зависит от используемой библиотеки.

Я не могу найти много информации о библиотеках JavaИтак, мой вопрос: есть ли какие-нибудь Java-библиотеки с открытым исходным кодом, в которых производительность хорошая, например, RWTH FSA Toolkit , которую я прочитал в статье, которая является самой быстрой библиотекой c ++?* Спасибо всем.

Ответы [ 5 ]

4 голосов
/ 01 февраля 2011

Каковы «преимущества» Java для ваших целей?Какую конкретную проблему решает эта платформа, что вам нужно?Какое ограничение производительности вы должны учитывать?Были «сравнения» справедливыми, потому что Java на самом деле чрезвычайно сложно измерить.Как и C ++, но вы можете, по крайней мере, получить некоторые алгоритмические граничные гарантии от STL.

Я предлагаю вам взглянуть на OpenFst и инструменты конечного состояния AT & T.Есть и другие, но я думаю, что ваше беспокойство по поводу Java ставит тележку перед лошадью - сосредоточьтесь на том, что хорошо решает вашу проблему.

Удачи!

2 голосов
/ 19 июня 2012

Я один из разработчиков morfologik-stemming библиотеки.Это чистая Java, и ее производительность очень хорошая, как при создании автомата, так и при его использовании.Мы используем его для морфологического анализа в LanguageTool.

2 голосов
/ 11 августа 2011

http://jautomata.sourceforge.net/ и http://www.cs.duke.edu/csed/jflap/ основаны на библиотеках конечных автоматов Java, хотя у меня нет опыта их использования, поэтому я не могу комментировать эффективность.

0 голосов
/ 14 октября 2014

OpenFST - это интегрированная среда преобразователей конечных состояний C ++.Некоторые люди из CMU портировали его на Java для использования при обработке их естественного языка.

Серия постов в блоге , описывающая его .
Код расположен на svn .

Обновление: я перенес его на java здесь

0 голосов
/ 05 февраля 2012

Проблема здесь заключается в минимальном размере ваших объектов в Java.В C ++, без виртуальных методов и идентификации типов во время выполнения, ваши объекты точно соответствуют их содержанию.И время, которое ваши автоматы затрачивают на манипулирование памятью, сильно влияет на производительность.

Я думаю, что это должно быть основной причиной выбора C ++ вместо Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...