Closed WYH-han closed 1 year ago
描述这个 bug 由于field2id_token用于存储某个feature下,项目中的remap_id及其所对应的原始token。dataset.py中,CrossDomainSingleDataset的_remap_fields()中,通过该行代码实现: self.field2id_token[field_name] = list(map_dict.keys()) 但由于map_dict为ChainMap格式,通过.keys()取出其中的token时,顺序并非按照chain中dict的存储顺序。举个例子,针对user_id,顺序应该为先overlap_user再domain_specific_user,而上述代码得到的user_id顺序刚好相反。因此需要修改取出token的方式。
self.field2id_token[field_name] = list(map_dict.keys())
预期 修改取key方式,定义get_keys_from_chainmap_by_order()用于按正序取ChainMap的keys(即原始token):
def get_keys_from_chainmap_by_order(map_dict): merged_dict = dict() for dict_item in map_dict.maps: merged_dict.update(dict_item) return list(merged_dict.keys()) self.field2id_token[field_name] = get_keys_from_chainmap_by_order(map_dict)
@WYH-han 感谢您的提醒,我们已经在 #56 中修复了这个问题!
描述这个 bug 由于field2id_token用于存储某个feature下,项目中的remap_id及其所对应的原始token。dataset.py中,CrossDomainSingleDataset的_remap_fields()中,通过该行代码实现:
self.field2id_token[field_name] = list(map_dict.keys())
但由于map_dict为ChainMap格式,通过.keys()取出其中的token时,顺序并非按照chain中dict的存储顺序。举个例子,针对user_id,顺序应该为先overlap_user再domain_specific_user,而上述代码得到的user_id顺序刚好相反。因此需要修改取出token的方式。预期 修改取key方式,定义get_keys_from_chainmap_by_order()用于按正序取ChainMap的keys(即原始token):