如何使用split()将java中的段落拆分成适当的句子?

如何使用split()将java中的段落拆分成适当的句子?,java,string,split,Java,String,Split,我想把段落分成句子。例如:“玛丽有一只小羊羔。它的羊毛是白色的。”我想把它分成: “玛丽有一只小羊羔。” “它的羊毛是白色的。” 目前我尝试使用text.split(“[.]”);结果是: “玛丽有一只小羊羔”(没有句号礼物,我需要它) “它的羊毛是白色的”(句子前有空格,但仍然没有句号) 我想做的是把这段分成适当的句子,并把它放进数组 String text = sc.nextLine(); String[] sentence = text.split("[.]"); 请

我想把段落分成句子。例如:“玛丽有一只小羊羔。它的羊毛是白色的。”我想把它分成: “玛丽有一只小羊羔。” “它的羊毛是白色的。”

目前我尝试使用text.split(“[.]”);结果是: “玛丽有一只小羊羔”(没有句号礼物,我需要它) “它的羊毛是白色的”(句子前有空格,但仍然没有句号)

我想做的是把这段分成适当的句子,并把它放进数组

String text = sc.nextLine();
String[] sentence = text.split("[.]");

请帮忙

您可以在拆分后将句号“.”附加到字符串中

有点像:

String[] splitString = theString.split("[.]");
for(String s : splitString){
    s += ".";
}

朝那个方向的东西。

像这样的东西应该有用:

public class Main {
    public static void main(String[] args) {
        String paragraph = "Mary had a little lamb. Its fleece was white.";

        String sentences[] = paragraph.split("[.]");

        for (String sentence:sentences){
            System.out.println(sentence);
        }
    }

}

假设至少有一个机会,句子分裂不是最后一点自然语言处理所需的,你应该考虑使用一个类似的库。您可以通过web界面试用OpenNLP,这要感谢。确保使用“自定义注释”按钮查看句子结构。

假设以下句子:

String sResult = "This is a test. This is a T.L.A. test.";
所以你最好试试这个

String sResult = "This is a test. This is a T.L.A. test.";
String[] sSentence = sResult.split("(?<=[a-z])\\.\\s+");

请注意,有些缩写不以大写字母结尾,例如abbrev.,Mr.,等等。。。还有一些句子不以句号结尾

您应该使用一个具有正查找周期的正则表达式。您可以使用一个点(
)字符拆分该周期,修剪字符串,然后附加缺少的点。您能详细介绍一下它的应用吗?如果这是一个编程任务,那么正则表达式的使用可能会完成这项工作,但是如果这是一个更大的应用程序,输入可能只是任何句子,那么您不应该尝试编写自己的解决方案,而应该查看包含句子拆分器的库。使用现实世界中的自制解决方案,例如有不同类型的句子(好的,你可以写一个包含问号的正则表达式等),但也可以在句子中使用点-参见我刚才使用的等。谢谢,但它只解决了部分问题。它负责数组中每个元素末尾的句号,即每个句子。虽然在第一句之后,每个句子都以空格开头。当使用
split(“”)
进一步将这些句子拆分成单词时,这个空格会带来麻烦。它考虑了第一个空格并将其打印出来。我想要一个使用
split()
的解决方案,因为我还没有了解
java.text.BreakIterator
。因此,如果我必须解释我的代码,我将无法做到这一点。如果可能,如果您能帮助我改用
split()
方法,我将不胜感激。谢谢though@EarthyCalf哦,好的,我明白了。我编辑了我的答案这几乎完美,尽管有办法在第一句末尾加上句号。我试了好几个句子,只有最后一句有句号。
This is a test
This is a T.L.A. test.