openNLP--Sentence Detector

Sentence   Detection

Apache OpenNLP Sentence Detector能够检测到一个句子中的标点符号是否标记着句子的末尾。在这个意义上,一个句子被定义为由两个标点符号标记的最长的空格修整的字符序列。第一个和最后一个句子违背了这个原则。第一个没有空格的字符被假定为一个句子的开始,最后一个没有空格 的字符被假定为句子的结尾。

通常,Sentence Detection在句子被标记之前完成,并且在网站上的预训模型(pre-trained models)是以这种方式被训练的,但是也可以首先执行tokenization,让Sentence Detector处理已经tokenized的文本,OpenNLP Sentence Detector
无法识别基于句子内容的句子边界,一个突出的例子就是,一篇文章中的第一个句子(标题)被错误的识别为第一句的第一部分,大多数OpenNLP中的组件期望输入被分割成很多子句。


Sentence   Detection  API

1、Sentence Detector 可以很方便的通过他的API集成到一个应用中。在实例化Sentence Detector之前,必须首先加载sentence模型。

      InputStream modelIn = new FileInputStream("en-sent.bin");

     try {

            SentenceModel model = new SentenceModel(modelIn);

          }

    catch (IOException e) {

            e.printStackTrace();

          }

    finally {

            if (modelIn != null) {

               try {

                    modelIn.close();

                    }

              catch (IOException e) {

              }

       }

 }

2、在模型加载后,可以实例化SentenceDetectorME

SentenceDetectorME sentenceDetector = new SentenceDetectorME(model);

3、Sentence Detector可以输入一个String数组,数组中每一个元素都是一个句子

String sentences[] = sentenceDetector.sentDetect("  First sentence. Second sentence. ");


这个结果数组包括两个记录。第一个String是“Frist sentence.”,第二个String是“Second sentence.”。在输入的String之前,之后,中间的空格都被移除。这个API也提供了一个方法,他简单的返回了这个输入String中的句子的span


4、Span sentences[] = sentenceDetector.sentPosDetect("  First sentence. Second sentence. ");

这个结果数组也包括两个记录。第一个span开始于索引2,结束于17。第二个span开始于18,结束于34。公共方法Span.getCiveredtext 可以创建一个子String,它仅仅包含这个span中的字符

你可能感兴趣的:(自然语言处理工具包)