工具(Salary Benchmark Tool)完全指南:從 Excel 數(shù)據(jù)到模糊匹配查詢)
AI 應(yīng)用AI 技能【免費(fèi)下載鏈接】ai-job-searchThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.項(xiàng)目地址https://gitcode.com/GitHub_Trending/ai/ai-job-search點(diǎn)擊查看免費(fèi)下載本文是 ai-job-search 項(xiàng)目?jī)?nèi)置薪酬基準(zhǔn)工具salary_lookup.py的實(shí)戰(zhàn)指南。該工具在/apply求職流程中承擔(dān)薪酬對(duì)標(biāo)職責(zé)把招聘崗位所在公司的薪酬水平與你自建的薪資基準(zhǔn)數(shù)據(jù)做對(duì)比幫助你在簡(jiǎn)歷篩選與薪資談判前掌握市場(chǎng)行情。讀完本文你將掌握salary_data.json數(shù)據(jù)格式的全部字段與約束、三種數(shù)據(jù)導(dǎo)入方式手寫 JSON / Excel 轉(zhuǎn)換 / 逐步研究、全部命令行參數(shù)的用法以及底層模糊匹配算法與數(shù)據(jù)校驗(yàn)器的實(shí)現(xiàn)原理。一、工具定位可選的薪酬對(duì)標(biāo)步驟薪酬查詢工具salary_lookup.py的作用是將公司薪酬與你自己數(shù)據(jù)中的基線進(jìn)行對(duì)比。它被集成在/apply工作流中用于展示某家公司的薪酬與市場(chǎng)水平相比如何。該工具是可選的如果你沒有薪酬數(shù)據(jù)/apply流程中的薪酬步驟會(huì)被直接跳過不影響其他求職功能。項(xiàng)目文檔 README.md 明確寫道薪酬工具適用于你提供的任何薪酬數(shù)據(jù)工會(huì)統(tǒng)計(jì)、Glassdoor 導(dǎo)出、個(gè)人調(diào)研等若沒有數(shù)據(jù)薪酬步驟即被省略。在 SETUP.md 的安裝向?qū)е行匠昊鶞?zhǔn)被列為可選的第 5 步同樣是跳過即省略的語義。二、工作原理一份 JSON 數(shù)據(jù) 一個(gè)模糊匹配引擎工具讀取倉(cāng)庫(kù)根目錄下的salary_data.json文件其中包含公司薪酬基準(zhǔn)數(shù)據(jù)。它使用模糊匹配按公司名查找能夠處理丹麥語/北歐字符?、?、? 等、法律后綴A/S、ApS 等以及常見的拼寫變體。從源碼結(jié)構(gòu)看salary_lookup.py 的匹配管線分為三個(gè)可復(fù)用的標(biāo)準(zhǔn)化環(huán)節(jié)見normalize、anglicize、extract_core_words三個(gè)函數(shù)normalize歸一化統(tǒng)一小寫、去除空白并按STRIP_PATTERNS規(guī)則剔除法律后綴與噪音詞包括A/S、ApS、I/S、P/S、K/S、IVS、AMBA/A.M.B.A.帶點(diǎn)寫法、括號(hào)內(nèi)容如(VG)、地域詞Danmark、Denmark、Scandinavia、Nordic、通用詞Group、Holding以及逗號(hào)后的子實(shí)體描述salary_lookup.py 中STRIP_PATTERNS定義。anglicize英文化按SPELLING_VARIANTS映射表把丹麥語字符替換為英語等價(jià)形式?→o、?→ae、?→aa、?→o、?→ae、ü→u從而讓M?rsk與Maersk、?rsted與Orsted能夠互相命中。extract_core_words核心詞提取再次剔除噪音后提取出長(zhǎng)度大于 1 的單詞集合用于詞重疊評(píng)分。匹配評(píng)分由match_score()計(jì)算得分區(qū)間 0100search_company()只保留得分 ≥ 30 的結(jié)果并按相關(guān)度降序排列salary_lookup.py。評(píng)分層級(jí)大致如下可由 tests/test_salary_lookup.py 中的用例印證匹配情形分值歸一化后完全相等大小寫、后綴不影響100英文化后完全相等如Orstedvs?rsted85英文化后互為子串、或短詞與核心詞重疊75歸一化后互為子串80 長(zhǎng)度比×10多詞重疊按覆蓋比例加權(quán)30 ~ 70無任何重疊0配套的單元測(cè)試覆蓋了這些分支精確匹配返回 100含M?rskvsM?rsk A/S、Arla Foods A.M.B.A.vsArla Foods amba、短查詢IBM命中IBM Corporation、Maersk命中M?rsk A/S、無關(guān)名稱ApplevsVestas Wind Systems返回 0以及城市過濾的大小寫不敏感與英文化匹配kobenhavn命中K?benhavn。城市過濾--city參數(shù)會(huì)做二次過濾查詢城市需出現(xiàn)在條目城市字段中大小寫不敏感且同樣支持英文化匹配不滿足即跳過該條目見 salary_lookup.py 中search_company的城市判斷邏輯。三、數(shù)據(jù)格式salary_data.json完整說明工具期望salary_data.json具備如下結(jié)構(gòu)該示例同時(shí)來自 tools/README_SALARY_TOOL.md 的官方模板{ metadata: { source: My Union Statistics 2025, index_baseline: 100, index_label: Index, baseline_description: Index 100 median salary for private sector }, companies: [ { company: Novo Nordisk A/S, city: Bagsv?rd, categories: { all_employees: { count: 500, index: 108.5 }, engineering: { count: 120, index: 112.3 } } }, { company: ?rsted A/S, city: Fredericia, categories: { all_employees: { count: 200, index: 105.2 } } } ] }字段說明metadata.source數(shù)據(jù)來源說明僅作參考如 My Union Statistics 2025metadata.index_baseline基線數(shù)值例如索引型數(shù)據(jù)為 100若為 0 則表示直接展示絕對(duì)值不計(jì)算百分比差metadata.index_label輸出表格中索引列的列名標(biāo)簽metadata.baseline_description基線的人性化解釋文字會(huì)打印在輸出表格下方companies[].company公司名稱必填非空字符串companies[].city城市/地點(diǎn)可選用于--city過濾companies[].categories具名薪酬類別每個(gè)類別包含count和/或index數(shù)據(jù)格式支持任意基于指數(shù)或絕對(duì)值的薪酬數(shù)據(jù)例如指數(shù) 100 中位薪酬越高越好、你所在幣種的絕對(duì)薪酬值、或任何你想追蹤的自定義指標(biāo)。index甚至可以是字符串如隱私保護(hù)的private輸出時(shí)原樣顯示而不會(huì)崩潰tests/test_salary_lookup.py 的test_text_index_does_not_crash驗(yàn)證了這一點(diǎn)。輸出表與vs Baseline列當(dāng)命中公司后format_entry()會(huì)渲染一張對(duì)齊的表格salary_lookup.py列包括 Category、Count、Index 列與vs Baseline列。百分比差的計(jì)算公式為((index - baseline) / baseline) × 100正數(shù)帶號(hào)當(dāng)index_baseline為 0 時(shí)視為絕對(duì)薪酬模式不顯示百分比測(cè)試用例test_format_entry_with_zero_baseline斷言不含%。此外類別名中的下劃線會(huì)轉(zhuǎn)為空格并做標(biāo)題化顯示all_employees→All Employees若某類別只有count而沒有index其指數(shù)列顯示為N/A*并在表格下方打印腳注* N/A Too few employees to publish (privacy)——即員工人數(shù)過少出于隱私不予發(fā)布。腳注只在確實(shí)存在被抑制行時(shí)才打印tests/test_salary_lookup.py 用兩個(gè)用例分別驗(yàn)證了無抑制行不打印腳注和有抑制行必須打印腳注。四、數(shù)據(jù)導(dǎo)入的三種方式方式 A手動(dòng)創(chuàng)建salary_data.json按第三節(jié)的格式手寫文件即可數(shù)據(jù)可來自任何渠道工會(huì)統(tǒng)計(jì)、Glassdoor、薪酬調(diào)研、行業(yè)人脈信息或個(gè)人研究。方式 B從 Excel 轉(zhuǎn)換推薦用于批量數(shù)據(jù)如果你已有 Excel 格式的薪酬數(shù)據(jù)使用倉(cāng)庫(kù)自帶的轉(zhuǎn)換腳本 tools/convert_salary_excel.pypip install openpyxl python3 tools/convert_salary_excel.py path/to/salary-data.xlsx \ --source My Salary Data 2025 \ --baseline 100 \ --baseline-desc Index 100 median salary在 Windows 上若 Python 以py暴露在 PATH 中則用py若系統(tǒng)用python而非python3請(qǐng)相應(yīng)替換示例命令。默認(rèn)輸出到倉(cāng)庫(kù)根目錄的salary_data.json也可用--output 路徑指定輸出文件。轉(zhuǎn)換器會(huì)自動(dòng)探測(cè) Excel 布局查找 Company/Firma 列也識(shí)別 virksomhed、employer、arbejdsgiver 等變體與可選的 City/By 列也識(shí)別 kommune、location、sted 等見 tools/convert_salary_excel.py 的COMPANY_PATTERNS與CITY_PATTERNS其余列視為薪酬數(shù)據(jù)并自動(dòng)配對(duì) count/index 列如 Antal alle 與 L?nindeks alle 會(huì)被歸入同一類別alle無類別詞的裸 CountIndex丹麥語 AntalL?nindeks會(huì)歸入默認(rèn)類別all_employees保證單類別布局也正確輸出成一行tests/test_convert_salary_excel.py 中BareCountIndexPairingTests覆蓋該場(chǎng)景。轉(zhuǎn)換器內(nèi)置多項(xiàng)防錯(cuò)保護(hù)均有測(cè)試佐證表頭自動(dòng)定位會(huì)在前 10 行內(nèi)尋找同時(shí)含公司列與城市/計(jì)數(shù)/指數(shù)列的表頭行無交叉佐證時(shí)回退到任一單元格提及公司詞規(guī)則。丹麥工會(huì)統(tǒng)計(jì)導(dǎo)出文件常見的標(biāo)題/引用行如 Kilde: … opdelt efter arbejdsgiver…不會(huì)被誤判為表頭對(duì)應(yīng) issue #414 的回歸測(cè)試數(shù)字區(qū)域解析支持歐洲/美國(guó)兩種千分位與小數(shù)點(diǎn)寫法1.234,56與1,234.56都能正確解析但對(duì)單分隔符的歧義寫法如1,234、1.234采取寧可跳過、絕不猜錯(cuò)策略避免產(chǎn)生 1000 倍誤差的薪酬值丹麥語字符串單元格如12,0、108,5也能正確轉(zhuǎn)為數(shù)值噪音列排除自由文本列如 Notes與標(biāo)識(shí)符列如 Id、personnummer不會(huì)被當(dāng)作薪酬類別多工作表支持逐個(gè)解析所有 sheet 并合并輸出tests/test_convert_salary_excel_integration.py 中真實(shí)工作簿往返測(cè)試覆蓋了多 sheet 與元數(shù)據(jù)寫入。轉(zhuǎn)換完成后metadata.index_label固定為Indexsource缺省使用 Excel 文件名不含擴(kuò)展名baseline_description缺省為Index baseline baseline。方式 C從研究積累起步從一個(gè)空模板開始隨著調(diào)研逐步補(bǔ)充公司條目例如使用絕對(duì)值模式{ metadata: { source: Personal research, index_baseline: 0, index_label: Monthly salary (DKK), baseline_description: Approximate monthly salary before tax }, companies: [ { company: Example Corp, city: Copenhagen, categories: { entry_level: { index: 42000 }, senior: { index: 55000 } } } ] }注意此處index_baseline: 0表示絕對(duì)薪酬模式——輸出時(shí)直接顯示數(shù)值而不計(jì)算百分比差index_label可自由命名為 Monthly salary (DKK) 之類的業(yè)務(wù)含義標(biāo)簽。五、命令行用法主程序支持五個(gè)調(diào)用形態(tài)salary_lookup.py 的main()中定義python3 salary_lookup.py Novo Nordisk python3 salary_lookup.py ?rsted --city Fredericia python3 salary_lookup.py COWI --json python3 salary_lookup.py --list-all python3 salary_lookup.py --validate # pre-flight check your salary_data.json各參數(shù)說明參數(shù)作用company位置參數(shù)要搜索的公司名缺省且未使用其他模式時(shí)打印幫助信息并退出--city 名稱按城市過濾結(jié)果大小寫不敏感支持丹麥語字符英文化匹配--json以 JSON 數(shù)組輸出命中結(jié)果ensure_asciiFalse保留原始字符--list-all列出數(shù)據(jù)集中所有公司名含城市若有--validate校驗(yàn)salary_data.json并輸出報(bào)告后退出不執(zhí)行查詢--validate的行為細(xì)節(jié)無問題輸出OK - no issues found.并以退出碼 0 結(jié)束有問題時(shí)分Errors硬錯(cuò)誤退出碼 1與Warnings可用性問題但能正常工作退出碼 0兩類報(bào)告salary_lookup.py 的print_validation_report。典型檢查項(xiàng)包括頂層必須是對(duì)象、companies必須是列表、公司名必填且非空、city/categories為對(duì)象時(shí)類型正確、類別必須是含count和/或index的對(duì)象、count必須是數(shù)字、重復(fù)公司名僅記為警告tests/test_salary_lookup.py 的ValidateDataTests系列用例逐一驗(yàn)證。無結(jié)果的提示當(dāng)搜索無命中時(shí)工具會(huì)提示嘗試更短或不同的名稱并提醒數(shù)據(jù)集中公司名可能包含 A/S、ApS 等法律后綴若使用了--city過濾還會(huì)附加提示被城市過濾排除。六、數(shù)據(jù)隱私與安全設(shè)計(jì)數(shù)據(jù)文件不入庫(kù)salary_data.json已被 .gitignore 排除。你的薪酬數(shù)據(jù)可能涉及專有或保密信息因此刻意不納入版本控制SETUP.md 也提示應(yīng)將真正敏感的文件tracker、薪酬數(shù)據(jù)、documents/、申請(qǐng)歸檔等保存在本地避免推送到公開 fork。缺失文件的友好降級(jí)若salary_data.json不存在salary_lookup.py會(huì)打印包含完整指引的錯(cuò)誤信息提示參閱 tools/README_SALARY_TOOL.md并以退出碼 1 結(jié)束/apply工作流隨后自動(dòng)跳過薪酬基準(zhǔn)步驟。JSON 解析錯(cuò)誤無堆棧非法 JSON 會(huì)報(bào)告具體行列號(hào)如invalid JSON at line N, column N不打印 Python 堆棧便于用戶自查文件tests/test_salary_lookup.py 的test_load_data_reports_json_parse_errors_without_traceback。UTF-8 輸出強(qiáng)制main()入口處通過_force_utf8_output()將 stdout/stderr 強(qiáng)制重配為 UTF-8避免在 Windows 管道輸出默認(rèn) ANSI 代碼頁 cp1252時(shí)因公司名、職位名等含丹麥語字符或非拉丁字符而拋UnicodeEncodeError。tests/test_tools_utf8_output.py 端到端驗(yàn)證了波蘭語、西里爾文、中日韓字符均能干凈地通過兩個(gè)工具輸出。七、數(shù)據(jù)校驗(yàn)與容錯(cuò)邊界validate_data()是查詢前的強(qiáng)制關(guān)卡load_data() 讀取 解析 校驗(yàn)它把畸形數(shù)據(jù)擋在查詢之前。從collect_validation_issues()的返回設(shè)計(jì)看校驗(yàn)器刻意區(qū)分兩類問題Errors硬錯(cuò)誤會(huì)導(dǎo)致查詢崩潰或輸出錯(cuò)誤如頂層不是對(duì)象、companies不是列表、類別值不是對(duì)象、count非數(shù)字等——--validate遇到即退出碼 1Warnings軟問題仍然可用如重復(fù)公司名——報(bào)告但退出碼 0。值得一提的是容錯(cuò)細(xì)節(jié)--validate允許metadata或categories顯式為null與省略等同而查詢渲染路徑也必須對(duì)null不崩潰——format_entry()內(nèi)部對(duì) metadata 與 categories 做了空值兜底并把條目中除company/city/categories外的其他 dict 字段視為類別兜底渲染tests/test_salary_lookup.py 的NullShapeEndToEndTests驗(yàn)證了通過 --validate 后查詢也能正常渲染的完整鏈路。八、小結(jié)在求職流程中的使用建議推薦的最小落地路徑先在 SETUP.md 完成基礎(chǔ)安裝項(xiàng)目要求 Python 3.10再按需選擇一種方式建立salary_data.json工會(huì)統(tǒng)計(jì) Excel 轉(zhuǎn)換最省力個(gè)人調(diào)研手動(dòng)維護(hù)最靈活隨后運(yùn)行python3 salary_lookup.py --validate做一次預(yù)檢確認(rèn)數(shù)據(jù)合法后即可讓/apply流程自動(dòng)執(zhí)行薪酬對(duì)標(biāo)。日常使用中--city可區(qū)分同一公司在多地的薪酬差異--json便于腳本化集成--list-all可快速瀏覽數(shù)據(jù)集全貌。薪酬數(shù)據(jù)始終留在本地、不入庫(kù)既保護(hù)了隱私也讓這套基準(zhǔn)完全由你掌控。贊分享AI 應(yīng)用AI 技能【免費(fèi)下載鏈接】ai-job-searchThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.項(xiàng)目地址https://gitcode.com/GitHub_Trending/ai/ai-job-search點(diǎn)擊查看免費(fèi)下載相關(guān)推薦5分鐘掌握NocoDB全文檢索從模糊查詢到精準(zhǔn)匹配的實(shí)戰(zhàn)指南5分鐘掌握NocoDB全文檢索從模糊查詢到精準(zhǔn)匹配的實(shí)戰(zhàn)指南 你是否還在為表格數(shù)據(jù)量大導(dǎo)致搜索卡頓而煩惱是否因普通查詢無法滿足復(fù)雜檢索需求而束手無策本文將數(shù)據(jù)庫(kù)低代碼后端前端Win11Debloat上手實(shí)錄10分鐘完成Windows 11瘦身卸載預(yù)裝應(yīng)用、關(guān)閉遙測(cè)與AIWin11Debloat上手實(shí)錄10分鐘完成Windows 11瘦身卸載預(yù)裝應(yīng)用、關(guān)閉遙測(cè)與AI Win11Debloat是一個(gè)開源的PowerShell腳桌面應(yīng)用CLI在 NNI 中使用 NAS 基準(zhǔn)數(shù)據(jù)集從數(shù)據(jù)準(zhǔn)備到 Benchmark 查詢與算法評(píng)估在 NNI 中使用 NAS 基準(zhǔn)數(shù)據(jù)集從數(shù)據(jù)準(zhǔn)備到 Benchmark 查詢與算法評(píng)估 NASNeural Architecture Search算法驗(yàn)證人工智能AutoML機(jī)器學(xué)習(xí)深度學(xué)習(xí)模型壓縮特征工程上一篇終極指南如何用一套鍵盤鼠標(biāo)無縫控制多臺(tái)電腦下一篇聯(lián)想拯救者BIOS高級(jí)設(shè)置一鍵解鎖工具3分鐘開啟隱藏功能終極指南創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考