我目前正在使用OpenNLP和UIMA来标记句子中的单词。重要的是单个单词可以多次标记。例如,David Cronenberg
应标记为director
和person
。
我知道培训过程是正确实施的,因为我有一个自定义模型文件,当从模型文件中删除所有带有其中一个标签的句子时,会检测到另一个标签。
我最好能够继续使用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> .
答案 0 :(得分:2)
为不同类型的命名实体训练单独的分类器,例如一个用于person
,另一个用于director
。然后将多个OpenNlpNamedEntityRecognizer组件添加到管道中,每个组件都配置一个模型。