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