Java OpenNLP从句子中提取所有名词

时间:2016-11-15 07:00:17

标签: java opennlp

我正在使用Java8和OpenNLP。我试图从句子中提取所有名词单词。

我尝试了this示例,但它提取了所有名词短语(“NP”)。有谁知道如何才能提取个别名词?

由于

1 个答案:

答案 0 :(得分:1)

到目前为止你尝试了什么?我没有仔细查看您链接到的示例,但我非常确定您可以通过修改该示例来获得所需的位置。 无论如何,这并不是很困难:

InputStream modelIn = null;
POSModel POSModel = null;
try{
    File f = new File("<location to your tagger model here>");
    modelIn = new FileInputStream(f);
    POSModel = new POSModel(modelIn);
    POSTaggerME tagger = new POSTaggerME(POSModel);
    SimpleTokenizer tokenizer= new SimpleTokenizer();
    String tokens[] = tokenizer.tokenize("This is a sample sentence.");
    String[] tagged = tagger.tag(tokens);
    for (int i = 0; i < tagged.length; i++){
        if (tagged[i].equalsIgnoreCase("nn")){
            System.out.println(tokens[i]);
        }
    }

}
catch(IOException e){
    throw new BadRequestException(e.getMessage());
}

您可以在此处下载代码模型:http://opennlp.sourceforge.net/models-1.5/

我应该说不推荐使用SimpleTokenizer。您可能希望看一下更复杂的一个,但根据我的经验,来自OpenNLP的更花哨的也更慢(并且通常令人难以接受的只是令牌化)。