在句子级别拆分原始文本

时间:2017-03-06 00:35:44

标签: java string nlp stanford-nlp sentence-synthesis

在句子级别上,在Java中分割没有标点符号的文本的最佳方法是什么?

文本可能包含多个没有标点符号的句子,例如:

String text = "i ate cornflakes it is a sunny day i have to wash my car";
String[] sentences = splitOnSentenceLevel(text);
System.out.print(Arrays.toString(sentences));
>>>["i ate cornflakes", "it is a sunny day", "i have to wash my car"]

我能找到的唯一解决方案是训练一个n-gram模型,该模型告诉每个位置作为句子结尾的概率,训练有间断的文本数据。但设置它似乎是一项艰巨的任务。

public String[] splitOnSentenceLevel(String text) {
    List<String> sentences = new ArrayList<String>();
    String currentSentence = "";
    for(String word: text.split(" ")) {
        currentSentence += " " + word;
        if(nGramClassifierIsLastWordOfSentence(word)) {
            sentences.add(currentSentence);
            currentSentence = "";
        }
    }
    String[] sentencesArray = new String[ sentences.size() ];
    sentences.toArray( sentencesArray );
    return sentencesArray;
}

斯坦福CoreNLP工具包似乎也没有这样的功能。这个任务显然是模棱两可的,但有一种更简单的方法来至少逼近解决方案吗?我想分析的文本将包含相对简单的短句。

0 个答案:

没有答案