使用NLP识别名词短语上的多个命名实体类型

时间:2016-07-11 14:39:52

标签: java nlp stanford-nlp opennlp uima

我目前正在使用OpenNLP和UIMA来标记句子中的单词。重要的是单个单词可以多次标记。例如,David Cronenberg应标记为directorperson

我知道培训过程是正确实施的,因为我有一个自定义模型文件,当从模型文件中删除所有带有其中一个标签的句子时,会检测到另一个标签。

我最好能够继续使用OpenNLP来双重标注单词。有没有办法做到这一点?如果没有,这可能与另一个库,如斯坦福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> .

1 个答案:

答案 0 :(得分:2)

为不同类型的命名实体训练单独的分类器,例如一个用于person,另一个用于director。然后将多个OpenNlpNamedEntityRecognizer组件添加到管道中,每个组件都配置一个模型。