两次训练spaCy NER模型是否有意义?

时间:2020-06-03 21:14:23

标签: python machine-learning spacy transfer-learning

TLDR:我想对大量原始文本样本进行NER的迁移学习,然后在较小的数据集上再次进行迁移学习。大数据集是PDF中的所有文本(包括表格)。较小的数据集只是表。

我正在使用spaCy NER模型,并且想知道以下内容是否有意义:

  1. 为我要查找的实体列表创建匹配器。
  2. 使用Matcher在大量文本上训练模型,以便它学习识别实体。在这里,我认为匹配器查找包含我要查找的实体并仅使用这些实体的所有句子对我们来说没有意义,对吗?我还需要在匹配器中包含不包含实体的句子,因为我想确保模型不会忘记其他可能也有用的实体(在构建匹配器时,我只是没有碰到它们。 )
  3. 第二次训练模型,除了使用更小,更具体的数据集之外,以便模型可以更好地识别第二个数据集中的实体。

我想对第一个数据集进行训练的原因是,我认为我可以通过对大型数据集进行NER训练,然后对表文本进行微调来提高准确性。表格文本包括表格标题和表格内容。

问题是,当我进行迁移学习时,我不想平均地重新训练整个模型。是否可以提高模型最后一层的学习率?如果是这样,这是否必要?或者SpaCy会对此进行照顾吗?

有关spaCy中转移学习的信息:https://spacy.io/usage/training#transfer-learning

在大多数项目中,通常会有少量带标签的数据,并且可以访问更大数量的原始文本示例。原始文本通常包含有关该语言的许多信息。从原始文本中学习这些常规信息可以帮助您的模型更有效地使用较小的标签数据。

在spaCy模型中使用原始文本的两种主要方法是单词向量和语言模型预训练。单词向量提供有关单词定义的信息。向量是一个查找表,因此每个单词只有一个表示,而与上下文无关。语言模型预训练可让您学习上下文化的单词表示形式。 spacy pretrain命令不是使用随机权重初始化spaCy的卷积神经网络层,而是训练一种语言模型以根据周围的单词来预测每个单词的单词向量。用于预测此任务的信息是诸如命名实体识别,文本分类或依赖项解析之类的其他任务的良好起点。

0 个答案:

没有答案