Python 3.11中如何为spaCy返回对象添加类型注解?
spaCy返回对象的类型注解方法
要给spaCy返回的对象添加正确的类型注解,让VS Code能识别lemma_这类属性,你需要明确spaCy返回对象的具体类型,并正确导入这些类型:
1. 明确spaCy返回对象的类型
- 调用
nlp(text)返回的是**spacy.tokens.doc.Doc**类型(整个文本的处理结果) - Doc里的单个元素是**
spacy.tokens.token.Token**类型
2. 跨模块的类型注解实现
假设你的hh函数在other_module.py中,主代码在另一个文件:
主文件代码
import spacy from spacy.tokens import Doc from other_module import hh nlp = spacy.load("en_core_web_sm") text = "Your sample text here" # 传入Doc类型对象 result = hh(nlp(text))
other_module.py代码
from spacy.tokens import Doc def hh(corpus: Doc): # 此时VS Code会识别corpus的所有Doc属性,遍历Token也能识别token的属性 for token in corpus: print(f"原词: {token.text}, 词元: {token.lemma_}")
3. 单个Token参数的注解
如果函数需要接收单个Token对象,写法类似:
from spacy.tokens import Token def process_single_token(token: Token): print(f"词性标注: {token.pos_}, 词元: {token.lemma_}")
注意事项
- 确保spaCy版本在v2.3及以上,该版本开始自带完整的类型注解
- 保持VS Code的Python插件为最新版本,确保语言服务正常加载类型信息
内容的提问来源于stack exchange,提问作者Bambang Wirojoyo Sentiko
相关产品推荐
相关产品推荐

