![]() |
1
3
您可以在crf++repo中找到示例培训和测试数据 here . 名词短语分块的训练数据如下:
列是任意的,因为它们可以是任何东西。crf++要求每一行都有相同数量的列(或者为空,以分隔句子),并不是所有的crf包都要求这样做。 你必须自己提供数据值; 它们是分类器从中学习的数据。 虽然任何东西都可以放在各个列中,但有一个约定是 IOB Format . 要处理潜在的多令牌实体,请将它们标记为inside/outside/start。举个例子也许有用。假设我们正在训练一个分类器来检测名称-为了简洁起见,我将在一行写下:
以列格式显示如下:
有了这些标签,
使用iob标记的原因是,分类器可以学习开始、继续和结束实体的不同转换概率。所以如果你在学习公司的名字
模板是另一个问题,crf++使用它自己的特殊格式,但同样,在源代码发行版中也有一些示例。也看到 this question . 要回答对我答案的评论,您可以使用任何pos标记器生成pos标记。你甚至根本不需要提供POS标签,尽管它们通常很有用。其他标签可以手动或自动添加;例如,可以使用已知名词列表作为起点。下面是一个使用 spaCy 对于简单的名称检测器:
|