在真正的企業專利監控實務中,單純使用包含比對(String.Contains)會立刻面臨兩大品質痛點:
今天我們要對加權評分引擎進行深度升級:導入別名模糊映射庫(Alias Mapping)與負向排除懲罰機制(Negative Filtering),打造高信噪比的專利情報分析管道。📐 架構設計:雙向加權打分邏輯升級後的判斷演算法包含四個維度,並引入「負向攔截器」:
[專利摘要與申請人文字]
│
├── 1. 負向關鍵詞檢驗 ───► [命中排除詞?] ──(YES)──► 標記排除標籤、技術分倒扣
│ └──(NO)───► 維持正常打分
├── 2. VIP 競品別名比對 ──► [命中台積電/TSMC等別名?] ──► +3 分 (Tier 1 核心)
│
├── 3. 核心技術領域比對 ──► [命中先進封裝/晶圓等?] ────► 正常 +2 分 / 負向懲罰 -1 分
│
└── 4. 海外優先權檢驗 ──► [命中 US/JP/WO 等?] ──────► +1 分
分流門檻:Tier 1 特級警戒:$\ge 4$ 分(VIP 競品 且/或 核心技術命中)Tier 2 重點關注:$2 \sim 3$ 分(單一維度命中)Tier 3 常規備查:$< 2$ 分(若命中排除詞將被直接壓制在此階層)🛠️ 實戰實作步驟步驟一:擴充規則組態 config_rules.json在設定檔中,將單一公司名稱擴充為別名清單,並新增 exclude_keywords:
{
"vip_applicants": [
"台積電", "台灣積體電路", "TSMC",
"聯發科", "聯發科技",
"聯電", "鴻海", "日月光", "ASML", "三星"
],
"foreign_priority_keywords": [
"US", "JP", "KR", "EP", "WO", "PCT", "美國", "日本", "南韓"
],
"core_tech_keywords": [
"半導體", "散熱", "晶圓", "先進封裝", "封裝", "微影", "FinFET", "人工智慧", "AI"
],
"exclude_keywords": [
"外包裝", "紙盒", "包裝箱", "化妝品", "食品", "容器", "封口", "外觀設計"
]
}
步驟二:初始化模組載入排除清單 (Init_LoadConfig.xaml)
在組態讀取流程中,解析 JSON 節點並輸出 out_excludeList:
' 解析排除關鍵字陣列
out_excludeList = If(configJson("exclude_keywords") IsNot Nothing,
CType(configJson("exclude_keywords"), JArray).Select(Function(t) t.ToString().Trim()).ToArray(),
New String() {"外包裝", "紙盒", "食品"})
步驟三:重構打分引擎邏輯 (Scraping_ExtractPatents.xaml)
在詳細資料爬取迴圈內,將原有的 InvokeCode 升級為包含字串正規化、別名檢索與負向過濾的演算法:
Dim score As Integer = 0
Dim tagList As New System.Collections.Generic.List(Of String)()
Dim appClean As String = If(in_applicant, "").Trim().ToUpper()
Dim absClean As String = If(in_abstract, "").Trim().ToUpper()
Dim priClean As String = If(in_priority, "").Trim().ToUpper()
' 1. 負向關鍵詞攔截機制
Dim isExcluded As Boolean = False
If in_excludeList IsNot Nothing Then
For Each ex In in_excludeList
If Not String.IsNullOrEmpty(ex) AndAlso absClean.Contains(ex.Trim().ToUpper()) Then
isExcluded = True
tagList.Add("⚠️排除詞(" & ex & ")")
Exit For
End If
Next
End If
' 2. VIP 競品別名模糊匹配 (+3分)
If Not String.IsNullOrEmpty(appClean) AndAlso in_vipList IsNot Nothing Then
For Each vip In in_vipList
If Not String.IsNullOrEmpty(vip) AndAlso appClean.Contains(vip.Trim().ToUpper()) Then
score += 3
tagList.Add("VIP競品")
Exit For
End If
Next
End If
' 3. 核心技術詞判斷(若命中排除詞則施加懲罰降分)
If Not String.IsNullOrEmpty(absClean) AndAlso in_techList IsNot Nothing Then
For Each tech In in_techList
If Not String.IsNullOrEmpty(tech) AndAlso absClean.Contains(tech.Trim().ToUpper()) Then
If isExcluded Then
score -= 1 ' 負向降分
Else
score += 2
tagList.Add("核心技術(" & tech & ")")
End If
Exit For
End If
Next
End If
' 4. 海外優先權檢驗 (+1分)
If Not String.IsNullOrEmpty(priClean) AndAlso in_foreignList IsNot Nothing Then
For Each fp In in_foreignList
If Not String.IsNullOrEmpty(fp) AndAlso priClean.Contains(fp.Trim().ToUpper()) Then
score += 1
tagList.Add("海外優先權")
Exit For
End If
Next
End If
' 分數邊界保護與路由分流
If score < 0 Then score = 0
If score >= 4 Then
out_route = "Tier_1"
ElseIf score >= 2 Then
out_route = "Tier_2"
Else
out_route = "Tier_3"
End If
out_score = score
out_tags = If(tagList.Count > 0, String.Join("+", tagList), "一般常規")
今日成果
| 專利名稱 / 內容摘要 | 原始演算法判定 | 升級演算法判定 | 改善效益 |
|---|---|---|---|
| 申請人:台灣積體電路內容:晶圓散熱構造 | Tier 2(誤漏 VIP 競品加分) | Tier 1(命中別名 +3,技術 +2,共 5 分) | 競品專利不再脫靶漏抓 |
| 申請人:某包裝實業內容:具封裝結構之防潮食品紙盒 | Tier 2(因封裝關鍵字誤加 2 分) | Tier 3(命中排除詞紙盒,扣分壓制至 0 分) | 有效過濾無效噪音 |