无法运行 spacy spancat (spancategorizer) 模型?

2024-02-18

我正在尝试训练 spancat 模型,但运气不佳。 我正进入(状态:

ValueError: [E143] Labels for component 'spancat' not initialized. This can be fixed by calling add_label, or by providing a representative batch of examples to the component's 'initialize' method.

我确实将 NER ent 转换为跨度:

def main(loc: Path, lang: str, span_key: str):
    """
    Set the NER data into the doc.spans, under a given key.
    The SpanCategorizer component uses the doc.spans, so that it can work with
    overlapping or nested annotations, which can't be represented on the
    per-token level.
    """
    nlp = spacy.blank(lang)
    docbin = DocBin().from_disk(loc)
    docs = list(docbin.get_docs(nlp.vocab))
    for doc in docs:
        doc.spans[span_key] = list(doc.ents)
    DocBin(docs=docs).to_disk(loc)

这是我的配置文件:

[paths]
train = null
dev = null
vectors = null
init_tok2vec = null

[system]
gpu_allocator = null
seed = 444

[nlp]
lang = "en"
pipeline = ["tok2vec","spancat"]
batch_size = 1000
disabled = []
before_creation = null
after_creation = null
after_pipeline_creation = null
tokenizer = {"@tokenizers":"spacy.Tokenizer.v1"}

[components]

[components.spancat]
factory = "spancat"
max_positive = null
scorer = {"@scorers":"spacy.spancat_scorer.v1"}
spans_key = "sc"
threshold = 0.5

[components.spancat.model]
@architectures = "spacy.SpanCategorizer.v1"

[components.spancat.model.reducer]
@layers = "spacy.mean_max_reducer.v1"
hidden_size = 128

[components.spancat.model.scorer]
@layers = "spacy.LinearLogistic.v1"
nO = null
nI = null

[components.spancat.model.tok2vec]
@architectures = "spacy.Tok2VecListener.v1"
width = ${components.tok2vec.model.encode.width}
upstream = "*"

[components.spancat.suggester]
@misc = "spacy.ngram_suggester.v1"
sizes = [1,2,3]

[components.tok2vec]
factory = "tok2vec"

[components.tok2vec.model]
@architectures = "spacy.Tok2Vec.v2"

[components.tok2vec.model.embed]
@architectures = "spacy.MultiHashEmbed.v2"
width = ${components.tok2vec.model.encode.width}
attrs = ["NORM","PREFIX","SUFFIX","SHAPE"]
rows = [5000,1000,2500,2500]
include_static_vectors = true

[components.tok2vec.model.encode]
@architectures = "spacy.MaxoutWindowEncoder.v2"
width = 256
depth = 8
window_size = 1
maxout_pieces = 3

[corpora]

[corpora.dev]
@readers = "spacy.Corpus.v1"
path = ${paths.dev}
max_length = 0
gold_preproc = false
limit = 0
augmenter = null

[corpora.train]
@readers = "spacy.Corpus.v1"
path = ${paths.train}
max_length = 0
gold_preproc = false
limit = 0
augmenter = null

[training]
dev_corpus = "corpora.dev"
train_corpus = "corpora.train"
max_epochs = 70
seed = ${system.seed}
gpu_allocator = ${system.gpu_allocator}
dropout = 0.1
accumulate_gradient = 1
patience = 1600
max_steps = 20000
eval_frequency = 200
frozen_components = []
annotating_components = []
before_to_disk = null

[training.batcher]
@batchers = "spacy.batch_by_words.v1"
discard_oversize = false
tolerance = 0.2
get_length = null

[training.batcher.size]
@schedules = "compounding.v1"
start = 100
stop = 1000
compound = 1.001
t = 0.0

[training.logger]
@loggers = "spacy.ConsoleLogger.v1"
progress_bar = false

[training.optimizer]
@optimizers = "Adam.v1"
beta1 = 0.9
beta2 = 0.999
L2_is_weight_decay = true
L2 = 0.01
grad_clip = 1.0
use_averages = false
eps = 0.00000001
learn_rate = 0.001

[training.score_weights]
spans_sc_f = 1.0
spans_sc_p = 0.0
spans_sc_r = 0.0

[pretraining]

[initialize]
vectors = ${paths.vectors}
init_tok2vec = ${paths.init_tok2vec}
vocab_data = null
lookups = null
before_init = null
after_init = null

[initialize.components]

[initialize.tokenizer]

我正在使用“sc”键。请指教如何解决。


我已经使用以下函数解决了这个问题,但是应该根据其任务的项目/文本来解决跨度 Span(doc, start, end, label) 的问题。它对我有用,因为所有文本(在我的例子中是几个单词)都标有标签,这是我的需要。

def convert_to_docbin(input, output_path="./train.spacy", lang='en'):
    """ Convert a pair of text annotations into DocBin then save """
    # Load a new spacy model:
    nlp = spacy.blank(lang)
    # Create a DocBin object:
    db = DocBin()
    for text, annotations in input: # Data in previous format
        doc = nlp(text)
        ents = []
        spans = []
        for start, end, label in annotations: # Add character indexes
            spans.append(Span(doc, 0, len(doc), label=label))
            span = doc.char_span(start, end, label=label)
            ents.append(span)
        doc.ents = ents # Label the text with the ents
        group = SpanGroup(doc, name="sc", spans=spans)
        doc.spans["sc"] = group
        db.add(doc)
    db.to_disk(output_path)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法运行 spacy spancat (spancategorizer) 模型? 的相关文章

随机推荐

  • 暂停 jQuery 中的默认事件

    我试图延迟 jQuery 脚本中的一个或多个默认事件 上下文是 我想在用户执行某些操作 主要单击 时在默认操作触发之前几秒钟向用户显示一条消息 伪代码 用户点击链接 按钮 元素 用户收到一条弹出消息 指出 您正在离开网站 消息在屏幕上保留
  • ASP.NET MVC 路由 - 尝试在 URL 中包含名称

    我目前有以下路线 routes IgnoreRoute resource axd pathInfo routes IgnoreRoute resource gif pathInfo MvcRoute MappUrl controller a
  • Angular 8 - 如何从回调路由中的url获取数据

    如何获取access tokenkeycloak服务器到我的授权组件 授权 URL 如下所示 回调网址位于http localhost 4200 auth http localhost 4200 auth 这是组件 import Compo
  • Android Google 登录按钮和 Facebook sdk 4+ 按钮布局

    我正在开发一个使用的应用程序google https developers google com branding guidelines sign in button and facebook https developers facebo
  • SignalR 和浏览器连接限制

    我用 SignalR 制作了一个简单的应用程序进行测试 当页面加载时 它会调用服务器上的函数 该函数然后调用在屏幕上打印消息的客户端函数 我这样做是为了检查客户端和服务器功能是否正常工作以及 SignalR 通信是否正常 我的问题是 如果我
  • Colab 突然无法浏览目录

    过去几个月我一直在使用 Google Colab 在连接驱动器和输入 shell 命令时没有出现任何问题 然而今天突然出现了一个错误 我找不到任何解决办法 Colab 似乎神奇地无法浏览目录 对于 cd pwd mkdir 等目录的任何 b
  • WooCommerce - 登录后重定向到上一页

    我一直在寻找可以处理它几个小时的插件和片段 但没有成功 每个答案都不适合我 我的菜单中有 登录 链接 可通往 WooCommerce 我的帐户 页面 其中显示登录表单 我希望客户在成功登录后返回到单击 登录 链接的页面 wp get ref
  • Highcharts - 如何更新角度系列?

    我在柱形图中更新系列数据时遇到问题 一开始 当我的模型为空时 我设置一个空数组作为系列 然后在ngOnchanges方法我映射我的modelData到匹配的格式 不幸的是 图表仍然是空的 这是我的组件代码 export class Colu
  • PHP 验证 PayPal 捐赠

    我如何验证贝宝捐款 在用户面板中我有一个捐赠按钮 一旦有人真正捐款 我就想为他做点什么 但我不知道如何检查用户是否实际捐赠或只是单击了捐赠按钮 看看 Paypal 的IPN https www paypal com ipn 即时付款通知 当
  • 长时间运行 Jupyter 笔记本/实验室?

    我在 ec2 实例上的 tmux 会话中运行 Jupyter 我有运行时间非常长的单元格 但是当我关闭浏览器或笔记本电脑盖子时 笔记本电脑不再写入输出单元格 并且可能会使 python 内核崩溃 这是我在远程实例上启动实验室的方式 jupy
  • 如何在 Prometheus 中推送 Kubernetes 指标而不是拉取?

    我已经在我们的基础设施中配置了 Prometheus 进行监控 在我们的基础设施中 我们有一个正在运行的 EKS 集群 我必须在 Prometheus 中收集 EKS 指标 默认情况下 Prometheus 采用基于拉动的机制 这里我有一个
  • NUnit 最佳实践

    环境 Visual Studio Professional 2008 中的 C WinForms 应用程序 我一直在挖掘有关 NUnit 最佳实践的指导 作为一个在相对孤立的环境中工作的独立程序员 我希望这里的集体智慧可以帮助我 斯科特 怀
  • 如何为 SonarQube.Scanner.MSBuild.exe 提供参数?

    通过在线搜索和查看 sonarqube 文档 我唯一能找到的是 SonarQube Scanner MSBuild exe k KeyOfProject n NameOfProject msbuild exe C projectpath s
  • 如何在特定接口上打开套接字并接收 IPv4 和 IPv6 流量

    使用 IPv4 我可以将 绑定到特定地址来选择将用于接收数据包的接口 在某些情况下 也用于发送数据包 但这不是重点 在双栈 IPv6 IPV4 机器上 我遇到这个问题 我可以创建一个 6 套接字并使用它接收 4 个流量 但如果我想绑定到特定
  • 如何强制 powershell 重新加载自定义模块?

    我创建了一个模块 ActiveDirectory psm1 其中包含 powershellv5 中的一个类 我将该模块导入另一个名为 test ps1 的文件中 然后从该类中调用一个方法 test ps1 包含以下内容 using modu
  • 如何*取消*突出显示选定的文本?

    以前的一个question https stackoverflow com questions 58175015 vba powerpoint how to highlight selected text描述了如何使用 Font Highl
  • 除了第一个 cudaMalloc 调用之外,还有什么特定的函数可以初始化 GPU?

    由于 GPU 上的一些初始化工作 第一个 cudaMalloc 调用很慢 例如 0 2 秒 是否有任何函数只进行初始化 以便我可以分离时间 cudaSetDevice 似乎将时间减少到 0 15 秒 但仍然没有消除所有初始化开销 致电 cu
  • git 选择性恢复文件中的本地更改

    在我跟踪 svn 存储库的 git 存储库中 我对单个文件进行了多次编辑 现在我想恢复这些更改 如 svn revert 但只是文件的一部分 我希望能够查看文件上的差异 丢弃 恢复 我不想要的更改并保留我想要的更改 the git add
  • 使用 llvm-prof 收集 LLVM 边缘分析

    我正在使用这些命令来编译下面的代码以收集 trunk llvm 中的边缘 块分析 clang emit llvm c sort c o sort bc opt insert edge profiling sort bc o sort pro
  • 无法运行 spacy spancat (spancategorizer) 模型?

    我正在尝试训练 spancat 模型 但运气不佳 我正进入 状态 ValueError E143 Labels for component spancat not initialized This can be fixed by calli