Самый эффективный парсер в NLTK?

Я не могу найти алгоритм синтаксического анализа в NLTK, который анализирует предложение в течение разумного промежутка времени при создании экземпляра с большой грамматикой (при обучении более чем 20 или более файловым файлам в Penn Treebank результаты анализа занимают несколько минут или дольше, в зависимости от синтаксического анализа алгоритм). Я использую весь банк деревьев для обучения - всего ~2400 файловых файлов - поэтому такое количество времени на предложение неосуществимо, так как я пытаюсь проанализировать весь набор тестов этого дерева (файловые файлы 2300 - 2399).

Алгоритмы, которые я пробовал до сих пор, включают в себя:

  • ViterbiParser

  • Все алгоритмы ChartParser

  • RecursiveDescentParser (фактически завершается с RecursionError сразу после запуска)

Если есть какой-либо алгоритм, который можно быстро анализировать при обучении большой грамматике (даже если он не содержится в библиотеке NLTK), я был бы благодарен за указание в этом направлении.

Мне известен модуль CoreNLPParser, однако, насколько мне известно, его можно вызывать только с уже загруженной грамматикой, которая не соответствует моему требованию, так как я ищу алгоритм для оценки по тестовому набору Penn Treebank и, следовательно, должен способность определять грамматику, которая будет использоваться алгоритмом.

0 ответов

Вы можете попробовать Benepar (нейронный парсер Беркли)

Он имеет лицензию MIT и интегрируется с NLTK или spaCy. Языковая поддержка: английский, китайский, немецкий, баскский, французский, иврит, венгерский, корейский, польский, шведский

Другие вопросы по тегам