2013-10-26 24 views
0

首先,我正在使用OpenNLP,但是知识并不需要,但可能会有用。使用整数获取字符串数组部分

的字符串被输入到该方法FindName

String input = "Billy Smith the chicken crossed the road to visit Fred Jones"; 

它由分词器处理,得到为的NameFinder输入:

String[] tokenized = "Billy","Smith","the","chicken","crossed","the","road","to","visit","Fred","Jones"; 

其中搜索名称,结果作为在“for”循环中生成的两个字符串给出

"[0..2) person","[9..11) person" 

现在我怎么能把原始名称(“比利史密斯”和“弗雷德琼斯”)放入一个arraylist或类似的字符串数组?

到目前为止,我曾尝试:

for(Span s: nameSpans){ 
          numbers = s.toString().replace("[", ""); 
//is "[0..2) person" and "[9..11) person" 
          sect = numbers.split("\\) "); 
         } 

         int x; 
         for(x=0;x<sect.length;x++){ 
         if(x%2 == 0){ 
          String[] numb = sect[x].split(".."); 

          int n; 
          int first, second; 
          first = Integer.parseInt(numb[0]); 
          second = Integer.parseInt(numb[1]); 
          for(n=first;n<second;n++){ 
          if(sentence.hashCode() == n){ 
           name.add(sentence[n]); 
          } 

,但有没有运气。

回答

0

有一个内置的Span对象的静态方法,它可以做你想做的事。看到这个答案。 OpenNLP Name Entity Recognizer output

+0

下一次请阅读问题-.- – Greg

+0

,如果这是一个问题: 我怎么可以把原来的名字(“比利·史密斯”和“弗雷德 - 琼斯”)成一个arraylist或类似的字符串数组? 然后这就是你如何使用设计的方法获得名字到数组中: //“tokens”这里是你的句子中单词的String [] Span [] find = nf.find(tokens ); //使用Span的静态方法获取名称的String [] String [] namedEntities = Span.spansToStrings(find,tokens); 这是在我粘贴的链接 – markg

+0

Aaa我的道歉,它的滑稽如何误读一件作品可以做出这样的区别。不幸的是,谢谢你的答案,因为有人问我已经开始使用斯坦福NLP了,我发现它更容易操作输出格式。 – Greg

0

它可以通过解析输出字符串为整数,然后创建一个与原始输入字符串的字符串数组创建的话,我可以再用正确的电话号码的来电为此给出全名和任何中间名完成之间。

工作代码:

for(Span s: nameSpans){ 
          String a = s.toString().replace("[", "").replace(")", ""); 
          String[] b = a.split("\\s"); 
          String[] c = b[0].split("\\.."); 
          int first = Integer.parseInt(c[0]); 
          int second = Integer.parseInt(c[1]); 
          String[] word = input.split("\\s"); 
          int n; 
          for(n=first;n<second;n++){ 
          names.add(word[n]); 
          System.out.println(word[n]); 
          } 
         } 
相关问题