2014-12-04 40 views
3

有没有办法培训现有的Apache OpenNLP POS Tagger模型?我需要为模型添加几个更适合我的应用程序的专有名词。当我尝试使用下面的命令时:是否可以将单词添加到现有的OpenNLP POS语料库/模型中?

opennlp POSTaggerTrainer -type maxent -model en-pos-maxent.bin \ 
     -lang en -data en-pos.train -encoding UTF-8 

整个模型被重新训练。我只希望对一些新的句子追加到en-pos-maxent.bin

这是我的训练文件的外观:

Where_WRB is_VBZ the_DT Seven_DNNP Dwarfs_DNNP Mine_DNNP Train_DNNP ?_? 
Where_WRB is_VBZ the_DT Astro_DNNP Orbiter_DNNP ?_? 
Where_WRB is_VBZ the_DT Barnstormer_DNNP ?_? 
Where_WRB is_VBZ the_DT Big_DNNP Thunder_DNNP Mountain_DNNP Railroad_DNNP ?_? 
Where_WRB is_VBZ the_DT Buzz_DNNP Lightyears_DNNP Space_DNNP Ranger_DNNP Spin_DNNP ?_? 
Where_WRB is_VBZ the_DT Casey_DNNP Jr_DNNP Splash_DNNP N_DNNP Soak_DNNP Station_DNNP ?_? 
Where_WRB is_VBZ the_DT Cinderella_DNNP Castle_DNNP ?_? 
Where_WRB is_VBZ the_DT Country_DNNP Bear_DNNP Jamboree_DNNP ?_? 
Where_WRB is_VBZ the_DT Dumbo_DNNP the_DNNP Flying_DNNP Elephant_DNNP ?_? 
Where_WRB is_VBZ the_DT Enchanted_DNNP Tales_DNNP with_DNNP Belle_DNNP ?_? 
Where_WRB is_VBZ the_DT Frontierland_DNNP Shootin_DNNP Arcade_DNNP ?_? 

训练模型后,除了那些在训练文件中的所有单词被标记为DNNP。 例如,如果我要求标记'Where'(存在于培训文件中),那么答案是WRB,但如果我询问'hello'(不存在于培训文件中)的标签,它被标记为DNNP。所以我想补充几句话。我怎样才能做到这一点?

回答

4

不幸的是,你不能简单地用其他训练实例来增加OpenNLP模型。您需要使用原始培训数据和新数据重新训练整个模型,以获得所需的模型。您需要使用现有的(大型)带POS标签的语料库以及新的示例来培训新的POS标签模型。

如果你只是想识别某些专有名词,你可以考虑用你的数据来训练一个OpenNLP NameFinder(或其他命名实体提取器),因为这种注释器更适合识别特定类型的适当名词。你只是举了一些上面的例子,但是我认为一个POS标记器将难以区分正常的NNP和你的新DNNP,因为它们出现在与NNP相同的上下文中并且具有相同的形式(大写的名词短语)。命名实体识别器对于这样的任务来说是更好的工具。

+0

谢谢你的帮助。我将研究NameFinder功能。 – jjulk 2014-12-05 18:15:38

+0

非常感谢aab,解决了我的问题! – jjulk 2014-12-05 21:15:13

+0

你能指导我如何重新训练整个模型吗? – jjulk 2014-12-06 00:27:45

相关问题