如何使用split在Java中将段落拆分为适当的句子?

问题描述

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

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

我打算做的就是将此段落拆分为适当的句子,然后放入数组中。

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

请帮助!

解决方法

您可以仅添加句号'。到拆分后的字符串。

类似的东西

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

在那个方向上的东西。

,

像这样的Somethig应该可以工作:

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);
        }
    }

}
,

假设至少有可能句子拆分不是自然语言处理的最后要求,则应考虑使用natural language processing (NLP)之类的OpenNLP库。多亏了Gate projectEnglish language processing pipeline available as a web page,您可以通过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+");

结果:

This is a test
This is a T.L.A. test.

请注意,有些缩写词不以大写字母结尾,例如缩写词,先生等。还有一些句子也不以句号结尾!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...