この例外を解決する方法を見つけることができなかったこの問題が出てきました。助けてください。 私のプログラムは、与えられた文章から名詞、動詞、形容詞を検索しようとしています(ここでは、名詞を見つけようとしました)。プログラムでエラーが発生した場合は、それらのエラーを指摘してください。修正することができます。 ここに私のコードです:この名詞のプログラムでこのArrayIndexOutOfBoundExceptionを処理する方法
enter code here
import java.io.FileInputStream;
import java.io.InputStream;
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;
import opennlp.tools.util.ObjectStream;
public class ParserTest {
static Set<String> nounPhrases = new HashSet<>();
static Set<String> adjectivePhrases = new HashSet<>();
static Set<String> verbPhrases = new HashSet<>();
static String result;
gui_demo gd = new gui_demo();
String line = practice.gui_demo.textField1.getText();
public ParserTest(String line) {
// TODO Auto-generated constructor stub
}
public ParserTest() {
// TODO Auto-generated constructor stub
}
//ObjectStream<String> lineArr = new PlainTextByLineStream(new StringReader(line));
String[] lineArr = line.split(".");
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());
}
if (p.getType().equals("JJ") || p.getType().equals("JJR") || p.getType().equals("JJS")) {
adjectivePhrases.add(p.getCoveredText());
System.out.println(p.getCoveredText());
}
if (p.getType().equals("VB") || p.getType().equals("VBP") || p.getType().equals("VBG")|| p.getType().equals("VBD") || p.getType().equals("VBN")) {
verbPhrases.add(p.getCoveredText());
System.out.println(p.getCoveredText());
}
for (Parse child : p.getChildren()) {
getNounPhrases(child);
}
}
public void parserAction() throws Exception {
try{
InputStream is = new FileInputStream("en-parser-chunking.bin");
ParserModel model = new ParserModel(is);
Parser parser = ParserFactory.create(model);
for(int i=1; i <= lineArr.length; i++){
Parse topParses[] = ParserTool.parseLine(lineArr[i], parser , 1); //getting Exception
for (Parse p : topParses){
//p.show();
getNounPhrases(p);
}
}
}catch(Exception e){
System.out.print(e);
}
}
public static void main(String[] args) throws Exception {
new ParserTest().parserAction();
result = "Nouns :" +nounPhrases.toArray(new String[nounPhrases.size()]);//+ "\n" + "Verbs:" + verbPhrases + "Adjectives:" + adjectivePhrases;
/*System.out.println("List of Noun Parse : "+nounPhrases);
System.out.println("List of Adjective Parse : "+adjectivePhrases);
System.out.println("List of Verb Parse : "+verbPhrases); */
}
}
、プログラムの出力は次のとおりです。
java.lang.ArrayIndexOutOfBoundsException:1