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

如何使用Python通过NLP技术提取提醒语句中的任务标题

问题解答

技术方向通用名称

这个功能属于信息提取(Information Extraction, IE) 领域的典型应用,具体落地时会用到「意图识别」+「命名实体识别(NER)」+「槽位填充(Slot Filling)」技术栈,是任务型对话语义解析模块的核心能力之一。

核心实现逻辑

  • 第一步:意图分类。先对用户输入的文本做分类,判定当前请求是否属于「创建提醒」的意图,过滤掉其他无关请求。
  • 第二步:槽位提取。针对「创建提醒」意图预设两类核心槽位:
    • 时间槽:提取触发提醒的时间实体,比如示例中的「明天下午6点」
    • 任务内容槽:提取用户要执行的核心动作内容,也就是所需的任务标题,比如示例中的「浇花」
  • 第三步:槽值规整。把提取到的时间转换为标准可存储的时间戳或日期格式,对任务内容做冗余词过滤(比如去掉「帮我」「记得」这类无意义的修饰前缀),输出结构化的提醒数据。

Python环境实现方案

完全可以实现,根据场景规模可以选择不同方案:

  • 轻量无训练成本方案:用规则+开源工具组合实现

    • 时间提取:用dateparser、cn2an等工具配合简单正则,可以覆盖90%以上的中文日常时间表达
    • 任务提取:先剔除指令前缀(如「提醒我」「帮我设置提醒」)和提取到的时间实体,剩余的核心内容就是任务标题,搭配jieba分词和词性标注过滤掉虚词,结果会更精准

    最简实现参考代码:

    import dateparser
    import re
    
    def extract_reminder(query: str):
        # 匹配并剔除指令前缀
        prefix_pattern = r"^(提醒我|帮我提醒|设置提醒)\s*"
        query_clean = re.sub(prefix_pattern, "", query)
        # 提取时间(演示用简化规则,实际可替换为更完善的时间提取工具)
        time_match = re.search(r"((明天|后天|大后天|下[周一二三四五六日])?\s*(上午|下午|晚上|早上)?\s*\d{1,2}[:点]\d{0,2})", query_clean)
        if time_match:
            time_str = time_match.group()
            remind_time = dateparser.parse(time_str, languages=["zh"])
            # 剔除时间后剩余内容为任务标题
            task_title = query_clean.replace(time_str, "").strip()
            return {
                "task_title": task_title,
                "remind_time": remind_time
            }
        return None
    
    # 功能测试
    print(extract_reminder("提醒我明天下午6点浇花"))
    # 输出示例:{'task_title': '浇花', 'remind_time': datetime.datetime(2024, 6, 15, 18, 0)}
    
  • 高精度场景方案:如果场景存在大量自定义表达,可以标注少量专属数据集,微调bert-base-chinese等预训练模型做联合意图分类和槽位填充,准确率可以达到商用级别。

内容的提问来源于stack exchange,提问作者Nahid Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:24:05