小编Dar*_*n84的帖子

用于类型提升的 Python 类型提示

考虑一个执行类型提升的函数,例如两个数字的简单乘法,两个数字都可以是intfloat

def mul(a: int | float, b: int | float):  # return type?
    return a * b
Run Code Online (Sandbox Code Playgroud)

该函数返回,但和均为 的float情况除外。abint

如何正确、简洁地注释返回类型?我知道我可以这样做@overload

from typing import overload

@overload
def mul(a: int, b: int) -> int: ...

@overload
def mul(a: float, b: int | float) -> float: ...

@overload
def mul(a: int | float, b: float) -> float: ...

def mul(a, b):
    return a * b
Run Code Online (Sandbox Code Playgroud)

但这非常冗长,并且需要许多重载来处理我想象的某些“类型函数”应该处理的事情。在 C++ 中,这可以通过SFINAE来完成。在Python中,我可以用通用函数来做类似的事情吗?

def mul(a: …
Run Code Online (Sandbox Code Playgroud)

python type-annotation mypy python-typing

12
推荐指数
0
解决办法
457
查看次数

将标记器添加到空白英语 spacy 管道

我很难弄清楚如何从 spacy V3 中的内置模型一点一点地组装 spacy 管道。我已经下载了en_core_web_sm模型并可以使用nlp = spacy.load("en_core_web_sm"). 示例文本的处理就像这样工作得很好。

现在我想要的是从空白开始构建一个英语管道并一点一点地添加组件。我不想加载整个en_core_web_sm管道并排除组件。为了具体起见,假设我只想要tagger管道中的 spacy 默认值。该文档向我表明

import spacy

from spacy.pipeline.tagger import DEFAULT_TAGGER_MODEL
config = {"model": DEFAULT_TAGGER_MODEL}

nlp = spacy.blank("en")
nlp.add_pipe("tagger", config=config)
nlp("This is some sample text.")
Run Code Online (Sandbox Code Playgroud)

应该管用。但是我收到与以下内容相关的错误hashembed

Traceback (most recent call last):
  File "/home/valentin/miniconda3/envs/eval/lib/python3.8/site-packages/spacy/language.py", line 1000, in __call__
    doc = proc(doc, **component_cfg.get(name, {}))
  File "spacy/pipeline/trainable_pipe.pyx", line 56, in spacy.pipeline.trainable_pipe.TrainablePipe.__call__
  File "/home/valentin/miniconda3/envs/eval/lib/python3.8/site-packages/spacy/util.py", line 1507, in raise_error
    raise e
  File "spacy/pipeline/trainable_pipe.pyx", line …
Run Code Online (Sandbox Code Playgroud)

python python-3.x spacy spacy-3

2
推荐指数
1
解决办法
2706
查看次数