Java OpenNLP извлекает все существительные из предложения
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 также намного медленнее (и вообще недопустимо медленны для простого токенизации).