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

在AIML中如何实现类似KUKI AI的用户重复词汇检测功能

聊天机器人实现类KUKI重复词汇检测的方案

1 文本预处理步骤

  • 先对用户输入做标准化:全角字符转半角、去除多余空格/换行/无意义特殊符号,避免格式问题干扰检测
  • 分词处理:中文场景用jieba分词,英文场景用NLTK分词工具,把连续文本拆为独立词汇单元,同时过滤掉“的、了、啊、哦”这类无实际语义的停用词,避免误判

2 核心检测规则

  • 连续重复词汇检测:遍历分词后的词汇列表,设置连续重复阈值(默认≥2次),如果相邻的多个词汇完全一致,直接判定为重复。适用于用户输入“我我我”“哈哈哈哈”这类连续重复的场景
  • 非连续高频词汇检测:统计所有非停用词的出现频次,设置频次阈值(默认≥3次),单个词汇累计出现次数达到阈值就判定为重复。适用于用户输入“今天吃饭今天逛街今天看电影”这类非连续重复的场景
  • 句式重复检测:长文本场景下可以新增n-gram匹配规则,判断是否有连续3-5个词的序列重复出现,覆盖用户重复发送同一句话的场景

3 简易代码实现(Python)

import jieba
from collections import Counter

# 自定义停用词库,可根据业务场景扩充
STOP_WORDS = {"的", "了", "啊", "哦", "嗯", "吧", "呀", "呢"}
# 连续重复触发阈值:连续出现2次相同词汇就触发检测
CONTINUOUS_REPEAT_THRESHOLD = 2
# 高频重复触发阈值:单个词汇累计出现3次就触发检测
FREQ_REPEAT_THRESHOLD = 3

def detect_repeat_words(user_input: str) -> tuple[bool, str]:
    # 步骤1:清洗输入文本
    cleaned_input = "".join([c for c in user_input.strip() if c.isalnum() or c.isalpha()])
    # 步骤2:分词并过滤停用词
    word_list = [word for word in jieba.lcut(cleaned_input) if word not in STOP_WORDS]
    # 步骤3:检测连续重复
    for i in range(len(word_list) - CONTINUOUS_REPEAT_THRESHOLD + 1):
        if len(set(word_list[i:i+CONTINUOUS_REPEAT_THRESHOLD])) == 1:
            return True, f"检测到重复词汇:{word_list[i]}"
    # 步骤4:检测非连续高频重复
    word_counter = Counter(word_list)
    for word, count in word_counter.items():
        if count >= FREQ_REPEAT_THRESHOLD:
            return True, f"检测到重复词汇:{word}"
    return False, "未检测到重复词汇"

4 交互响应配置

触发重复检测后,可以参考KUKI的交互风格配置对应回复,不需要过于生硬:

  • 轻度重复(重复2-3次):回复类似“怎么一直在说同一个词呀,换个话题呗”
  • 重度重复(重复≥4次):回复类似“别复读啦,再说一样的内容我可要不理你了哦”

内容的提问来源于stack exchange,提问作者Paulo Evan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:06:03