|
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" |
|
) |
|
|
|
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 |
|
|