2017-06-09 22 views
0

私のアプリケーションでは、mainメソッドなしで実行できないメソッドがあります。メインメソッド内でのみ実行されます。私がサーブレットクラスの中でそのメソッドを呼び出すとき。 [不毛,,世界、:それはそれは、出力メインクラス以外でParserメソッドを呼び出す際の例外

名詞解析の

一覧の下に私を与え例外メインメソッド

package com.books.servlet; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.net.URL; 
import java.nio.channels.Channels; 
import java.nio.channels.ReadableByteChannel; 
import java.util.HashSet; 
import java.util.Set; 

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 { 

    // download 

    public void download(String url, File destination) throws IOException, Exception { 
     URL website = new URL(url); 
     ReadableByteChannel rbc = Channels.newChannel(website.openStream()); 
     FileOutputStream fos = new FileOutputStream(destination); 
     fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); 
     fos.close(); 
     rbc.close(); 

    } 

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

    private static String line = "The Moon is a barren, rocky world "; 

    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()); 
     } 

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

    public void parserAction() throws Exception { 
     // InputStream is = new FileInputStream("en-parser-chunking.bin"); 
     File modelFile = new File("en-parser-chunking.bin"); 

     if (!modelFile.exists()) { 
      System.out.println("Downloading model."); 
      download("https://drive.google.com/uc?export=download&id=0B4uQtYVPbChrY2ZIWmpRQ1FSVVk", modelFile); 

     } 
     ParserModel model = new ParserModel(modelFile); 
     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); 

    } 
} 

  1. 私のクラスを表示します月]

それから私は主な方法とコメントしました。それは私に

Error in browser

はなぜこれをである私のブラウザで以下の例外

EXception

とエラー以下を与える私のサーブレットクラス

if (name.equals("bkDescription")) { 

        bookDes = value; 

        try { 

         new ParserTest().parserAction(); 

         System.out.println("Nouns Are"+ParserTest.nounPhrases); 

        } catch (Exception e) { 

        } 

でParserAction()メソッドと呼ばれます起こっている?私はこれをmainメソッドで実行できます。しかし、私はメインメソッドを削除し、私のサーブレットを呼び出しました。それは例外を与えます。この問題を解決する方法はありますか?

注 - OpenNLPのマニュアルでは、以下の手順を読みましたが、明確なアイデアはありません。彼の問題を解決するのを助けてください。パーサーに新しいオペレータを介してパーサを作成するのではなく、使用されるべきである ファクトリメソッドをインスタンス化するための他の成分とは異なり

。 パーサーモデルは、チャンクパーサーまたはツリー パーサーのパーサーの実装を正しく選択する必要があります。 ファクトリメソッドは、モデルから型パラメータを読み込み、対応するパーサ実装の インスタンスを作成します。

答えて

0

どちらかParserTestクラスのオブジェクトを作成するか、この行に新しいキーワードを削除new ParserTest().parserAction();

関連する問題