Ich verwende stanford-corenlp-3.2.0.jar
und stanford-corenlp-3.2.0-models.jar
für die Identifizierung von Standorten in einem bestimmten Satz. Allerdings habe ich beobachtet, dass stanford-nlp
ist nicht in der Lage, den Ort zu identifizieren, wenn das Wort in kleinen Fall übergeben wird.Abrufen von Standorten in Standford-Kern
Zum Beispiel: "Find a restaurant in London"
. Hier wird Stanford London als Standort identifizieren.
Wenn jedoch der folgende Satz wie folgt übergeben wird: "Suchen Sie ein Restaurant in London", dann kann Stanford london
nicht als Standort identifizieren.
Um dies zu beheben, konvertiere ich den ersten Buchstaben jedes Wortes in einem Satz in Großbuchstaben. Ich bekomme jedoch andere Probleme, wenn ich das tue. stanford-corenlp-caseless-2015-04-20-models.jar
:
Basierend auf Antwort von meskobalazs zur Verfügung gestellt haben ich das Glas heruntergeladen.
Ich ersetzte mit dem früheren Glas: stanford-corenlp-3.2.0-models
.
aber jetzt habe ich die unten Ausnahme
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
Der Ort bin immer, wo ich bin initialisiert, während der Server startet ist
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);
}
Bitte helfen Sie mir, wie Sie dieses Problem zu beheben.
Ich habe versucht, das Modellglas durch das von Ihnen angegebene zu ersetzen. Aber jetzt kann ich das nlp nicht initialisieren. Die Ausnahme ist jetzt java.lang.RuntimeException: edu.stanford.nlp.io.RuntimeIOException: Fehler beim Laden eines Tagger-Modells \t bei edu.stanford.nlp.pipeline.StanfordCoreNLP $ 4.create (StanfordCoreNLP.java:493) \t bei edu.stanford.nlp.pipeline.AnnotatorPool.get (AnnotatorPool.java:81) \t bei edu.stanford.nlp.pipeline.StanfordCoreNLP.construct (StanfordCoreNLP.java:260) –
Wie Sie eine andere Modelle laden möchten , müssen Sie Ihren Modellladecode ändern, könnten Sie den relevanten Code in der Frage veröffentlichen? – meskobalazs
Ich initialisiere wie public void contextInitialized (ServletContextEvent arg0) { \t Eigenschaften props = new Properties(); props.put ("Annotatoren", "Tokenize, sssplit, pos, Lemma, Parse, ner, dcoref"); StanfordCoreNLP snlp = neue StanfordCoreNLP (Requisiten); NlpBO.snlp = snlp; } –