2015-05-07 3 views
0

Я реализовал логику использования stanford nlp, чтобы получить местоположение от конкретного английского предложения. Я использовал следующую банку Стэнфорд-corenlp-3.2.0.jar Стэнфорд-corenlp-3,2,0-models.jarНастройка отдельной модели jar в stanford nlp

Логика, которую я написал, следящие

public static edu.stanford.nlp.pipeline.StanfordCoreNLP snlp; 
    /** 
    * @see ServletContextListener#contextInitialized(ServletContextEvent) 
    */ 
    public void contextInitialized(ServletContextEvent arg0) { 
     Properties props = new Properties(); 
     props.put("annotators", "tokenize,ssplit,pos,lemma,parse,ner,dcoref"); 
     StanfordCoreNLP snlp = new StanfordCoreNLP(props); 
    } 

Однако из-за я чувствительный вопрос, мне было рекомендовано использовать stanford-corenlp-caseless-2015-04-20-models.jar вместо stanford-corenlp-3.2.0.jar. Из приведенного выше кода jar, который будет загружен по умолчанию, - stanford-corenlp-3.2.0-models.jar.

Тем не менее, я хочу настроить следующую модель: stanford-corenlp-caseless-2015-04-20-models.jar Пожалуйста, расскажите о том, как настроить его с помощью java-кода.

Я попробовал решение Габора. Однако я получил следующее исключение

SEVERE: Exception sending context initialized event to listener instance of class servlets.NLP_initializer 
java.lang.RuntimeException: edu.stanford.nlp.io.RuntimeIOException: Unrecoverable error while loading a tagger model 
    at edu.stanford.nlp.pipeline.StanfordCoreNLP$4.create(StanfordCoreNLP.java:493) 
    at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:81) 
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:260) 
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:127) 
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:123) 
    at servlets.NLP_initializer.contextInitialized(NLP_initializer.java:34) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: edu.stanford.nlp.io.RuntimeIOException: Unrecoverable error while loading a tagger model 
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:749) 
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:283) 
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:247) 
    at edu.stanford.nlp.pipeline.POSTaggerAnnotator.loadModel(POSTaggerAnnotator.java:78) 
    at edu.stanford.nlp.pipeline.POSTaggerAnnotator.<init>(POSTaggerAnnotator.java:62) 
    at edu.stanford.nlp.pipeline.StanfordCoreNLP$4.create(StanfordCoreNLP.java:491) 
    ... 14 more 
Caused by: java.io.IOException: Unable to resolve "edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger" as either class path, filename or URL 
    at edu.stanford.nlp.io.IOUtils.getInputStreamFromURLOrClasspathOrFileSystem(IOUtils.java:419) 
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:744) 
    ... 19 more 

ответ

2

См http://nlp.stanford.edu/software/corenlp.shtml#caseless

Копирование из документации:

можно запустить StanfordCoreNLP с Tagger, синтаксический анализатор и модели NER, игнорирующих капитализацию. Для этого загрузите пакет безплатных моделей. Не забудьте включить путь к фрейму нечувствительных к регистру символов в флагом -cp classpath. Затем набор свойств, которые указывают на эти модели следующим образом:

-pos.model Edu/Стэнфорд/NLP/модели/поз-Таггер/английский-безгильзовых-left3words-distsim.tagger

-parse.model Edu /stanford/nlp/models/lexparser/englishPCFG.caseless.ser.gz

-ner.model Edu/Стэнфорд/NLP/модели/нер/english.all.3class.caseless.distsim.crf.ser.gz edu/stanford/nlp/models/ner/english.muc.7class.caseless.distsim.crf.ser.gz edu/stanford/nlp/models/ner/english.conll.4class.caseless.distsim.crf.ser. gz

В коде, эти пути могут быть установлены с помощью:

props.put("pos.model", "edu/stanford/nlp/models/pos-tagger/english-caseless-left3words-distsim.tagger"); 
    props.put("parse.model", "edu/stanford/nlp/models/lexparser/englishPCFG.caseless.ser.gz"); 
    props.put("ner.model", "edu/stanford/nlp/models/ner/english.all.3class.caseless.distsim.crf.ser.gz edu/stanford/nlp/models/ner/english.muc.7class.caseless.distsim.crf.ser.gz edu/stanford/nlp/models/ner/english.conll.4class.caseless.distsim.crf.ser.gz"); 
+0

Я сделал изменения, как вы предложили, исключение я получаю java.lang.RuntimeException: edu.stanford.nlp.io.RuntimeIOException : Неустранимая ошибка при загрузке модели тегатора \t at edu.stanford.nlp.pipeline.StanfordCoreNLP $ 4.create (StanfordCoreNLP.java:493) ..... Дайте мне знать, если вам нужна полная трассировочная трассировка –

+0

Вы уверены, что имеете безвизовые модели в вашем пути к классу? –

+0

У меня есть stanford-corenlp-caseless-2015-04-20-models.jar в папке web-inf –

Смежные вопросы