有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java getSentenceInstance和空白

我把一篇课文分成几个句子——创建一个数组,每个项目包含一个完整的句子。我决定最好的方法是使用BreakIterator类。以下是我正在使用的代码:

theSentences = new ArrayList<String>();
String myText = aString; //the text is produced through a text box
BreakIterator boundary = BreakIterator.getSentenceInstance();
boundary.setText(myText);
int start = boundary.first();
for (int end = boundary.next();
         end != BreakIterator.DONE;
         start = end, end = boundary.next())
{
    String temp = myText.substring(start,end);
    theSentences.add(temp.trim());
}

当用户记得在句末加空格(大多数人都这么做)时,这种方法绝对有效。然而,人们在打字时确实会出错,如果他们没有在句号后加上空格,代码似乎没有意识到句子已经到了结尾。我能做些什么

我确实意识到我可以使用正则表达式,但似乎最好使用BreakIterator,因为这就是它的用途。此外,写一个正则表达式来区分句号和句号的所有其他可能用法也会让我头疼:-)


共 (1) 个答案

  1. # 1 楼答案

    很少。分句不是100%可以完成的任务。我自己使用Stanford CoreNLP和作为管道一部分的ssplit注释器来进行句子拆分。对于简单的任务,这是一个巨大的jar,您可能不想下载,但它显示了这是一个多么复杂的任务

    对于句子拆分的轻量级实现,最好实现基于规则的正则表达式方法