LeeSureman / Flat-Lattice-Transformer

code for ACL 2020 paper: FLAT: Chinese NER Using Flat-Lattice Transformer
1k stars 178 forks source link

请问, V1/flat_main.py 里 datasets['train'].apply 的作用是什么? 为什么不是apply( ) ? #110

Open iamqiz opened 2 years ago

iamqiz commented 2 years ago

如下 https://github.com/LeeSureman/Flat-Lattice-Transformer/blob/200af2cf64cd4cd6dd0e357bbd48609203abdfd8/V1/flat_main.py#L632

xyc0123456789 commented 2 years ago

datasets 是从名称(字符串)到 :class:~fastNLP.DataSet 类型的dict,datasets['train']是class:~fastNLP.DataSet 我在fastNLP\core\dataset.py里只找到了这个方法,我觉得这行代码应该是没有作用的,可以删掉的那种

    def apply(self, func, new_field_name=None, **kwargs):
        """
        将DataSet中每个instance传入到func中,并获取它的返回值.

        :param callable func: 参数是DataSet中的Instance
        :param None,str new_field_name: 将func返回的内容放入到new_field_name这个field中,如果名称与已有的field相同,则覆
            盖之前的field。如果为None则不创建新的field。
        :param optional kwargs: 支持输入is_input,is_target,ignore_type

            1. is_input: bool, 如果为True则将 `new_field_name` 的field设置为input

            2. is_target: bool, 如果为True则将 `new_field_name` 的field设置为target

            3. ignore_type: bool, 如果为True则将 `new_field_name` 的field的ignore_type设置为true, 忽略其类型

        :return List[Any]: 里面的元素为func的返回值,所以list长度为DataSet的长度
        """
iamqiz commented 2 years ago

@xyc0123456789 谢谢老铁,同意你的观点, 后来我知道了python中可以这样把变量/函数等对象单独放一行而不使用它且不会报错