1082 lines
18 KiB
JavaScript
1082 lines
18 KiB
JavaScript
const COMPANY_ENTITY_KEYWORDS = [
|
||
'德国PM',
|
||
'德国PM公司',
|
||
'PM公司',
|
||
'PM国际',
|
||
'PM-International',
|
||
'PM-International AG',
|
||
'Rolf Sorg',
|
||
'邓白氏',
|
||
'AAA+',
|
||
'DSN',
|
||
'BFH',
|
||
'ELAB',
|
||
'科隆名单',
|
||
'GMP',
|
||
'Halal',
|
||
'宣明会',
|
||
'世界宣明会',
|
||
'斯派尔',
|
||
'Speyer',
|
||
'卢森堡',
|
||
'培安(烟台)日用品有限责任公司',
|
||
'培安烟台',
|
||
'烟台',
|
||
];
|
||
|
||
const SYSTEM_ENTITY_KEYWORDS = [
|
||
'一成系统',
|
||
'一成AI',
|
||
'一成Ai',
|
||
'Ai众享',
|
||
'AI众享',
|
||
'数字化工作室',
|
||
'盛咖学愿',
|
||
'三大平台',
|
||
'四大AI生态',
|
||
'四大Ai生态',
|
||
'四大生态',
|
||
'盟主社区',
|
||
'AI智能生产力',
|
||
'AI生产力',
|
||
'智能生产力',
|
||
'行动圈',
|
||
'批发式晋级',
|
||
'身未动,梦已成',
|
||
'身未动梦已成',
|
||
'零成本高效率',
|
||
'零成本高效率运行',
|
||
'赋能团队',
|
||
'团队赋能',
|
||
'团队发展',
|
||
'文化解析',
|
||
'故事分享',
|
||
'自我介绍',
|
||
'邀约话术',
|
||
'线上拓客',
|
||
'线上成交',
|
||
'陌生客户',
|
||
'陌生人沟通',
|
||
];
|
||
|
||
const PRODUCT_ENTITY_KEYWORDS = [
|
||
'PM产品',
|
||
'PM-FitLine',
|
||
'FitLine',
|
||
'PM细胞营养素',
|
||
'细胞营养素',
|
||
'基础套装',
|
||
'基础三合一',
|
||
'三合一',
|
||
'基础二合一',
|
||
'二合一',
|
||
'小红产品',
|
||
'小红',
|
||
'艾特维',
|
||
'Activize Oxyplus',
|
||
'Activize Serum',
|
||
'Activize',
|
||
'小红精华液',
|
||
'大白产品',
|
||
'大白',
|
||
'倍适',
|
||
'Basics',
|
||
'Basic Power',
|
||
'PowerCocktail',
|
||
'小白产品',
|
||
'小白',
|
||
'维适多',
|
||
'Restorate',
|
||
'儿童倍适',
|
||
'PowerCocktail Junior',
|
||
'NTC营养保送系统',
|
||
'NTC',
|
||
'Nutrient Transport Concept',
|
||
'火炉原理',
|
||
'暖炉原理',
|
||
'阿育吠陀',
|
||
'Ayurveda',
|
||
'Med Dental+',
|
||
'草本护理牙膏',
|
||
'Men Face',
|
||
'全效男士护肤抗衰乳霜',
|
||
'CC-Cell',
|
||
'CC-Cell胶囊',
|
||
'CC-Cell乳霜',
|
||
'CC套装',
|
||
'CC胶囊',
|
||
'D-Drink',
|
||
'小绿排毒饮',
|
||
'14天排毒D饮料Plus',
|
||
'ProShape Amino',
|
||
'ProShape® Amino',
|
||
'氨基酸',
|
||
'支链氨基酸',
|
||
'BCAA',
|
||
'MEN+',
|
||
'Men+',
|
||
'倍力健 MEN+',
|
||
'倍力健',
|
||
'小黑',
|
||
'Herbal Tea',
|
||
'草本茶',
|
||
'Hair+',
|
||
'med Hair+',
|
||
'口服发宝',
|
||
'外用发健',
|
||
'发宝',
|
||
'Fitness-Drink',
|
||
'运动饮料健康饮品',
|
||
'运动饮料',
|
||
'健康饮品',
|
||
'TopShape',
|
||
'孅萃TopShape纤萃减肥',
|
||
'纤萃减肥',
|
||
'乐活50+',
|
||
'Generation 50+',
|
||
'Apple Antioxy',
|
||
'苹果细胞抗氧素',
|
||
'Antioxy',
|
||
'Zellschutz',
|
||
'细胞抗氧素',
|
||
'胶原蛋白肽',
|
||
'胶原蛋白',
|
||
'Women+',
|
||
'乐活奶昔',
|
||
'乐活',
|
||
'乳清蛋白',
|
||
'蛋白粉',
|
||
'乳酪煲',
|
||
'乳酪饮品',
|
||
'乳酪',
|
||
'IB5',
|
||
'口腔免疫喷雾',
|
||
'Q10',
|
||
'辅酵素',
|
||
'Q10辅酵素氧修护',
|
||
'关节套装',
|
||
'关节舒缓',
|
||
'男士乳霜',
|
||
'男士护肤',
|
||
'去角质',
|
||
'面膜',
|
||
'叶黄素',
|
||
'葡萄籽',
|
||
'白藜芦醇',
|
||
'益生菌',
|
||
'肽美',
|
||
'德丽',
|
||
'德维',
|
||
'宝丽',
|
||
'美固健',
|
||
'CitrusCare',
|
||
'NutriSunny',
|
||
'Omega',
|
||
'Young Care',
|
||
'骨骼健',
|
||
'顾心',
|
||
'舒采健',
|
||
'衡醇饮',
|
||
'小粉C',
|
||
'小粉',
|
||
'异黄酮',
|
||
'Isoflavon',
|
||
'眼霜',
|
||
'Eye Cream',
|
||
'洁面',
|
||
'洁面乳',
|
||
'爽肤水',
|
||
'Tonic',
|
||
'餐代餐',
|
||
'代餐奶昔',
|
||
'美白霜',
|
||
'修护膜',
|
||
'Antioxy',
|
||
'Apple Antioxy',
|
||
'苹果细胞抗氧素',
|
||
];
|
||
|
||
const BUSINESS_ENTITY_KEYWORDS = [
|
||
'PM事业',
|
||
'做PM',
|
||
'加入PM',
|
||
'招商合作',
|
||
'招商与代理',
|
||
'招商稿',
|
||
'招商',
|
||
'招募',
|
||
'代理',
|
||
'代理商',
|
||
'代理政策',
|
||
'加盟',
|
||
'招商加盟',
|
||
'合作加盟',
|
||
'事业合作',
|
||
'事业机会',
|
||
'创业',
|
||
'培训新人起步三关',
|
||
'起步三关',
|
||
'培训打造精品会议具体如下',
|
||
'精品会议',
|
||
'会议组织',
|
||
'培训成长上总裁',
|
||
'成长上总裁',
|
||
];
|
||
|
||
const ROUTE_TOPIC_KEYWORDS = [
|
||
// 公司相关
|
||
'公司介绍',
|
||
'公司背景',
|
||
'公司实力',
|
||
'公司地址',
|
||
'公司电话',
|
||
'联系方式',
|
||
'总部',
|
||
'分公司',
|
||
'公司成立',
|
||
'公司历史',
|
||
'公司规模',
|
||
'全球布局',
|
||
'信用评级',
|
||
'行业排名',
|
||
'获奖',
|
||
'慈善',
|
||
'慈善事业',
|
||
'社会责任',
|
||
'Rolf Sorg',
|
||
'RolfSorg',
|
||
'斯派尔',
|
||
'不上市',
|
||
'汽车奖励',
|
||
'退休金',
|
||
'旅行',
|
||
'福利',
|
||
'企业性质',
|
||
'发展历程',
|
||
// 产品相关
|
||
'产品介绍',
|
||
'产品说明',
|
||
'产品推荐',
|
||
'产品有哪些',
|
||
'产品列表',
|
||
'产品图片',
|
||
'产品外观',
|
||
// 语音口语化触发词
|
||
'你们公司',
|
||
'你们的公司',
|
||
'你们产品',
|
||
'你们的产品',
|
||
'你们那个',
|
||
'咱们公司',
|
||
'咱们产品',
|
||
'咱们的',
|
||
'你们这个',
|
||
'你们卖的',
|
||
'你们的东西',
|
||
'这个东西',
|
||
'这东西',
|
||
'那玩意',
|
||
// 口语化动词
|
||
'说说',
|
||
'讲讲',
|
||
'介绍介绍',
|
||
'查查',
|
||
'帮我查',
|
||
'帮我问',
|
||
'帮我看看',
|
||
'有啥用',
|
||
'咱吃',
|
||
'咱用',
|
||
'咱回事',
|
||
'咱样',
|
||
'啥意思',
|
||
'有啥',
|
||
'咱办',
|
||
// 营养品/保健品通用词
|
||
'营养素',
|
||
'营养品',
|
||
'保健品',
|
||
'保健食品',
|
||
'营养补充',
|
||
'营养剂',
|
||
'膏营养',
|
||
// 直销事业
|
||
'直销',
|
||
'直销公司',
|
||
'直销事业',
|
||
// 健康/症状/功效相关(触发KB总入口)
|
||
'排毒',
|
||
'排毒产品',
|
||
'减肥',
|
||
'减肥产品',
|
||
'瘦身',
|
||
'护肤',
|
||
'护肤品',
|
||
'护发',
|
||
'脱发',
|
||
'掉发',
|
||
'头发',
|
||
'牙膏',
|
||
'喷雾',
|
||
'关节痛',
|
||
'关节',
|
||
'眼睛',
|
||
'视力',
|
||
'叶黄素',
|
||
'抗氧化',
|
||
'抗衰',
|
||
'抗衰老',
|
||
'胶原蛋白',
|
||
'运动饮料',
|
||
'免疫力',
|
||
'能量',
|
||
'抗疲劳',
|
||
'疲劳',
|
||
'睡眠',
|
||
'失眠',
|
||
'消化',
|
||
'肠胃',
|
||
'便秘',
|
||
'皮肤',
|
||
'美容',
|
||
'美白',
|
||
'祠斑',
|
||
'祠痘',
|
||
'痘痘',
|
||
'补钹',
|
||
'补铁',
|
||
'补血',
|
||
'骨密度',
|
||
'补钙',
|
||
// 特定人群(触发FAQ或产品库)
|
||
'孕妇',
|
||
'哺乳期',
|
||
'怀孕',
|
||
'孕期',
|
||
'儿童',
|
||
'小孩',
|
||
'孩子',
|
||
'老人',
|
||
'老年人',
|
||
'过敏',
|
||
'过敏体质',
|
||
// 事业/招商
|
||
'事业',
|
||
'做这个事业',
|
||
'怎么做这个',
|
||
'怎么赚钱',
|
||
'能赚钱吗',
|
||
'收入',
|
||
'奖金',
|
||
'奖金制度',
|
||
'纪念品',
|
||
'服务商',
|
||
'合作伙伴',
|
||
'为什么选择德国PM',
|
||
// 合法性/传销相关
|
||
'正规性',
|
||
'合法性',
|
||
'传销',
|
||
'骗局',
|
||
'骗子',
|
||
'是不是传销',
|
||
'直销还是传销',
|
||
'合不合法',
|
||
'正不正规',
|
||
'正规吗',
|
||
'合法吗',
|
||
'层级分销',
|
||
'非法集资',
|
||
'拉人头',
|
||
'发展下线',
|
||
'报单',
|
||
'人头费',
|
||
'安全吗',
|
||
'合规吗',
|
||
'有许可证吗',
|
||
// 好转反应/副作用
|
||
'好转反应',
|
||
'整健反应',
|
||
'排毒反应',
|
||
'副作用',
|
||
'不良反应',
|
||
'皮肤发痒',
|
||
'皮肤微痒',
|
||
// 促销活动
|
||
'促销活动',
|
||
'活动分数',
|
||
'5+1活动分数',
|
||
'5+1',
|
||
// 产品使用方法
|
||
'怎么吃',
|
||
'怎么用',
|
||
'怎么服用',
|
||
'服用方法',
|
||
'吃法',
|
||
'用法',
|
||
'用量',
|
||
'搭配',
|
||
'空腹吃',
|
||
'饭前吃',
|
||
'饭后吃',
|
||
'温水冲',
|
||
'冷水冲',
|
||
'一天吃几次',
|
||
'一次吃多少',
|
||
// 产品属性
|
||
'功效',
|
||
'作用',
|
||
'成分',
|
||
'原料',
|
||
'配方',
|
||
'多少钱',
|
||
'价格',
|
||
'适合谁',
|
||
'适用人群',
|
||
'区别',
|
||
'哪个好',
|
||
'多久见效',
|
||
'见效',
|
||
'多久能见效',
|
||
'哪里买',
|
||
'怎么买',
|
||
'保质期',
|
||
'储存',
|
||
// 效果/评价相关
|
||
'效果怎么样',
|
||
'有效果吗',
|
||
'有没有用',
|
||
'好不好',
|
||
'靠谱吗',
|
||
'值得买吗',
|
||
'值得做吗',
|
||
'真的有用吗',
|
||
'真的假的',
|
||
'有科学依据吗',
|
||
// 加入/参与
|
||
'怎么加入',
|
||
'如何加入',
|
||
'怎么报名',
|
||
'怎么参与',
|
||
'怎么做',
|
||
'如何开始',
|
||
// 科普/培训/认证
|
||
'科普',
|
||
'误区',
|
||
'认证',
|
||
'检测',
|
||
'检测报告',
|
||
'安全认证',
|
||
'培训',
|
||
'新人',
|
||
'起步',
|
||
'成长',
|
||
// 疾病/健康状况(触发FAQ)
|
||
'高血压',
|
||
'糖尿病',
|
||
'胆固醇',
|
||
'心脏病',
|
||
'肾病',
|
||
'肝病',
|
||
'痛风',
|
||
'贫血',
|
||
'肥胖',
|
||
// 能不能吃/用类问题
|
||
'能吃吗',
|
||
'可以吃吗',
|
||
'能喝吗',
|
||
'可以喝吗',
|
||
'能用吗',
|
||
'可以用吗',
|
||
'一起吃',
|
||
'同时吃',
|
||
'混着吃',
|
||
'搭配吃',
|
||
'吃药',
|
||
'药物',
|
||
// 产品剂型/形态(用户质疑/纠正时常提及)
|
||
'粉末',
|
||
'粉剂',
|
||
'粉状',
|
||
'冲剂',
|
||
'冲泡',
|
||
'片剂',
|
||
'药片',
|
||
'胶囊',
|
||
'软胶囊',
|
||
'颗粒',
|
||
'口服液',
|
||
'膏状',
|
||
// 质疑/纠正/确认/怀疑/复查类口语词(全覆盖)
|
||
// 直接否定
|
||
'不是的',
|
||
'才不是',
|
||
'不是不是',
|
||
'不是这么回事',
|
||
// 指出错误
|
||
'搞错了',
|
||
'说错了',
|
||
'弄错了',
|
||
'记错了',
|
||
'搞混了',
|
||
'搞反了',
|
||
'记岔了',
|
||
'说反了',
|
||
'张冠李戴',
|
||
'答非所问',
|
||
// 说AI不对
|
||
'不对',
|
||
'不是这样',
|
||
'不准确',
|
||
'不正确',
|
||
'有误',
|
||
'说的不对',
|
||
'回答有误',
|
||
'不太对',
|
||
'不太准',
|
||
// 与认知矛盾
|
||
'不一样',
|
||
'不一致',
|
||
'前后矛盾',
|
||
'自相矛盾',
|
||
// 怀疑/不信
|
||
'不信',
|
||
'骗人',
|
||
'忽悠',
|
||
'吹牛',
|
||
'太夸张',
|
||
'离谱',
|
||
'扯淡',
|
||
'瞎扯',
|
||
// 确认/复查
|
||
'你确定吗',
|
||
'确定吗',
|
||
'真的吗',
|
||
'当真',
|
||
'再查一下',
|
||
'再确认一下',
|
||
'再核实',
|
||
'重新查',
|
||
'核实一下',
|
||
'查清楚',
|
||
'搞清楚',
|
||
// 委婉质疑
|
||
'好像不是',
|
||
'好像不对',
|
||
'我觉得不对',
|
||
'恐怕不是',
|
||
'感觉不对',
|
||
// 质问来源
|
||
'谁说的',
|
||
'谁告诉你',
|
||
'有什么根据',
|
||
'有什么依据',
|
||
'有证据吗',
|
||
'有依据吗',
|
||
// 不可能/反问
|
||
'怎么可能',
|
||
'不可能',
|
||
'不会吧',
|
||
'不是吧',
|
||
'开玩笑',
|
||
'别逗了',
|
||
'胡说',
|
||
'瞎说',
|
||
'乱说',
|
||
// 纠正句式
|
||
'到底是',
|
||
'究竟是',
|
||
'应该是',
|
||
'明明是',
|
||
'其实是',
|
||
'本来是',
|
||
'怎么变成',
|
||
'不应该是',
|
||
// 产品形态/使用方式
|
||
'冲着喝',
|
||
'泡着喝',
|
||
'直接吞',
|
||
'是喝的',
|
||
'是吃的',
|
||
];
|
||
|
||
const CANONICAL_KNOWLEDGE_TERMS = [
|
||
'一成系统',
|
||
'德国PM',
|
||
'PM-FitLine',
|
||
'FitLine',
|
||
'PM细胞营养素',
|
||
'NTC营养保送系统',
|
||
'Activize Oxyplus',
|
||
'Basics',
|
||
'Restorate',
|
||
'儿童倍适',
|
||
'火炉原理',
|
||
'阿育吠陀',
|
||
];
|
||
|
||
function escapeRegExp(text) {
|
||
return String(text || '').replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||
}
|
||
|
||
function uniqueKeywords(keywords) {
|
||
const seen = new Set();
|
||
const result = [];
|
||
for (const keyword of Array.isArray(keywords) ? keywords : []) {
|
||
const normalized = String(keyword || '').trim();
|
||
if (!normalized) continue;
|
||
const lower = normalized.toLowerCase();
|
||
if (seen.has(lower)) continue;
|
||
seen.add(lower);
|
||
result.push(normalized);
|
||
}
|
||
return result.sort((a, b) => b.length - a.length);
|
||
}
|
||
|
||
function buildKeywordRegex(keywords, flags = 'i') {
|
||
const terms = uniqueKeywords(keywords).map(escapeRegExp);
|
||
return new RegExp(`(?:${terms.join('|')})`, flags);
|
||
}
|
||
|
||
function dedupeMatches(matches) {
|
||
const result = [];
|
||
const seen = new Set();
|
||
for (const item of Array.isArray(matches) ? matches : []) {
|
||
const normalized = String(item || '').trim();
|
||
if (!normalized) continue;
|
||
const lower = normalized.toLowerCase();
|
||
if (seen.has(lower)) continue;
|
||
seen.add(lower);
|
||
result.push(normalized);
|
||
}
|
||
return result;
|
||
}
|
||
|
||
const KNOWLEDGE_ENTITY_KEYWORDS = uniqueKeywords([
|
||
...COMPANY_ENTITY_KEYWORDS,
|
||
...SYSTEM_ENTITY_KEYWORDS,
|
||
...PRODUCT_ENTITY_KEYWORDS,
|
||
...BUSINESS_ENTITY_KEYWORDS,
|
||
]);
|
||
|
||
const COMPANY_ROUTE_KEYWORDS = uniqueKeywords([
|
||
...COMPANY_ENTITY_KEYWORDS,
|
||
'公司介绍',
|
||
'公司背景',
|
||
'公司实力',
|
||
'公司地址',
|
||
'公司电话',
|
||
'联系方式',
|
||
'总部',
|
||
'分公司',
|
||
'公司成立',
|
||
'公司历史',
|
||
'公司规模',
|
||
'全球布局',
|
||
'全球业务',
|
||
'信用评级',
|
||
'行业排名',
|
||
'获奖',
|
||
'获奖情况',
|
||
'慈善',
|
||
'慈善事业',
|
||
'社会责任',
|
||
'不上市',
|
||
'为什么不上市',
|
||
'汽车奖励',
|
||
'退休金',
|
||
'旅行奖励',
|
||
'旅行',
|
||
'福利',
|
||
'企业性质',
|
||
'发展历程',
|
||
'发展史',
|
||
'创始人',
|
||
'创办人',
|
||
'老板',
|
||
'总裁',
|
||
'年营业额',
|
||
'营收',
|
||
'市场份额',
|
||
'品牌实力',
|
||
'品牌介绍',
|
||
'各国地址',
|
||
'各国电话',
|
||
'哪个国家',
|
||
'哪些国家',
|
||
'多少个国家',
|
||
'业务覆盖',
|
||
]);
|
||
|
||
const SYSTEM_ROUTE_KEYWORDS = uniqueKeywords([
|
||
...SYSTEM_ENTITY_KEYWORDS,
|
||
'故事分享',
|
||
'自我介绍',
|
||
'邀约话术',
|
||
'AI赋能',
|
||
'AI落地',
|
||
'转观念',
|
||
'如何开展业务',
|
||
'开展业务',
|
||
'邀约客户',
|
||
'邀约方法',
|
||
'邀约技巧',
|
||
'邀约模板',
|
||
'线上拓客',
|
||
'线上成交',
|
||
'陌生客户',
|
||
'陌生人沟通',
|
||
'团队发展',
|
||
'团队赋能',
|
||
'团队建设',
|
||
'团队管理',
|
||
'批发式晋级',
|
||
'系统文化',
|
||
'系统介绍',
|
||
'系统是什么',
|
||
'一成是什么',
|
||
'数字化',
|
||
'智能工具',
|
||
'AI工具',
|
||
'AI众享是什么',
|
||
'盟主社区',
|
||
'行动圈',
|
||
'零成本',
|
||
'高效率',
|
||
]);
|
||
|
||
const PRODUCT_ROUTE_KEYWORDS = uniqueKeywords([
|
||
...PRODUCT_ENTITY_KEYWORDS,
|
||
'产品介绍',
|
||
'产品说明',
|
||
'产品推荐',
|
||
'产品有哪些',
|
||
'产品列表',
|
||
'产品图片',
|
||
'产品外观',
|
||
'搭配',
|
||
'功效',
|
||
'作用',
|
||
'成分',
|
||
'原料',
|
||
'配方',
|
||
'怎么吃',
|
||
'怎么服用',
|
||
'服用方法',
|
||
'吃法',
|
||
'用法',
|
||
'用量',
|
||
'适合谁',
|
||
'适用人群',
|
||
'区别',
|
||
'哪个好',
|
||
'多少钱',
|
||
'价格',
|
||
'多久见效',
|
||
'哪里买',
|
||
'怎么买',
|
||
'图片',
|
||
'外观',
|
||
'规格',
|
||
'套装',
|
||
'暖炉原理',
|
||
'火炉原理',
|
||
'NTC',
|
||
'活动分数',
|
||
'专利',
|
||
'细胞营养',
|
||
// 产品功效词
|
||
'免疫力',
|
||
'能量',
|
||
'抗疲劳',
|
||
'睡眠',
|
||
'消化',
|
||
'排毒',
|
||
'护肤',
|
||
'护发',
|
||
'脱发',
|
||
'抗氧化',
|
||
'抗衰老',
|
||
'美容',
|
||
'美白',
|
||
'祠斑',
|
||
'祠痘',
|
||
'瘦身',
|
||
'减肥',
|
||
'关节',
|
||
'骨密度',
|
||
'胶原蛋白',
|
||
// 产品使用方式
|
||
'空腹吃',
|
||
'饭前吃',
|
||
'饭后吃',
|
||
'温水冲',
|
||
'冷水冲',
|
||
'一天吃几次',
|
||
'一次吃多少',
|
||
'保质期',
|
||
'储存',
|
||
'冷藏',
|
||
// 产品类别
|
||
'营养素',
|
||
'营养品',
|
||
'保健品',
|
||
'保健食品',
|
||
'营养补充',
|
||
// 产品对比
|
||
'哪个产品',
|
||
'推荐产品',
|
||
'入门产品',
|
||
'必买产品',
|
||
'明星产品',
|
||
'最畅销',
|
||
'热卖',
|
||
]);
|
||
|
||
const FAQ_ROUTE_KEYWORDS = uniqueKeywords([
|
||
// 疑问词
|
||
'怎么办',
|
||
'为什么',
|
||
'能不能',
|
||
'有没有',
|
||
'怎么回事',
|
||
'咱回事',
|
||
'正常吗',
|
||
'安全吗',
|
||
'有害吗',
|
||
'有毒吗',
|
||
// 好转反应/副作用
|
||
'好转反应',
|
||
'整健反应',
|
||
'排毒反应',
|
||
'副作用',
|
||
'不良反应',
|
||
'不舒服',
|
||
'身体反应',
|
||
'身体不适',
|
||
// 症状词
|
||
'皮肤发痒',
|
||
'皮肤微痒',
|
||
'发痒',
|
||
'头晕',
|
||
'便秘',
|
||
'腹泻',
|
||
'拉肚子',
|
||
'恶心',
|
||
'呕吐',
|
||
'长痘',
|
||
'出疹子',
|
||
'红肿',
|
||
'口干',
|
||
'上火',
|
||
'胃痛',
|
||
'胃不舒服',
|
||
'抽筋',
|
||
'浮肿',
|
||
'心悸',
|
||
'气短',
|
||
'失眠',
|
||
'多梦',
|
||
'发热',
|
||
'出汗',
|
||
'拉肃子',
|
||
// 疾病/健康状况
|
||
'高血压',
|
||
'糖尿病',
|
||
'胆固醇',
|
||
'心脏病',
|
||
'肾病',
|
||
'肝病',
|
||
'痛风',
|
||
'贫血',
|
||
'肥胖',
|
||
'甲亢',
|
||
'甲减',
|
||
'胃炎',
|
||
'肠炎',
|
||
'哮喘',
|
||
'湿疹',
|
||
'过敏',
|
||
'结石',
|
||
'癌症',
|
||
'肿瘤',
|
||
'水肿',
|
||
'尿酸',
|
||
// 特定人群问题
|
||
'孕妇',
|
||
'哺乳期',
|
||
'怀孕',
|
||
'孕期',
|
||
'儿童',
|
||
'小孩',
|
||
'孩子',
|
||
'老人',
|
||
'老年人',
|
||
'手术后',
|
||
'化疗',
|
||
'放疗',
|
||
'术后',
|
||
'月子',
|
||
'吃药',
|
||
'药物',
|
||
'与药物',
|
||
'跟药一起',
|
||
'问答',
|
||
'问题',
|
||
// 能不能吃/用类问题
|
||
'能吃吗',
|
||
'可以吃吗',
|
||
'能喝吗',
|
||
'可以喝吗',
|
||
'能用吗',
|
||
'可以用吗',
|
||
'一起吃',
|
||
'同时吃',
|
||
'混着吃',
|
||
'搭配吃',
|
||
'能混合吗',
|
||
// 效果评价
|
||
'有效果吗',
|
||
'有没有用',
|
||
'好不好',
|
||
'靠谱吗',
|
||
'真的有用吗',
|
||
'真的假的',
|
||
'有科学依据吗',
|
||
'多久见效',
|
||
'多久能看到效果',
|
||
'吃多久',
|
||
'要吃多久',
|
||
// 价格/性价比
|
||
'贵不贵',
|
||
'性价比',
|
||
'划算吗',
|
||
'值得买吗',
|
||
]);
|
||
|
||
const SCIENCE_TRAINING_ROUTE_KEYWORDS = uniqueKeywords([
|
||
...BUSINESS_ENTITY_KEYWORDS,
|
||
// 科普知识
|
||
'科普',
|
||
'误区',
|
||
'营养误区',
|
||
'健康误区',
|
||
'保健品误区',
|
||
'认证',
|
||
'检测',
|
||
'检测报告',
|
||
'安全认证',
|
||
'GMP认证',
|
||
'Halal认证',
|
||
'科学依据',
|
||
'临床试验',
|
||
'研究报告',
|
||
// 招商相关
|
||
'招商',
|
||
'招商稿',
|
||
'代理',
|
||
'加盟',
|
||
'加入',
|
||
'怎么加入',
|
||
'如何加入',
|
||
'怎么报名',
|
||
'怎么参与',
|
||
'赚钱',
|
||
'收入',
|
||
'奖金',
|
||
'奖金制度',
|
||
'事业机会',
|
||
'创业',
|
||
'创业机会',
|
||
'副业',
|
||
'兼职',
|
||
// 培训相关
|
||
'新人',
|
||
'新人入门',
|
||
'新人指南',
|
||
'培训',
|
||
'起步',
|
||
'起步三关',
|
||
'会议',
|
||
'精品会议',
|
||
'会议组织',
|
||
'会议运营',
|
||
'促销',
|
||
'促销活动',
|
||
'成长',
|
||
'总裁',
|
||
'成长上总裁',
|
||
'纪念品',
|
||
'服务商',
|
||
'合作伙伴',
|
||
'营销技巧',
|
||
'销售技巧',
|
||
'打思维导图',
|
||
'团队建设',
|
||
'如何开始',
|
||
'怎么做',
|
||
'怎么做这个',
|
||
'怎么赚钱',
|
||
'能赚钱吗',
|
||
'值得做吗',
|
||
'投资多少',
|
||
'门槛',
|
||
'起步费',
|
||
'报单',
|
||
]);
|
||
|
||
const KNOWLEDGE_ROUTE_KEYWORDS = uniqueKeywords([
|
||
...KNOWLEDGE_ENTITY_KEYWORDS,
|
||
...ROUTE_TOPIC_KEYWORDS,
|
||
...FAQ_ROUTE_KEYWORDS,
|
||
]);
|
||
|
||
const TRACKER_KEYWORD_GROUPS = [
|
||
SYSTEM_ENTITY_KEYWORDS,
|
||
COMPANY_ENTITY_KEYWORDS,
|
||
PRODUCT_ENTITY_KEYWORDS,
|
||
BUSINESS_ENTITY_KEYWORDS,
|
||
];
|
||
|
||
const CANONICAL_KNOWLEDGE_REGEX = buildKeywordRegex(CANONICAL_KNOWLEDGE_TERMS, 'i');
|
||
const KNOWLEDGE_ROUTE_REGEX = buildKeywordRegex(KNOWLEDGE_ROUTE_KEYWORDS, 'i');
|
||
const KNOWLEDGE_ENTITY_REGEX = buildKeywordRegex(KNOWLEDGE_ENTITY_KEYWORDS, 'gi');
|
||
|
||
function hasKeywordFromList(text, keywords) {
|
||
return buildKeywordRegex(keywords, 'i').test(String(text || ''));
|
||
}
|
||
|
||
function hasCanonicalKnowledgeTerm(text) {
|
||
return CANONICAL_KNOWLEDGE_REGEX.test(String(text || ''));
|
||
}
|
||
|
||
function hasKnowledgeRouteKeyword(text) {
|
||
return KNOWLEDGE_ROUTE_REGEX.test(String(text || ''));
|
||
}
|
||
|
||
function extractKnowledgeEntityMatches(text) {
|
||
return dedupeMatches(String(text || '').match(KNOWLEDGE_ENTITY_REGEX) || []);
|
||
}
|
||
|
||
module.exports = {
|
||
COMPANY_ENTITY_KEYWORDS,
|
||
SYSTEM_ENTITY_KEYWORDS,
|
||
PRODUCT_ENTITY_KEYWORDS,
|
||
BUSINESS_ENTITY_KEYWORDS,
|
||
ROUTE_TOPIC_KEYWORDS,
|
||
CANONICAL_KNOWLEDGE_TERMS,
|
||
KNOWLEDGE_ENTITY_KEYWORDS,
|
||
COMPANY_ROUTE_KEYWORDS,
|
||
SYSTEM_ROUTE_KEYWORDS,
|
||
PRODUCT_ROUTE_KEYWORDS,
|
||
FAQ_ROUTE_KEYWORDS,
|
||
SCIENCE_TRAINING_ROUTE_KEYWORDS,
|
||
KNOWLEDGE_ROUTE_KEYWORDS,
|
||
TRACKER_KEYWORD_GROUPS,
|
||
buildKeywordRegex,
|
||
hasKeywordFromList,
|
||
hasCanonicalKnowledgeTerm,
|
||
hasKnowledgeRouteKeyword,
|
||
extractKnowledgeEntityMatches,
|
||
};
|