Недавно я столкнулся с той же проблемой и написал несколько заметок в блоге по использованию инструментов OpenNLP 1.5.x.Копировать его немного плотно, поэтому вот ссылка с более подробной информацией .
. На высоком уровне вам нужно загрузить соответствующую модель ядра OpenNLP.библиотеки , а также словарь WordNet 3.0 .Учитывая эти зависимости, инициализация объекта компоновщика довольно проста:
// LinkerMode should be TEST
//Note: I tried LinkerMode.EVAL before realizing that this was the problem
Linker _linker = new DefaultLinker("lib/opennlp/coref", LinkerMode.TEST);
Использование компоновщика, однако, немного менее очевидно.Вам необходимо:
- Разбить содержимое на предложения и соответствующие токены
- Создать объект Parse для каждого предложения
Обернуть каждое предложение Parse таккак указать порядок предложений:
final DefaultParse parseWrapper = new DefaultParse(parse, idx);
Итерировать по каждому разбору предложения и использовать Linker для получения объектов Mention из каждого разбора:
final Mention[] extents =
_linker.getMentionFinder().getMentions(parseWrapper);
Наконец, используйте компоновщик для идентификации различных объектов во всех объектах Упоминания:
DiscourseEntity[] entities = _linker.getEntities(arrayOfAllMentions);