You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从分类关键词列表排除特定关键词?现有实现未达预期

解决分类关键词排除组合词的问题

你当前的代码逻辑存在偏差——它试图修改categories["Voće"]的关键词列表,但你的核心需求是保留"banana"作为关键词,同时排除"krem banana"、"choco banana"这类带修饰词的产品被归类到Voće分类,而非删除基础关键词。

正确实现思路

需要调整的是产品分类的匹配逻辑,而非修改原始关键词列表。流程应为:

  1. 先检查产品是否匹配目标分类的关键词
  2. 再校验产品是否不属于需要排除的组合词范围

代码实现

// 保留原始分类关键词列表不变
const categories = {
    "Meso": ["snicla", "šnicla", "krmenadla", "pileca prsa", "belo meso", "pileća prsa", "krilca"],
    "Čokolada": ["čokolada", "cokolada"],
    "Majonez": ["majonez"],
    "Kečap": ["kečap", "kecap"],
    "Senf": ["senf"],
    "Paradajz": ["paradajz"],
    "Kobasice": ["kobasica"],
    "Posebne kobasice / Salame": ["posebna kobasica", "pileca posebna", "salama"],
    "Pileća prsa": ["pileća prsa", "pileca prsa"],
    "Pašteta": ["pašteta", "pasteta"],
    "Ćevapi": ["ćevapi", "cevapi", "ćevapčići"],
    "Šnicla": ["šnicla"],
    "Krilca": ["krilca"],
    "Voće": ["banana", "banane", "jabuka", "jabuke", "mandarine"],
    "Sokovi": ["borovnica", "borovnice", "jabuka", "jabuke", "narandža", "pomorandže", "breskva", "breskve"],
    "Kuhinjski aparati": ["Ketler za vodu", "Seckalica MC 400"],
    "Za domaćice": ["daska za peglanje", "bokal", "čistač", "cistac"],
    "Vileda": ["vileda"],
    "Filtriranje vode": ["Akvafor", "Akvaphor"],
    "Alati": ["metla", "auto set"],
    "Maziva": ["majonez", "kečap", "kecap", "senf", "sos"]
};

// 单独维护各分类的排除规则,便于管理
const exclusionRules = {
    "Voće": ["krem banana", "choco banana"]
};

// 产品分类匹配函数
function categorizeProduct(productName) {
    const lowerProduct = productName.toLowerCase();
    
    for (const [category, keywords] of Object.entries(categories)) {
        // 检查产品是否匹配当前分类的关键词
        const matchesKeyword = keywords.some(keyword => 
            lowerProduct.includes(keyword.toLowerCase())
        );
        if (!matchesKeyword) continue;
        
        // 校验是否符合排除规则
        const exclusions = exclusionRules[category] || [];
        const notExcluded = !exclusions.some(exclusion => 
            lowerProduct.includes(exclusion.toLowerCase())
        );
        
        if (notExcluded) {
            return category;
        }
    }
    return "Nije klasificirano"; // 返回未分类标识
}

// 测试用例
console.log(categorizeProduct("banana")); // 输出: Voće
console.log(categorizeProduct("krem banana")); // 输出: Nije klasificirano
console.log(categorizeProduct("jabuka")); // 输出: Voće
console.log(categorizeProduct("choco banana")); // 输出: Nije klasificirano

补充:若需从关键词列表中删除特定组合词

如果你的需求是清理关键词列表本身(比如列表中存在"krem banana"这类无效关键词),可使用以下代码:

function filterKeywords(category, exclusions) {
    return categories[category].filter(keyword => {
        const lowerKeyword = keyword.toLowerCase();
        return !exclusions.some(exclusion => 
            lowerKeyword.includes(exclusion.toLowerCase())
        );
    });
}

// 模拟关键词列表中存在无效项的场景
categories["Voće"].push("krem banana");
// 执行过滤
categories["Voće"] = filterKeywords("Voće", ["krem banana"]);
console.log(categories["Voće"]); // 输出: ["banana", "banane", "jabuka", "jabuke", "mandarine"]

内容的提问来源于stack exchange,提问作者No Tools No Craft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:14:55