Извличане на именувани обекти
В литературата има различни инструменти и техники за разпознаване на именувани обекти (NER). Сред тези java openNLP [1], standford nlp [2], spark johnsnowlab [3] са добри. Използвайте инструмента GATE [4], за да намерите този, който отговаря на вашия проблем.
Опитах всички, за всяко предложение, пишете ми или оставете съобщение тук.
Малка демонстрация за openNLP
public void findName(String sentence) хвърля IOException {
InputStream is = new FileInputStream(“C:\\Users\\Syed\\workspace3\\marjES\\src\\nlp\\en-ner-person.bin ”);
InputStream inputStreamTokenizer = нов FileInputStream(“C:\\Users\\Syed\\workspace3\\marjES\\src\\nlp\\en-token.bin”);
TokenNameFinderModel модел = нов TokenNameFinderModel(is);
is.close();
// захранване на модела, за да наименува клас за търсене
NameFinderME nameFinder = нов NameFinderME(модел);
TokenizerModel tokenModel = нов TokenizerModel(inputStreamTokenizer);
inputStreamTokenizer .close();
TokenizerME tokenizer = new TokenizerME(tokenModel);
String tokens[] = tokenizer.tokenize(sentence);
Span nameSpans[] =nameFinder.find(tokens);
int index;
// nameSpans съдържа всички възможни обекти, открити
for(Span s: nameSpans){
System.out.print(“(“);
writer.append (“(“);
for( index=s.getStart();index‹s.getEnd();index++){
System.out.print(tokens[index]+ “ “ );
writer.append(токени[индекс]+ “ “);
System.out.print(“:”+s.getType().toString());
System.out.print(“:”+s.getProb()+”)”) ;
System.out.println();
writer.append(“:”+s.getType().toString());
writer.append(“:”+s. getProb()+”)”);
writer.append(“ : “);
}
}
[1]https://opennlp.apache.org/