如何为OpenNLP准备训练数据以标记包含多个单词的令牌



在某些语言(例如:越南语(中,某些词汇由多个单词组成。因此,一些包含多个单词的标记可以被标记化,而不仅仅是使用空白。

我有以下输入:

Người dân địa phương đã nhiều lần báo Điện lực Bến Tre nhưng chưa được giải quyết .

预期输出:

["Người dân", "địa phương",  "đã", "nhiều", "lần", "báo", "Điện lực",  "Bến Tre", "nhưng", "chưa", "được", "giải quyết"]

我有训练数据_将需要粘在一起的单词连接在一个令牌中:

Người_dân địa_phương đã nhiều lần báo Điện_lực Bến_Tre nhưng chưa được giải_quyết .

这是我用来训练的命令行

opennlp TokenizerTrainer -model "model/vi-token.bin" -alphaNumOpt 1 -lang "vi" -data "data/merge_vlsp_removehtml" -encoding "UTF-8" -params param/wordseg.param

带参数

Iterations=1000

但是,输出不能在一个标记中连接多个单词,而是由空格分隔。

命令我运行以获得输出

opennlp TokenizerME model/vi-token.bin < sample/sample_text > sample/sample_text.out 

我应该如何处理我们的配置参数的训练数据,以训练每个令牌具有多个单词的令牌生成器?

与其使用下划线进行训练,不如使用标记。OpenNLP使用标记作为训练的参考。按照NER的说明进行操作,并培训您的Tokenizer。

opennlp提供了"TokenizerTrainer"工具来训练数据。OpenNLP格式每行包含一个句子。您还可以指定由空白或特殊标记分隔的标记。

出于各种目的,您可以在opennlp中关注这篇博客以获得领先地位。该帖子将向您展示如何创建培训文件和构建新模型。

您可以使用modelbuilder插件轻松创建自己的训练数据集,并遵循此处提到的一些规则来训练创建一个好的NER模型。

你可以在这里找到一些使用modelbuilder插件的帮助。

基本上,您将所有信息放在一个文本文件中,将NER实体放在另一个文件中。插件搜索一个空间实体,并用所需的标签替换它。从而产生标记的数据。使用这个工具一定很容易!

另外,按照markg先生的回答,了解如何自己创建新模型。这将帮助您构建自己的模型,这些模型可以针对您的应用程序进行自定义。

希望这能有所帮助!

最新更新