Stanford CoreNLP:输入每行一个句子

时间:2015-11-09 08:18:45

标签: java parsing stanford-nlp

我使用Stanford NLP工具进行大学工作。这个解析器在每个点(句点)结束句子,但我还需要在每一行中关闭,也就是说,在每个字符中关闭句子。 \ n' 。通过命令行,您可以使用选项" - 句子"但到目前为止,没有类似的代码命令。

LexicalizedParser中的选项setOptionFlags无法正常工作

3 个答案:

答案 0 :(得分:3)

以下是一些示例代码,详细阐述了Gabor的答案:

import java.nio.file.Paths;
import java.nio.file.Files;
import java.nio.charset.StandardCharsets;

import java.io.*;
import java.util.*;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.nio.charset.StandardCharsets;
import edu.stanford.nlp.io.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.trees.*;
import edu.stanford.nlp.semgraph.*;
import edu.stanford.nlp.trees.TreeCoreAnnotations.*;
import edu.stanford.nlp.ling.CoreAnnotations.*;
import edu.stanford.nlp.util.*;

public class ParserExample {

    public static void main (String[] args) throws IOException {
        String text = new String(Files.readAllBytes(Paths.get(args[0])), StandardCharsets.UTF_8);
        Annotation document = new Annotation(text);
        Properties props = new Properties();
        props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse");
        props.setProperty("ssplit.newlineIsSentenceBreak", "always");
        StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
        pipeline.annotate(document);
    }

}

args [0]应该是文件的路径,每行一个句子

您需要从此链接下载Stanford CoreNLP 3.5.2并将下载的jar放入类路径中:http://nlp.stanford.edu/software/corenlp.shtml

您可以使用props.setProperty()

为解析器设置其他选项

如果你的文件每行有一个句子,你可以使用

props.setProperty("ssplit.eolonly", "true");

如果您只想拆分换行符。

答案 1 :(得分:2)

您正在寻找的选项是ssplit.newlineIsSentenceBreak = always(或者在命令行上-ssplit.newlineIsSentenceBreak always)。除了分割通常的标点符号之外,这将始终在换行符上拆分句子。见http://nlp.stanford.edu/software/corenlp.shtml

答案 2 :(得分:0)

在属性文件中,添加:

ssplit.newlineIsSentenceBreak = always