Конфликт между Stanford Parser и Stanford POS tagger

Я работаю над проектом, который требует от меня добавления тегов POS во входную строку. Я также собираюсь использовать структуру грамматических зависимостей, сгенерированную анализатором Стэнфорда, для последующей обработки.

На что следует указать, прежде чем я перейду к своей проблеме.

  1. Для POS-тегов я использую http://nlp.stanford.edu/software/tagger.shtml (версия 3.3.1)
  2. Для генерации грамматической зависимости я использую http://nlp.stanford.edu/software/lex-parser.shtml#Download (версия 3.3.1)

Я включил обе эти jar-файлы в свой путь к классу. (Включив, я использую maven для извлечения stanford-jar-анализатора из репозитория maven и включения jar-файла POStagger, используя шаги, упомянутые ниже)

Теперь проблема в том, что всякий раз, когда я пытаюсь получить теги POS для входной строки, я получаю следующую ошибку.

Exception in thread "main" java.lang.NoSuchMethodError: edu.stanford.nlp.tagger.maxent.TaggerConfig.getTaggerDataInputStream(Ljava/lang/String;)Ljava/io/DataInputStream;

Моя интуиция подсказывает, что это связано с тем, что в банке парсера Stanford также есть пакет Maxent, содержащий класс TaggerConfig. Каждый раз, когда я запрашиваю POS-теги для строки, программа смотрит в банку парсера Stanford, а не в банку Stanford POStagger, отсюда и возникает ошибка.

Я использую maven и не могу найти банку POStagger в Maven central, поэтому я включил ее в свой локальный репозиторий maven, используя инструкции на http://charlie.cu.cc/2012/06/how-add-external-libraries-maven/.

Я был бы очень признателен, если бы кто-нибудь мог указать на какое-либо решение этой проблемы


person Prateek    schedule 16.03.2014    source источник
comment
попробуйте опубликовать эту ссылку SO и проблему также в их списке рассылки, nlp.stanford.edu/ software / corenlp.shtml # Mail   -  person alvas    schedule 17.03.2014


Ответы (2)


Вы используете два файла jar. Перейдите к BuildPath и измените порядок импортированных файлов jar-файлов. Это должно исправить это.

person Chaitanya Shivade    schedule 29.03.2014

Метод, на который жалуется Java, был в выпусках Stanford POS Tagger в период 2009-2011 годов, но не был ни в одном недавнем (или древнем) выпуске.

Итак, это означает, что у вас есть еще одна банка на пути к классу, которая содержит старую версию теггера Stanford POS, скрытую внутри него, и был вызван его MaxentTagger, а не тот, что из jar-файлов v3.3.1 (из-за поиска пути к классам приказ). Вы должны найти это и пожаловаться.

Наиболее частым случаем в последнее время был CMU ark-tweet-nlp.jar. См. http://nlp.stanford.edu/software/corenlp-faq.shtml#nosuchmethoderror.

Перекрывающиеся классы в выпусках Стэнфордского университета не представляют проблемы: если вы используете одну и ту же версию средства тегирования и синтаксического анализатора, они идентичны.

person Christopher Manning    schedule 04.04.2014