有没有办法训练现有的 Apache OpenNLP POS Tagger 模型?我需要向模型添加一些特定于我的应用程序的专有名词。当我尝试使用以下命令时:
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
。所以我想补充几句话。我怎样才能做到这一点?
不幸的是,您不能简单地使用额外的训练实例来增强 OpenNLP 模型。您需要使用原始训练数据和新数据重新训练整个模型,以获得您想要的模型。您需要使用现有(大型)POS 标记语料库以及新示例来训练新的 POS 标记器模型。
如果您只想识别某些类型的专有名词,您可以考虑使用您的数据训练 OpenNLP NameFinder(或其他命名实体提取器),因为这种注释器更适合识别特定类型的专有名词。您上面只举了几个例子,但我认为词性标注器很难区分正常的 NNP 和新的 DNNP,因为它们出现在与 NNP 相同的上下文中,并且具有相同的形式(大写的名词短语)。命名实体识别器是完成此类任务的更好工具。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)