gnudevx/Recommendation-System
0
1# Vietnamese cities and provinces for location matching2VIETNAMESE_CITIES = {3 # Major cities4 "hà nội": ["ha noi", "hn", "hanoi"],5 "hồ chí minh": ["ho chi minh", "hcm", "saigon", "sài gòn", "sai gon", "sg"],6 "đà nẵng": ["da nang", "danang", "dn"],7 "cần thơ": ["can tho", "canho", "ct"],8 "hải phòng": ["hai phong", "haiphong", "hp"],9 10 # Provinces11 "bình dương": ["binh duong", "bd"],12 "đồng nai": ["dong nai"],13 "bà rịa - vũng tàu": ["ba ria vung tau", "vung tau", "vt"],14 "long an": [],15 "tiền giang": ["tien giang"],16 "bến tre": ["ben tre"],17 "trà vinh": ["tra vinh"],18 "vĩnh long": ["vinh long"],19 "an giang": [],20 "kiên giang": ["kien giang"],21 "cà mau": ["ca mau"],22 "sóc trăng": ["soc trang"],23 24 "quảng ninh": ["quang ninh"],25 "hải dương": ["hai duong"],26 "hưng yên": ["hung yen"],27 "hà nam": ["ha nam"],28 "nam định": ["nam dinh"],29 "ninh bình": ["ninh binh"],30 "thanh hoá": ["thanh hoa"],31 "nghệ an": ["nghe an"],32 "hà tĩnh": ["ha tinh"],33 "quảng bình": ["quang binh"],34 "quảng trị": ["quang tri"],35 "thừa thiên huế": ["thua thien hue", "hue"],36 37 "quảng nam": ["quang nam"],38 "quảng ngãi": ["quang ngai"],39 "bình định": ["binh dinh"],40 "phú yên": ["phu yen"],41 "khánh hoà": ["khanh hoa", "nha trang"],42 "ninh thuận": ["ninh thuan"],43 "bình thuận": ["binh thuan"],44 45 "đắk lắk": ["dak lak"],46 "đắk nông": ["dak nong"],47 "gia lai": ["gia lai"],48 "kon tum": ["kon tum"],49 "lâm đồng": ["lam dong", "da lat"],50 51 "bắc kạn": ["bac kan"],52 "cao bằng": ["cao bang"],53 "lạng sơn": ["lang son"],54 "bắc giang": ["bac giang"],55 "phú thọ": ["phu tho"],56 "vĩnh phúc": ["vinh phuc"],57 "tuyên quang": ["tuyen quang"],58 "yên bái": ["yen bai"],59 "sơn la": ["son la"],60 "hòa bình": ["hoa binh"],61 "điện biên": ["dien bien"],62 "lai châu": ["lai chau"],63 64 "thái nguyên": ["thai nguyen"],65 "bắc thái": ["bac thai"],66}67 68def get_canonical_city(text):69 """Extract canonical city name from text"""70 if not text:71 return ""72 73 text_normalized = text.lower().strip()74 text_normalized = text_normalized.replace("ă", "a").replace("â", "a")75 text_normalized = text_normalized.replace("ê", "e").replace("ế", "e").replace("è", "e")76 text_normalized = text_normalized.replace("ô", "o").replace("ơ", "o")77 text_normalized = text_normalized.replace("ư", "u").replace("ũ", "u")78 text_normalized = text_normalized.replace("đ", "d")79 text_normalized = text_normalized.replace("ị", "i").replace("ị", "i")80 81 for canonical, aliases in VIETNAMESE_CITIES.items():82 canonical_norm = canonical.lower()83 if canonical_norm in text_normalized:84 return canonical_norm85 for alias in aliases:86 if alias.lower() in text_normalized:87 return canonical_norm88 89 return ""90 91 92def is_city_match(cv_city, job_city):93 """Check if two city references match"""94 if not cv_city or not job_city:95 return False96 97 cv_canonical = get_canonical_city(cv_city)98 job_canonical = get_canonical_city(job_city)99 100 if cv_canonical and job_canonical:101 return cv_canonical == job_canonical102 103 return False104 