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

如何为Toxicity分类器添加自定义词汇?附当前使用代码

当然可以扩展你的Toxicity分类器的词汇覆盖!不过要先说明:这个TensorFlow.js的预训练Toxicity模型本身没法直接把新词汇塞进模型权重里,但我们有两种非常实用的方式来实现你的需求——从简单快速的规则扩展,到更精准的模型微调,你可以根据自己的场景选择:

方法一:添加自定义词汇规则(快速易实现)

这是最适合快速迭代的方案,不需要修改模型本身,只需要在模型输出结果的基础上,加入自定义的词汇匹配逻辑,把你想要覆盖的有毒词汇加进去。

具体实现步骤:

  1. 先定义你的自定义有毒词汇列表,想加多少都可以:
// 自定义有毒词汇,可随时新增/修改
const customToxicWords = ['loser', 'idiot', 'pathetic', 'dummy'];
  1. 写一个简单的检查函数,判断句子里是否包含这些词汇:
function hasCustomToxicWords(sentence) {
  // 转小写避免大小写问题
  const lowerSentence = sentence.toLowerCase();
  // 检查是否有自定义词汇匹配
  return customToxicWords.some(word => lowerSentence.includes(word));
}
  1. 把这个逻辑和你原有的模型分类代码结合起来,你可以选择两种呈现方式:
  • 方式A:单独输出自定义检查结果,和模型结果分开
  • 方式B:把自定义检查作为一个新的标签,融入到原有的预测结果数组中

下面是修改后的完整代码示例:

// 最小预测置信度
const threshold = 0.9;
// 自定义有毒词汇列表
const customToxicWords = ['loser', 'idiot', 'pathetic', 'dummy'];

function hasCustomToxicWords(sentence) {
  const lowerSentence = sentence.toLowerCase();
  return customToxicWords.some(word => lowerSentence.includes(word));
}

// 加载模型
toxicity.load(threshold).then(model => {
  const sentences = ['you suck', 'you are a total loser', 'nice job!'];
  
  model.classify(sentences).then(predictions => {
    // 方式B:添加自定义标签到预测结果中
    const customPrediction = {
      label: 'custom_toxic',
      results: sentences.map(sentence => ({
        probabilities: hasCustomToxicWords(sentence) ? [0.1, 0.9] : [0.9, 0.1],
        match: hasCustomToxicWords(sentence)
      }))
    };
    predictions.push(customPrediction);
    
    // 输出合并后的结果
    console.log('带自定义词汇检查的完整预测:', predictions);
  });
});

这种方法的优缺点:

  • ✅ 优点:零机器学习基础就能实现,快速上线,词汇修改灵活
  • ❌ 缺点:只能做简单的字符串匹配,没法识别词汇变体(比如"l0ser")或上下文相关的有毒表达
方法二:微调预训练模型(适合精准适配场景)

如果你需要识别更复杂的有毒表达(比如拼写变体、语境化的辱骂),或者想让模型真正"学习"新词汇的语义,就需要微调预训练模型。这个方案需要一点机器学习知识和标注数据:

大致步骤:

  1. 准备标注数据集:收集包含你目标词汇的句子,标注它们是否属于有毒类别(比如insult、toxic等)
  2. 加载底层预训练模型:Toxicity模型基于轻量版BERT,你可以直接加载这个基础模型,而不是用封装好的toxicity.load
  3. 添加分类头并微调:在基础模型顶部加上你的分类层,用自定义数据集训练模型,让它学习新词汇的特征
  4. 部署微调后的模型:把训练好的模型导出,替换原来的toxicity.load调用,用自己的模型做分类

这个方案的优势是能处理更复杂的场景,但成本更高,适合需要长期优化的项目。

内容的提问来源于stack exchange,提问作者6563cc10d2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:25:03