2016-07-11 5 views
2

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

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

Я бы предпочла продолжить использование 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> . 
+0

Обратитесь к разработчикам OpenNLP. Вы можете найти помощь здесь, но вы, скорее всего, найдете там больше. Если это открытый исходный код, то посмотрите на код - вы можете не только найти свой ответ там, но и решение. –

ответ

2

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