2016-04-18 4 views
0

SentiWord-Methode nimmt String-Argumente und verwendet Tagger-Methode, um ein Wort als Verb oder Nomen zu markieren .... etc Wenn ich diesen Code ausführen I get "java.lang.StringIndexOutOfBoundsException: String-Index außerhalb des Bereichs: -3". Ich weiß, dass es ähnliche Fragen wie diese gibt, aber ich kann sie nicht anwenden, um die Ausnahme loszuwerden.Ich bekomme "java.lang.StringIndexOutOfBoundsException: String-Index außerhalb des Bereichs: -3"

public static String SentiWord(String stri) { 
     MaxentTagger tagger = new MaxentTagger("taggers/english-left3words-distsim.tagger"); 
      String sample=stri; 
      sample = sample.replaceAll("([^a-zA-Z\\s])", ""); 
      String[] words = sample.split("\\s+"); 
      String taggedSample = tagger.tagString(sample); 
      String[] taggedWords = taggedSample.split("\\s+"); 
      double totalScore = 0; 
      SWN3 test = new SWN3(); 
      for (int i=0; i<taggedWords.length;i++) { 
       String tail = taggedWords[i].substring(words[i].length() + 1); 
       .... 
       ... 
       } 

Was ich versuche:

if (words[i].length()>0) // This line 
      tail = taggedWords[i].substring(words[i].length() + 1); 

Aber Ausnahme scheint nicht zu helfen go.Please.

+0

'getaggedWords' und' words' sind unterschiedliche Array mit unterschiedlicher Länge –

+0

ändern Sie Ihre Bedingung in - 'if (taggedWords [i] .length()> = words [i] .length)' –

+0

Beim Buchen von Ausnahmen, bitte immer Fügen Sie den StackTrace hinzu, da dies hilfreich ist. –

Antwort

1

offensichtlich die words[i] länger als taggedWords[i] Versuchen sie beide für Debug-Zwecke zu drucken und ich wette, dass das ist, was Sie sehen.

Verwandte Themen