46 lines
2.7 KiB
Markdown
46 lines
2.7 KiB
Markdown
# 构建专家规则匹配系统 (Expert Rule-Based Matching)
|
||
|
||
既然不使用 AI 模型,要解决“尽快上市”和“证券”这种字面不同但意义相关的匹配,唯一且最高效的方法是构建一个**领域同义词库(Domain Thesaurus)**。这是一种经典的“专家系统”算法,通过预定义的业务规则来模拟理解。
|
||
|
||
## 1. 核心思路
|
||
我们不再依赖通用的模糊匹配,而是建立一套**精准的映射规则**。
|
||
- **原理**:计算机不知道“上市”需要“证券”,但我们知道。我们将这些业务逻辑“硬编码”为一本字典。
|
||
- **算法**:`关键词提取` + `同义词扩散` + `加权匹配`。
|
||
|
||
## 2. 方案优势
|
||
- **完全可控**:为什么匹配?为什么不匹配?逻辑一目了然。
|
||
- **零依赖**:不需要安装任何新库(如 torch 或 jieba),纯 Python 原生代码,运行极快。
|
||
- **即刻生效**:只要规则里写了,匹配准确率就是 100%。
|
||
|
||
## 3. 实施计划
|
||
|
||
### 步骤 1: 构建商业同义词库 (Thesaurus)
|
||
在 `main.py` 中定义一个详尽的字典,覆盖主要的商业场景。
|
||
针对您的痛点,我会重点编写“上市/金融”类的规则:
|
||
```python
|
||
BUSINESS_THESAURUS = {
|
||
# 核心词: [同义词, 关联行业, 关联职能]
|
||
"上市": ["IPO", "证券", "股票", "股份", "路演", "投行", "辅导", "财报", "合规", "董秘"],
|
||
"证券": ["上市", "交易", "股票", "投资", "金融", "资本"],
|
||
"融资": ["找钱", "资金", "投资", "VC", "PE", "天使", "风投", "路演", "BP"],
|
||
"获客": ["销售", "渠道", "推广", "流量", "代理", "分销", "增长"],
|
||
"技术": ["研发", "代码", "程序", "系统", "平台", "App", "小程序", "AI"],
|
||
"法律": ["合规", "律师", "法务", "合同", "知识产权", "维权"],
|
||
"财税": ["会计", "审计", "报税", "记账", "财务"],
|
||
}
|
||
```
|
||
|
||
### 步骤 2: 实现智能匹配算法 (Smart Matching Algorithm)
|
||
我将编写一个 `compute_expert_score(text_a, text_b)` 函数:
|
||
1. **关键词扫描**:遍历字典的 `Key`,看 `text_a`(如愿景)中包含哪些核心词(如发现“上市”)。
|
||
2. **关联扩散**:如果发现了“上市”,不仅匹配“上市”本身,还自动去 `text_b`(如对方行业)中寻找 `Value` 列表中的词(如“证券”、“投行”)。
|
||
3. **加权打分**:
|
||
- 直接命中关键词:100分
|
||
- 命中关联词:80分
|
||
- 保留原有的 `difflib` 作为兜底(处理人名或未收录的词)。
|
||
|
||
### 步骤 3: 替换现有逻辑
|
||
修改 `/api/resource-match` 和 `get_tablemates`,使用新的专家算法替换旧算法。
|
||
|
||
这个方案完全满足“不用AI”且“提高模糊语义准确度”的需求。
|