как определить даты с openNLP

Я хочу определить даты в предложении с помощью openNLP. Это легко использовать, если существует существующая модель, отличная от обучения myslft. Может ли кто-нибудь помочь мне, как это сделать в java.


person Anushka Ekanayake    schedule 28.11.2014    source источник


Ответы (1)


  • Сначала загрузите Date name finder model с здесь (английская версия - тег en)
  • Также скачайте Tokenizer model. Поскольку вход для модели поиска имени должен быть токенизированным массивом
  • Добавьте их в папку проекта или куда-нибудь еще

Загрузить обе модели

InputStream modelIn1 = new FileInputStream("en-ner-date.bin");
InputStream modelIn2 = new FileInputStream("en-token.bin");

Создайте модель Tokenizer и NamefinderModel

try {
  TokenizerModel model1 = new TokenizerModel(modelIn2);
  TokenNameFinderModel model2 = new TokenNameFinderModel(modelIn1);
}
catch (IOException e) {
  e.printStackTrace();
}
finally {
  if (modelIn1 != null) {
    try {
      modelIn1.close();
    }
    catch (IOException e) {
    }
  }
  if (modelIn2 != null) {
    try {
      modelIn2.close();
    }
    catch (IOException e) {
    }
  }
}

Затем загрузите TokenizerME и NameFinderME

Tokenizer tokenizer = new TokenizerME(model1);
NameFinderME nameFinder = new NameFinderME(model2);

Затем получить токены из модели токенизатора

String tokens[] = tokenizer.tokenize("An input sample sentence.");

Затем отправьте этот массив токенов в качестве параметра модели поиска имен

Span nameSpans[] = nameFinder.find(tokens);

Это преобразует его в массив прогнозируемых дат в виде строки

String[] array=Span.spansToStrings(nameSpans,tokens);
person Buru    schedule 12.12.2014