Java 不使用主方法执行解析器方法
当我试图在另一个servlet类中调用parserAction()方法时,得到的是一个空白数组。我无法在servlet中打印名词。但在这个类中,主要方法是正确打印名词数组。这是什么原因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
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");