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