Sto utilizzando stanford-corenlp-3.2.0.jar
e stanford-corenlp-3.2.0-models.jar
per identificare posizioni in una frase particolare. Tuttavia, ho osservato che stanford-nlp
non è in grado di identificare la posizione se la parola viene passata nel caso di piccole dimensioni.Ottenimento di posizioni in standford core nlp
Ad esempio: "Find a restaurant in London"
. Qui Stanford identificherà Londra come luogo.
Tuttavia, se la seguente frase è passata come segue: "Trova un ristorante in londra", quindi stanford non è in grado di identificare london
come posizione.
Per risolvere questo, sto convertendo la prima lettera di ogni parola in una frase in maiuscolo. Tuttavia, sto ottenendo altri problemi se faccio questo.
in base alla risposta fornita da meskobalazs, Ho scaricato il vaso: stanford-corenlp-caseless-2015-04-20-models.jar
.
Ho sostituito con il vaso precedente: stanford-corenlp-3.2.0-models
.
Comunque ora sto ottenendo l'eccezione di seguito
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
Il luogo, dove sono in fase di inizializzazione, mentre il server si avvia è
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);
}
Please help me su come risolvere questo.
Ho provato a sostituire il vaso modello con quello specificato. Comunque ora non sono in grado di inizializzare il nlp. L'eccezione ora è java.lang.RuntimeException: edu.stanford.nlp.io.RuntimeIOException: Errore irreversibile durante il caricamento di un modello di tagger \t a edu.stanford.nlp.pipeline.StanfordCoreNLP $ 4.create (StanfordCoreNL.java:493) \t a edu.stanford.nlp.pipeline.AnnotatorPool.get (AnnotatorPool.java:81) \t a edu.stanford.nlp.pipeline.StanfordCoreNLP.construct (StanfordCoreNLP.java:260) –
Come si desidera caricare un diverso modelli , è necessario modificare il codice di caricamento del modello, potresti pubblicare il codice pertinente nella domanda? – meskobalazs
Sto inizializzando come public void contextInitialized (ServletContextEvent arg0) { \t Proprietà props = new Properties(); props.put ("annotators", "tokenize, ssplit, pos, lemma, parse, ner, dcoref"); StanfordCoreNLP snlp = new StanfordCoreNLP (oggetti di scena); NlpBO.snlp = snlp; } –