неинициализированная константа в классе от ruby ​​gem - PullRequest
2 голосов
/ 01 июля 2010

Я пытаюсь реализовать гем под названием stanfordparser, который можно найти здесь: http://stanfordparser.rubyforge.org/

Это оболочка ruby ​​для анализатора естественного языка Java

Я занимаюсь разработкой в ​​netbeans, используя ruby ​​на rails / jruby на машине с windows 7. В противном случае мое веб-приложение работает нормально, но когда я пытаюсь добавить оболочку парсера, оно ломается.

Вот код, вызывающий проблему:

gem 'stanfordparser'

def show
 parser = StanfordParser::LexicalizedParser.new
 @words = parser.apply("This is a sentence.")
end

это в контроллере задач

и когда я иду на задание / шоу (которое, если я удаляю этот код, работает нормально), я получаю следующую ошибку

uninitialized constant TasksController::StanfordParser

Я убедился, что гем установлен в netbeans

Я очень новичок в рубине на рельсах и учу себя, так что это может быть чем-то очевидным

Спасибо!

РЕДАКТИРОВАТЬ: Я проверил журналы сервера Glassfish, и он говорит

SEVERE: Missing these required gems:
  stanfordparser

, что странно, потому что я установил гем с помощью netbeans, я сделал rake gems: install и netbeans говорят, что гем установлен. Я проверил в папке gem netbeans и там установлен самоцвет.

РЕДАКТИРОВАТЬ 2:

Итак, после большого количества исследований и головокружения, я решил немного упростить вещи, просто пытаясь использовать jruby для реализации классов Java, теперь мне нужно выяснить, как импортировать классы Java stanfordparser по крайней мере 50), я думаю, что мне нужно сжать все классы в банку, чтобы jruby мог загрузить его. может быть.

Ответы [ 2 ]

0 голосов
/ 02 июля 2010

Я смог решить мою проблему следующим образом:

вместо использования stanfordparser ruby ​​wrapper (который реализует java ruby ​​bridge для соединения java stanford parser с чистым ruby), я использую jruby, чтобы просто реализовать java из синтаксического анализатора stanford.

код, который заработал:

include Java
require 'C:\\Stanford-Parser\\Current\\stanford-parser.jar'
require 'rubygems'
include_class 'edu.stanford.nlp.parser.lexparser.LexicalizedParser'

lp = LexicalizedParser.new(args) #args is the arguments, not copied here
0 голосов
/ 01 июля 2010

Если вы используете Rails 3, тогда оператор gem 'stanfordparser' должен быть указан в Gemfile Bundler в корне проекта. В противном случае для Rails 2.x вам понадобится оператор config.gem 'stanfordparser' в config / environment.rb .

...