Распознавание нескольких именованных типов сущностей в именной фразе с использованием НЛП

В настоящее время я использую OpenNLP с UIMA для обозначения слов в предложении. Важно, что одно слово может быть помечено более одного раза. Например, David Cronenberg следует пометить как director и person.

Я знаю, что процесс обучения реализован правильно, потому что у меня есть собственный файл модели, и когда все предложения с одной из меток удаляются из файла модели, обнаруживается другая метка.

Я бы предпочел продолжать использовать OpenNLP для двойного обозначения слов. Есть ли способ сделать это? Если нет, возможно ли это с другой библиотекой, такой как Stanford CoreNLP.

Код, который получает метки, приведен ниже:

List<NamedEntity> entities = JCasUtil.selectCovered( NamedEntity.class, aConstituent );
    if ( !entities.isEmpty() ) {
        // is never more than 1
    }

Ниже приведены некоторые примеры обучающих данных (подобных строк сотни).

<START:person> David Cronenberg <END> directed <START:film> Crash <END> .
<START:director> David Cronenberg <END> directed <START:film> Scanners <END> .

person rogermushroom    schedule 11.07.2016    source источник
comment
Обратитесь к разработчикам OpenNLP. Вы можете найти помощь здесь, но вы, вероятно, найдете больше там. Если это открытый исходный код, загляните в код — вы можете найти там не только ответ, но и решение.   -  person Richard Barker    schedule 11.07.2016


Ответы (1)


Обучите отдельные классификаторы для разных типов именованных объектов, например. один для person и один для director. Затем добавьте в конвейер несколько компонентов OpenNlpNamedEntityRecognizer, каждый из которых настроен для одной из ваших моделей.

person rec    schedule 12.07.2016