
昨天把資料層鎖的架構建立起來後,
目前產值評估工具中有5個靜態JSON,
但都還只是一個空殼classification.json
因此今天就要來製作本工具中的關鍵字庫判斷方式
意即我不是不呼叫任何API,
而是透過讓使用者「輸入企業描述」來讓工具內直接「判斷所屬產業」~

流程:使用者輸入 → 正規化(全半形、去贅字)→ 對照 classification.json 做同義詞展開與加權比對 → 計分排序與門檻過濾 → 輸出前 3 候選(信心 %+命中關鍵字)→ 人工確認(低於門檻時引導手動搜尋行業分類)。
以「我們做車用 PCB 打件與組裝」為例:
「PCB」經同義詞展開命中「印刷電路板」(+3.0)
「打件」命中「SMT 組裝」(+2.0)
「車用」是應用場景詞(+1.0)
加總後「印刷電路板製造業」以 92% 信心度排第一,卡片上同時顯示命中了哪些詞,判斷過程對使用者完全透明。
依主計總處行業標準分類的製造業與資訊服務業主要類別,幫我建立 classification.json:每個行業別列出 8–15 個核心關鍵字、每個關鍵字的同義詞(含英文縮寫與台灣業界慣用語,例如 PCB=印刷電路板=電路板)、權重 1–3(越具產業識別度越高)。通用詞如「科技」「電子」「公司」權重歸零或列入停用詞
輸出必須符合 types/data.ts 的 Classification

Claude一樣給我了一個 修正後的檔
因此在覆蓋專案檔後
執行以下內容
執行結果如下
結果顯示
20 句擬真企業描述丟進引擎,19句判段正確。
因為目標是 18/20,所以通過驗收通過
但實際上我們可以去看那句失敗的案例
我們幫車廠做板子上的元件」
這句是故意設計來失敗的
因為此句話中,並沒有專有名詞
**「板子」不是 PCB、「元件」不是 MLCC,
唯一具體的詞是「車廠」,
因此工具在判定中係透過「車廠」這個線索來判定
所以最終判成汽車零件製造業。
但實際上這句話要做的是被動元件(貼在電路板上的電容電阻)~
**
所以這暴露出目前工具中可能存在一些問題
它只認得「字」,不懂「意思」
當我們在看到「板子上的元件」時,經常性會認為這是電子元件,而這也是為什麼我在前面規劃時即已劃分,使用者如若要有精準判斷,需自備金鑰的設計
畢竟有花token跟沒花token還是有結果差異的。
寫到這邊,我認為這裡對於過去有寫爬蟲程式經驗者來說
我可以分享一下很有趣的心得
當年的標準做法是寫爬蟲:抓政府分類說明頁、人力銀行職缺、公司簡介、產品目錄,清洗後用 jieba 斷詞、算 TF-IDF 詞頻、再人工篩選標註。
同一件事,兩種做法的差異整理如下:
| 面向 | 傳統爬蟲建庫 | Claude 建庫(本次做法) |
|---|---|---|
| 知識來源 | 網路上的實際語料(實證) | 模型內化的產業知識(蒸餾) |
| 前置工程 | 爬蟲程式、清洗管線、斷詞、詞頻統計 | 一段結構清楚的 Prompt |
| 產出時間 | 以「週」計(爬取+清洗+標註) | 以「小時」計(含對抗測試迭代) |
| 同義詞與業界慣用語 | 要靠語料量堆出來,縮寫對應常缺漏 | 開箱即有(PCB=印刷電路板=電路板) |
| 權重依據 | 詞頻/TF-IDF,有量化基礎 | 模型判斷「產業識別度」,無頻率佐證 |
| 長尾涵蓋 | 語料夠大就抓得到冷門詞 | 冷門利基產業可能漏抓 |
| 法遵與反爬風險 | 有(robots.txt、網站條款) | 無 |
| 錯誤型態 | 髒資料、斷詞錯誤 | 可能生成看似合理但不存在的用語 |
| 維護更新 | 重跑管線即可,可排程自動化 | 重新對話迭代,靠測試集把關 |
兩個關鍵差異如下:
整體來說我認為今天我做的事情
是要闡述一件事
零成本不等於零智慧
儘管透過Claude的幫助,成功在這個平台製作上,可以有效變成零成本
但實際上這跟我們以前在寫「爬蟲」的概念一樣
如果我辭庫具備滿滿的資訊與判斷
那必定可以更精準判定
但如果是把這些行業分類資訊,「蒸餾」成一份靜態 JSON
那儘管際成本為零,但在進行對抗測試時,一定會出現問題
當然這也是我為什麼要分兩種情況來寫這個平台~
我覺得對於給使用者操作上,一個很公平的選擇
既然消費者有決定權,那自行承擔應付費用
是合理的,當然在此平台的設計上,
仍舊是以公開且免費使用為最基本~