Мне нужно найти даты внутри строки и их позиции. Рассмотрим пример строкидаты поиска и их позиция в строке с использованием stanford nlp
«Интересная дата 4 дней с сегодняшнего дня, и это 20 июля этого года, другая дата 18 февраля 1997»
мне нужен выход (Предполагается, что сегодня 2013-07-14)
2013-07-17, позиция 25
2013-07-20, позиция 56
1997-02-18, позиция 93
мне удалось написать код, чтобы получить различные части строки который признается как дата. Необходимо улучшить/изменить это для достижения вышеуказанного результата. Любые намеки или помощь оценили:
Properties props = new Properties();
AnnotationPipeline pipeline = new AnnotationPipeline();
pipeline.addAnnotator(new PTBTokenizerAnnotator(false));
pipeline.addAnnotator(new WordsToSentencesAnnotator(false));
pipeline.addAnnotator(new POSTaggerAnnotator(false));
pipeline.addAnnotator(new TimeAnnotator("sutime", props));
Annotation annotation = new Annotation("The interesting date is 4 days from today and it is 20th july of this year, another date is 18th Feb 1997");
annotation.set(CoreAnnotations.DocDateAnnotation.class, "2013-07-14");
pipeline.annotate(annotation);
List<CoreMap> timexAnnsAll = annotation.get(TimeAnnotations.TimexAnnotations.class);
timexAnnsAll.each(){
println it
}
С выше кода я получаю результат, как:
4 дней с сегодняшнего дня
20 июля этого года
18 февраля 1997
EDIT ::
Успели получить часть даты, со следующим изменением
timexAnnsAll.each(){it ->
Timex timex = it.get(TimeAnnotations.TimexAnnotation.class);
println timex.val + " from : $it"
}
Теперь Выход:
2013-07-18 от: 4 дней с сегодняшнего дня
2013-07-20 от: 20 июля этого года
1997-02-18 от: 18 февраля 1997
Все, что мне нужно решить теперь - найти позицию даты в исходной строке.
ли 'Println "Pos: $ {it.beginPosition()} $ это"' работа? –
@tim_yates, это не работает. Здесь он имеет тип edu.stanford.nlp.pipeline.Annotation. Это не имеет никакого значения позиции смещения внутри него. – Shiva
Просто удалось получить работу с датой, все, что мне нужно решить, это найти позицию совпадающей даты в строке ввода. Редактирование вопроса, чтобы отразить это – Shiva