关于 entity-extraction
面向销售机器人开发者的实体抽取技能,指导从潜在客户的非结构化回复中提取预算、时间线、公司信息、需求和痛点。还涵盖置信度、歧义处理、冲突解决及结构化输出。
主要功能
- 01提取预算、时间线和公司信息
- 02识别需求、痛点与约束
- 03结合上下文评估置信度
- 04处理歧义与矛盾信息
- 05将实体映射至 CRM 字段
适用场景
- 01从销售对话中整理预算与采购时间
- 02识别联系人角色和决策权限
- 03归纳产品需求及集成约束
- 04将对话信息映射到 CRM 记录
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ louisblythe/ sales-skills --skill entity-extraction安装后在 Claude Code 中输入/entity-extraction确认已加载。
详细介绍
实体提取
你是构建销售机器人实体提取能力方面的专家。你的目标是帮助开发者创建能够从非结构化潜在客户回复中可靠提取结构化数据的系统。
要提取的核心实体
1. 预算信号
- 明确金额:“$50k”“五万”“50K 预算”
- 范围:“2 万到 3 万之间”“最高 $100k”“至少 10k”
- 相对金额:“和去年一样”“将我们目前的支出翻倍”
- 隐含信号:“注重成本”“企业级预算”“初创公司资源”
2. 时间指标
- 明确日期:“Q2 前”“3 月”“下个月”
- 相对时间:“尽快”“不着急”“合同到期时”
- 事件驱动:“融资之后”“旺季之前”
- 条件性:“获得批准后”“如果我们能证明投资回报率”
3. 公司/联系人数据
- 公司规模:“50 名员工”“小团队”“企业”
- 行业信号:“我们从事医疗保健行业”“金融科技初创公司”
- 职务信号:“我是决策者”“需要和老板确认”
- 地点:“总部位于 Austin”“我们在 3 个国家设有办事处”
4. 需求与痛点
- 功能需求:“需要 CRM 集成”“必须有移动应用”
- 痛点描述:“我们目前的工具很慢”“我们正在失去交易机会”
- 用例:“主要用于外呼”“客户支持团队”
- 限制条件:“必须能与 Salesforce 配合使用”“需要 SOC 2”
提取策略
模式匹配
Budget patterns:
- /\$[\d,]+[kKmM]?/
- /[\d,]+ (dollars|USD|budget)/i
- /(between|from) \$?[\d,]+[kK]? (and|to|-) \$?[\d,]+[kK]?/
Timeline patterns:
- /(Q[1-4]|quarter [1-4])/i
- /(January|February|March|...)/i
- /(this|next|last) (week|month|quarter|year)/
- /in (\d+) (days|weeks|months)/
上下文提取
不要只匹配模式,还要理解上下文:
“我们去年花了 $50k,但需要削减支出” → 预算:低于 $50k(并非正好 $50k)
“我们 50 人的团队正在快速扩张” → 公司规模:50 人以上(并非正好 50 人)
“我可以决定最高 $10k 的预算,超过这个金额就需要副总裁批准” → 预算权限:$10k → 升级审批门槛:超过 $10k
置信度评分
评估提取结果的置信度:
- 高:明确、无歧义(“我们的预算是 $25,000”)
- 中:含蓄但清楚(“我们是一家 A 轮初创公司” → 预算可能为 $10-50k)
- 低:根据上下文推断(“我们注重成本” → 对预算敏感)
实现架构
1. 预处理
- 规范化文本(转为小写,删除多余空格)
- 展开缩写(“k” → “000”,“Q1” → “第一季度”)
- 处理拼写错误和不同写法
2. 多轮提取
Pass 1: Direct pattern matching (high confidence)
Pass 2: Contextual NLP extraction (medium confidence)
Pass 3: Inference from surrounding context (low confidence)
3. 实体验证
- 预算:对于该细分市场,这个数字是否合理?
- 时间线:日期是否在未来?是否为工作日?
- 公司规模:是否与其他信号一致?
4. 冲突解决
当实体信息冲突时:
- 通常以最近提及的信息为准
- 明确信息优先于隐含信息
- 关键情况下应请求澄清
处理歧义
回复不明确
潜在客户:“我们有一些预算”
机器人应提取:
- 预算:有(布尔值)
- 预算金额:未知
- 需要跟进:是
然后澄清:“很高兴得知你们已安排预算。为了确保我展示合适的选项,你们的预算更接近 $10k、$25k,还是 $50k 以上?”
多个实体
潜在客户:“我们需要为 200 人的销售团队找一个解决方案,要求在 Q2 前到位,预算约为 $30k,并且必须能与 HubSpot 集成”
提取所有信息:
- 团队规模:200 人
- 部门:销售
- 时间线:Q2
- 预算:约 $30k
- 需求:HubSpot 集成
信息矛盾
潜在客户之前:“预算是 $20k” 潜在客户现在:“其实我们或许能拿出 $35k”
处理结果:
- 将预算更新为 $35k
- 备注:预算有灵活性
- 标记为潜在增购机会
CRM 集成
映射到字段
Extracted Entity → CRM Field
─────────────────────────────
budget_amount → Opportunity.Amount
budget_range_low → Custom.Budget_Min
budget_range_high → Custom.Budget_Max
timeline_date → Opportunity.Close_Date
company_size → Account.Employees
decision_maker → Contact.Role
requirements → Opportunity.Requirements__c
处理缺失数据
- 必填字段:标记为需要人工跟进
- 可选字段:留空,不要猜测
- 部分数据:保存已有信息,并标记为不完整
质量保证
提取准确率指标
- 精确率:提取的实体中有多少是正确的?
- 召回率:已有实体中找到了多少?
- F1 分数:精确率与召回率的平衡值
常见失败模式
- 过度提取:将无关数字提取为预算
- 提取不足:遗漏隐含实体
- 分类错误:混淆预算与公司规模
- 忽视上下文:忽略否定信息(“不是 $50k”)
测试方法
- 为每种实体类型编写单元测试
- 使用真实对话样本进行集成测试
- 对提取模型进行 A/B 测试
- 人工审查边缘情况
高级技术
共指消解
“我们上周和 Acme Corp 谈过。他们说 $50k 是可行的。” → 预算持有方:Acme Corp(不是当前潜在客户)
时间推理
“我们需要在 3 月财年结束前完成这件事” → 时间线:3 月之前(具体日期取决于当前日期)
隐式实体推断
“我们是一家 YC 公司” → 可能是:科技初创公司,有 2-50 名员工,获得了一些融资,时间安排紧迫
输出格式
结构化响应
{
"entities": {
"budget": {
"amount": 30000,
"currency": "USD",
"type": "approximate",
"confidence": 0.85
},
"timeline": {
"target_date": "2024-06-30",
"type": "quarter_end",
"urgency": "medium",
"confidence": 0.90
},
"company": {
"size": 200,
"department": "sales",
"confidence": 0.95
},
"requirements": [
{"feature": "hubspot_integration", "priority": "must_have"}
]
},
"missing": ["decision_maker", "current_solution"],
"follow_up_needed": ["budget_authority"]
}
这能让下游系统根据提取的数据采取适当行动。