pytext中的Dict [str,Any]或Dict [str,Field]

时间:2019-04-07 07:22:48

标签: python pytorch pytext

我正在阅读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个项目的键?这到底是什么?

任何指针,我将不胜感激!

1 个答案:

答案 0 :(得分:1)

您看到的是python类型注释。您可以阅读有关语法,设计和基本原理here以及实际实现方式(可能的类型,如何构造自定义类型等等)的信息here。请注意,此处的ListDict是大写字母-Dict[str, Any]旨在构造 type “带有字符串键和任何值的字典”,并且不能访问该类型的实例。

这些是可选的,默认情况下不用于任何事情(因此,在阅读代码时您可以忽略它们,因为python也会这样做)。但是,有mypy之类的工具可以解释这些类型注释并检查它们是否一致。

我不确定torchtext中如何使用它们-我不是自己使用它,也没有发现任何可以快速搜索文档的内容-但它们可能对使用它们的开发人员有所帮助一些特殊的工具。但是它们也可能对您有所帮助!从您的角度来看,最好将它们视为注释而不是代码。通过阅读preprocess的签名,您知道data应该是list的{​​{1}},其中包含dict键和任何值类型。如果您的代码中有错误,并且发现str本身就是data,则可以肯定地知道它是一个错误(也许不是唯一的错误)。