openNLP总结

OpenNLP是Apache基金会下面的一个机器学习工具包,用于处理自然语言文本。支持大多数常用的NLP任务,例如:分词、分句、词性标注、命名实体识别、主块分析、语法解析等。其中几个主要的学习网址;

官网:http://opennlp.apache.org/

用户手册:http://opennlp.apache.org/documentation/1.7.2/manual/opennlp.html

模型下载:http://opennlp.sourceforge.net/models-1.5/

OpenNLP不仅提供了训练好的各种模型,最终要的是,它还允许自己训练模型。

1、OpenNLP的使用

1.1    使用说明

OpenNLP的使用十分简单,归纳起来一般都是遵循以下几个步骤:

a、训练模型,当然也可以跳过该步骤,而直接使用官网提供的一些已经训练好的模型;

b、加载模型,不同任务需要加载不同的模型,通常都是通过构造一个InputStream来加载训练好的模型;

c、构造预测器,通过加载进来的训练好的模型构造预测器;

d、利用预测器进行NLP相关任务

1.2   下载及使用环境配置

a、下载jar包

openNLP总结_第1张图片

b、在eclipse下创建项目

      解压下载的apache-opennlp-1.7.2-bin.zip,将apache-opennlp-1.7.2-bin文件中lib文件下的jar包添加到新建的项目中

     (1.5.3的版本中是4个jar包,1.7.2的版本jar包很多,可以只放用到的)

openNLP总结_第2张图片


c、下载需要的模型文件,下载地址   http://opennlp.sourceforge.net/models-1.5/

1.2、主要的功能

a、Sentence Detector

1、下载en-sent.bin ,并复制到project中。或者单独建立文件夹,放到一个文件中

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

    InputStream is =new  FileInputStream("./nlpbin/en-sent.bin")

2、代码

package TestOpenNLP;


import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;


import opennlp.tools.sentdetect.SentenceDetectorME;
import opennlp.tools.sentdetect.SentenceModel;
import opennlp.tools.util.InvalidFormatException;


public class test {

      public static void main(String[] args)throws InvalidFormatException, IOException {
             // 句子探测器    //Sentence Detector
             SentenceDetect();
      }
      public static void SentenceDetect()throws InvalidFormatException,IOException {
             String paragraph ="Hi. How are you? This is Mike.";
             //加载模型,通常为一个模型类的构造函数提供一个具有模型的FileInputStream
             //来加载一个模型
             InputStream is =new FileInputStream("./nlpbin/en-sent.bin");
             //在模型被加载之后,这个组件工具自身可以被实例化
             SentenceModel model =new SentenceModel(is);
             SentenceDetectorME sdetector =new SentenceDetectorME(model);
             String sentences[] =sdetector.sentDetect(paragraph); 
             for(int i=0;i             {
                    System.out.println(sentences[i]);
             }
         }
}

b、句子切分成token(Tokenizer)

package TestOpenNLP;


import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;


import opennlp.tools.sentdetect.SentenceDetectorME;
import opennlp.tools.sentdetect.SentenceModel;
import opennlp.tools.tokenize.Tokenizer;
import opennlp.tools.tokenize.TokenizerME;
import opennlp.tools.tokenize.TokenizerModel;
import opennlp.tools.util.InvalidFormatException;


public class test {

      public static void main(String[] args)throws InvalidFormatException, IOException {


               Tokenize();


      }
       public static void Tokenize()throws InvalidFormatException, IOException {

                      InputStream is =new FileInputStream("./nlpbin/en-token.bin");
                      TokenizerModel model =new TokenizerModel(is);

                      Tokenizer tokenizer =new TokenizerME(model);
                      String tokens[] = tokenizer.tokenize("Hi. How are you? This is Mike.");
                      for (String a : tokens)
                          System.out.println(a);

                      is.close();

               } 
}

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