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中的字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值