import json import jsonschema from jsonschema import validate import os import pandas as pd import sys project_root_path = os.path.dirname( os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ) if project_root_path not in sys.path: sys.path.insert(0, project_root_path) from chinatravel.environment.tools import Attractions class AttractionsOODTag(Attractions): def __init__( self, base_path: str = os.path.dirname(__file__) + "/eval_annotation/attractions/", en_version=False, ): super().__init__(en_version=en_version) city_list = [ "beijing", "shanghai", "nanjing", "suzhou", "hangzhou", "shenzhen", "chengdu", "wuhan", "guangzhou", "chongqing", ] curdir = os.path.dirname(os.path.realpath(__file__)) self.ood_tag = {} for city in city_list: self.ood_tag[city] = pd.read_csv( os.path.join(curdir, f"{base_path}/{city}/attractions_tag.csv") ) city_cn_list = [ "北京", "上海", "南京", "苏州", "杭州", "深圳", "成都", "武汉", "广州", "重庆", ] for i, city in enumerate(city_list): self.ood_tag[city_cn_list[i]] = self.ood_tag.pop(city) for city in city_cn_list: self.data[city] = pd.merge( self.data[city], self.ood_tag[city], on=["id", "name"], how="left" ) # print(self.data[city]) del self.ood_tag def load_json_file(file_path): with open(file_path, "r", encoding="utf-8") as f: return json.load(f) def validate_json(json_data, schema): try: validate(instance=json_data, schema=schema) return True except jsonschema.exceptions.ValidationError as e: return False