我正在阅读pytext(基于PyTorch的NLP建模框架)的文档,这个简单的方法from_config
是一种通过配置创建组件的工厂方法,其行类似Dict[str, Field] = {ExtraField.TOKEN_RANGE: RawField()}
。 / p>
@classmethod
def from_config(cls, config: Config, model_input_config, target_config, **kwargs):
model_input_fields: Dict[str, Field] = create_fields(
model_input_config,
{
ModelInput.WORD_FEAT: TextFeatureField,
ModelInput.DICT_FEAT: DictFeatureField,
ModelInput.CHAR_FEAT: CharFeatureField,
},
)
target_fields: Dict[str, Field] = {WordLabelConfig._name: WordLabelField.from_config(target_config)}
extra_fields: Dict[str, Field] = {ExtraField.TOKEN_RANGE: RawField()}
kwargs.update(config.items())
return cls(
raw_columns=config.columns_to_read,
targets=target_fields,
features=model_input_fields,
extra_fields=extra_fields,
**kwargs,
)
和
def preprocess(self, data: List[Dict[str, Any]]):
tokens = []
for row in data:
tokens.extend(self.preprocess_row(row))
return [{"text": tokens}]
词典如何具有包含2个项目的键?这到底是什么?
任何指针,我将不胜感激!
答案 0 :(得分:1)
您看到的是python类型注释。您可以阅读有关语法,设计和基本原理here以及实际实现方式(可能的类型,如何构造自定义类型等等)的信息here。请注意,此处的List
和Dict
是大写字母-Dict[str, Any]
旨在构造 type “带有字符串键和任何值的字典”,并且不能访问该类型的实例。
这些是可选的,默认情况下不用于任何事情(因此,在阅读代码时您可以忽略它们,因为python也会这样做)。但是,有mypy之类的工具可以解释这些类型注释并检查它们是否一致。
我不确定torchtext
中如何使用它们-我不是自己使用它,也没有发现任何可以快速搜索文档的内容-但它们可能对使用它们的开发人员有所帮助一些特殊的工具。但是它们也可能对您有所帮助!从您的角度来看,最好将它们视为注释而不是代码。通过阅读preprocess
的签名,您知道data
应该是list
的{{1}},其中包含dict
键和任何值类型。如果您的代码中有错误,并且发现str
本身就是data
,则可以肯定地知道它是一个错误(也许不是唯一的错误)。