0
別のサーブレットクラス内でparserAction()メソッドを呼び出そうとすると、空の配列が返されます。私はサーブレットの中で名詞を印刷できません。しかし、MAIN METHOD名詞配列を持つこのクラスの中では、正しく印刷されています。これの理由は何ですか?メインメソッドでパーサメソッドを実行する
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);
}
}
以下は私のサンプルサーブレットクラスです。それは私に空の配列を示しています[]
public class test extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
.......
.......
.......
ParserTest pt = new ParserTest();
pt.parserAction();
System.out.println("List of Noun Parse : "+pt.nounPhrases);
System.out.println("List of Noun Parse : "+ParserTest.nounPhrases);
}
}
ここでは、メインメソッドを実行せずに名詞を抽出する必要があります。私はWebアプリケーションを開発しています。これらの抽出された名詞を私のサーブレットクラスの中に表示する必要があります。また、サーブレットがあり、
response.getWriter().println("Whatever you want to write in the response");
をしかし、あなたのコードは非常に良いではないとして最初、私はいくつかの良いのJavaの本を読むことをお勧めします:あなたが行うことによって、たとえば、あなたが反応して欲しいものを書く必要が
これは私に出力を与えます。 ..そのパーサメソッドは実行されていませんか?メインメソッドで試してみるとうまくいきますが、サーブレット内で実行されていません – user8048032
コードを試してデバッグしてください。ParserTool/ParserModelが何をしているのか推測できません。コンテナを使用してWebアプリケーションを起動すると、現在のディレクトリが異なり、このような場合にコードがクラッシュしないために、ファイル "en-parser-chunking.bin"が見つからないと推測しますおそらくすべきです。 –