Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不使用主方法执行解析器方法_Java_Arrays_Servlets_Hash_Nlp - Fatal编程技术网

Java 不使用主方法执行解析器方法

Java 不使用主方法执行解析器方法,java,arrays,servlets,hash,nlp,Java,Arrays,Servlets,Hash,Nlp,当我试图在另一个servlet类中调用parserAction()方法时,得到的是一个空白数组。我无法在servlet中打印名词。但在这个类中,主要方法是正确打印名词数组。这是什么原因 package com.books.servlet; import java.io.FileInputStream; import java.io.InputStream; import java.util.HashSet; import java.util.Set; import com.sun.c

当我试图在另一个servlet类中调用parserAction()方法时,得到的是一个空白数组。我无法在servlet中打印名词。但在这个类中,主要方法是正确打印名词数组。这是什么原因

    package com.books.servlet;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Set;

import com.sun.corba.se.impl.orb.ParserAction;

import opennlp.tools.cmdline.parser.ParserTool;
import opennlp.tools.parser.Parse;
import opennlp.tools.parser.Parser;
import opennlp.tools.parser.ParserFactory;
import opennlp.tools.parser.ParserModel;

public class ParserTest {



    public static Set<String> nounPhrases = new HashSet<>();


    public String line = "I need the java book";



    public void getNounPhrases(Parse p) {
        if (p.getType().equals("NN") || p.getType().equals("NNS") || p.getType().equals("NNP")
                || p.getType().equals("NNPS")) {
            nounPhrases.add(p.getCoveredText());
            // System.out.println(p.getCoveredText());
        }

        for (Parse child : p.getChildren()) {
            getNounPhrases(child);

        }
    }

    public  void parserAction() throws Exception {
        InputStream is = new FileInputStream("en-parser-chunking.bin");
        ParserModel model = new ParserModel(is);
        Parser parser = ParserFactory.create(model);
        Parse topParses[] = ParserTool.parseLine(line, parser, 1);
        for (Parse p : topParses) {
            // p.show();
            getNounPhrases(p);
        }
    }

      public static void main(String[] args) throws Exception {
          new ParserTest().parserAction();
          System.out.println("List of Noun Parse : "+nounPhrases);

         }




    }

这里我需要在不执行main方法的情况下提取名词。因为我正在开发一个web应用程序。我需要在一个servlet类中显示这些提取的名词。

您需要在响应中写入所需内容,例如:

response.getWriter().println("Whatever you want to write in the response");

但首先,我建议您阅读一些好的Java书籍,因为您的代码不是很好,而且servlet是处理Java web应用程序的一种旧方法,现在人们使用其他技术,例如使用JSP或JSF的模板、REST应用程序的JAX-RS、SOAP应用程序的JAX-WS等等

它只给我输出[]…为什么解析器方法没有执行?当我用main方法尝试它时,它工作得很好……但在servlet内部,它不是执行和调试代码,我无法猜测那些ParserTool/ParserModel在做什么。我猜您没有找到文件“en parser chunking.bin”,因为当您使用容器启动web应用程序时,当前目录是不同的,并且您的代码在这种情况下不会像应该的那样崩溃。
response.getWriter().println("Whatever you want to write in the response");