Servlets 为什么在加载pos标记器时出错?

Servlets 为什么在加载pos标记器时出错?,servlets,stanford-nlp,pos-tagger,Servlets,Stanford Nlp,Pos Tagger,我正在尝试为lemma、pos、ner、tokenize编写代码,但面临许多问题,其中一个问题就是这个错误。如何解决此错误? 我必须使用servlet来完成主要工作,并且我已经在java类中编写了管道。 请帮忙。。提前谢谢 注意-我使用的是斯坦福corenlp 3.9.2 Pipeline.java import edu.stanford.nlp.pipeline.StanfordCoreNLP; import java.util.Properties; public class Pipel

我正在尝试为lemma、pos、ner、tokenize编写代码,但面临许多问题,其中一个问题就是这个错误。如何解决此错误? 我必须使用servlet来完成主要工作,并且我已经在java类中编写了管道。 请帮忙。。提前谢谢

注意-我使用的是斯坦福corenlp 3.9.2

Pipeline.java

import edu.stanford.nlp.pipeline.StanfordCoreNLP;

import java.util.Properties;

public class Pipeline {

    private static Properties properties;
    private static String propertiesName = "tokenize, ssplit, pos, lemma, ner, parse, sentiment";
    private static StanfordCoreNLP stanfordCoreNLP;

    private Pipeline() { }

    static {
        properties = new Properties();
        properties.setProperty("annotators", propertiesName);
    }

    public static StanfordCoreNLP getPipeline() {
        if(stanfordCoreNLP == null) {
            stanfordCoreNLP = new StanfordCoreNLP(properties);
        }
        return stanfordCoreNLP;
    }
}
预处理\u UserContent.java

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import edu.stanford.nlp.ling.CoreLabel;
import edu.stanford.nlp.pipeline.CoreDocument;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;
import javax.servlet.annotation.WebServlet;

@WebServlet("/Preprocessing_UserContent")
public class Preprocessing_UserContent extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet Preprocessing_UserContent</title>");            
            out.println("</head>");
            out.println("<body>");
            
            StanfordCoreNLP stanfordCoreNLP = Pipeline.getPipeline();

            String text = request.getParameter("textblock");
            out.println("text");

            CoreDocument coreDocument = new CoreDocument(text);

            stanfordCoreNLP.annotate(coreDocument);

            List<CoreLabel> coreLabelList = coreDocument.tokens();

            for(CoreLabel coreLabel : coreLabelList) {

                String lemma = coreLabel.lemma();

                out.println(coreLabel.originalText() + " = "+ lemma);

            }

            out.println("</body>");
            out.println("</html>");
        }
    }


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);  
    }
}
import java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入java.util.List;
导入edu.stanford.nlp.ling.corelab;
导入edu.stanford.nlp.pipeline.core文档;
导入edu.stanford.nlp.pipeline.StanfordCoreNLP;
导入javax.servlet.annotation.WebServlet;
@WebServlet(“/Preprocessing\u UserContent”)
公共类预处理\u UserContent扩展了HttpServlet{
受保护的void processRequest(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
setContentType(“text/html;charset=UTF-8”);
尝试(PrintWriter out=response.getWriter()){
/*TODO在此处输出您的页面。您可以使用以下示例代码*/
out.println(“”);
out.println(“”);
out.println(“”);
println(“Servlet预处理用户内容”);
out.println(“”);
out.println(“”);
StanfordCoreNLP StanfordCoreNLP=Pipeline.getPipeline();
String text=request.getParameter(“textblock”);
out.println(“文本”);
CoreDocument CoreDocument=新的CoreDocument(文本);
stanfordCoreNLP.注释(coreDocument);
List coreLabelList=coreDocument.tokens();
用于(CoreLabel CoreLabel:coreLabelList){
字符串引理=corelab.lemma();
out.println(corelab.originalText()+“=”+引理);
}
out.println(“”);
out.println(“”);
}
}
@凌驾
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
processRequest(请求、响应);
}
@凌驾
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
processRequest(请求、响应);
}
}
这个错误有什么解决办法吗

04-Oct-2020 21:10:31.630 SEVERE [http-nio-8080-exec-207] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Preprocessing_UserContent] in context with path [/MultiLabelDataClassification] threw exception
        edu.stanford.nlp.io.RuntimeIOException: Error while loading a tagger model (probably missing model file)
            at edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:799)
            at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:320)
            at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:273)
            at edu.stanford.nlp.pipeline.POSTaggerAnnotator.loadModel(POSTaggerAnnotator.java:85)
            at edu.stanford.nlp.pipeline.POSTaggerAnnotator.<init>(POSTaggerAnnotator.java:73)
            at edu.stanford.nlp.pipeline.AnnotatorImplementations.posTagger(AnnotatorImplementations.java:53)
            at edu.stanford.nlp.pipeline.StanfordCoreNLP.lambda$getNamedAnnotators$3(StanfordCoreNLP.java:521)
            at edu.stanford.nlp.pipeline.StanfordCoreNLP.lambda$null$30(StanfordCoreNLP.java:602)
            at edu.stanford.nlp.util.Lazy$3.compute(Lazy.java:126)
            at edu.stanford.nlp.util.Lazy.get(Lazy.java:31)
            at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:149)
            at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:251)
            at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:192)
            at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:188)
            at Pipeline.getPipeline(Pipeline.java:32)
            at Preprocessing_UserContent.processRequest(Preprocessing_UserContent.java:28)
            at Preprocessing_UserContent.doPost(Preprocessing_UserContent.java:62)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
            at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
            at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
            at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
            at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
            at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
            at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
            at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
            at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
            at java.base/java.lang.Thread.run(Thread.java:835)
        Caused by: java.io.IOException: Unable to open "edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger" as class path, filename or URL
            at edu.stanford.nlp.io.IOUtils.getInputStreamFromURLOrClasspathOrFileSystem(IOUtils.java:480)
            at edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:796)
            ... 40 more
04-Oct-2020 21:10:31.630严重[http-nio-8080-exec-207]org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service(),用于路径为[/MultiLabelDataClassification]的上下文中的Servlet[Preprocessing_UserContent]引发异常
edu.stanford.nlp.io.RuntimeIOException:加载标记器模型时出错(可能缺少模型文件)
位于edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:799)
在edu.stanford.nlp.tagger.maxent.MaxentTagger.(MaxentTagger.java:320)
在edu.stanford.nlp.tagger.maxent.MaxentTagger.(MaxentTagger.java:273)
位于edu.stanford.nlp.pipeline.POSTaggerAnnotator.loadModel(POSTaggerAnnotator.java:85)
位于edu.stanford.nlp.pipeline.POSTaggerAnnotator。(POSTaggerAnnotator.java:73)
在edu.stanford.nlp.pipeline.annotatorimplements.posTagger(annotatorimplements.java:53)
在edu.stanford.nlp.pipeline.StanfordCoreNLP.lambda$getNamedAnnotators$3(StanfordCoreNLP.java:521)
位于edu.stanford.nlp.pipeline.StanfordCoreNLP.lambda$null$30(StanfordCoreNLP.java:602)
位于edu.stanford.nlp.util.Lazy$3.compute(Lazy.java:126)
位于edu.stanford.nlp.util.Lazy.get(Lazy.java:31)
位于edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:149)
位于edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:251)
位于edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:192)
位于edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:188)
在Pipeline.getPipeline(Pipeline.java:32)
在预处理_UserContent.processRequest时(预处理_UserContent.java:28)
在Preprocessing_UserContent.doPost(Preprocessing_UserContent.java:62)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
位于org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
位于org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
位于org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
在org.apache.coyote.AbstractProcessor上