基于Python的智能会议纪要生成器开发实践



背景介绍

在现代办公场景中,会议是信息交流和决策制定的重要方式。然而,会议结束后,手动整理会议纪要往往耗时且容易遗漏关键信息。为提高效率,本文将介绍一个基于命令行的智能会议纪要生成器,它能够从用户输入的会议文本中自动提取任务描述、负责人和截止日期等关键信息,并以结构化的 JSON 格式输出。

本项目将使用 Python 编程语言,结合正则表达式(re库)进行信息提取,并将结果以 JSON 格式展示。适合初学者学习文本处理和信息提取的基础技术。


思路分析

  1. 输入处理
    用户输入一段会议记录文本,例如语音转文字的会议内容或手写的会议纪要。

  2. 信息提取
    使用正则表达式提取以下信息:

    • 会议主题(通过关键词如“讨论”、“会议”、“议题”等提取)
    • 任务描述(如“设计宣传海报”、“联系媒体”)
    • 负责人(如“张伟”、“李娜”)
    • 截止日期(如“12月20日”、“12月25日”)
  3. 结构化输出
    将提取的信息组织为 JSON 格式,便于后续处理和展示。

  4. 命令行交互
    提供简单的命令行交互界面,用户可输入文本并查看结构化输出。


代码实现

import re
import json
from datetime import datetime

def extract_meeting_minutes(text):
    """
    从会议文本中提取关键信息,生成结构化会议纪要
    :param text: 会议文本
    :return: 结构化会议纪要(字典格式)
    """
    # 1. 提取会议主题
    theme_pattern = r'讨论|会议|议题|内容|计划'
    theme_match = re.search(theme_pattern, text)
    if theme_match:
        theme_start = theme_match.start()
        theme = text[theme_start:theme_start + 20].strip()
    else:
        theme = "未识别会议主题"

    # 2. 提取任务信息
    task_pattern = r'(\d+)|(\d+\.))\s*(.*?)(由|负责)(.*?)(在|截止日期|于)(.*?)(日|号)'
    task_matches = re.finditer(task_pattern, text, re.DOTALL)

    tasks = []
    for match in task_matches:
        task_desc = match.group(3).strip()
        assignee = match.group(5).strip()
        deadline = match.group(7).strip()

        # 尝试标准化日期格式(如“12月20日”转为“2025-12-20”)
        try:
            deadline = datetime.strptime(deadline, "%m月%d日").strftime("%Y-%m-%d")
        except:
            deadline = deadline  # 保留原始格式

        tasks.append({
            "任务描述": task_desc,
            "负责人": assignee,
            "截止日期": deadline
        })

    # 3. 构建结构化会议纪要
    minutes = {
        "会议主题": theme,
        "决议事项": tasks
    }

    return minutes

def main():
    print("欢迎使用智能会议纪要生成器!")
    print("请输入会议内容(输入'exit'退出程序):")
    while True:
        user_input = input(">> ")
        if user_input.lower() == 'exit':
            break
        minutes = extract_meeting_minutes(user_input)
        print("\n生成的会议纪要:")
        print(json.dumps(minutes, ensure_ascii=False, indent=2))

if __name__ == "__main__":
    main()

示例运行

输入:

今天的会议主要讨论了Q4的市场推广计划。决议事项包括:1)由张伟负责设计宣传海报,截止日期为12月20日;2)李娜负责联系媒体,截止日期为12月25日。另外,王强需要在12月18日前完成预算报告。

输出:

{
  "会议主题": "讨论了Q4的市场推广计划",
  "决议事项": [
    {
      "任务描述": "设计宣传海报",
      "负责人": "张伟",
      "截止日期": "2025-12-20"
    },
    {
      "任务描述": "联系媒体",
      "负责人": "李娜",
      "截止日期": "2025-12-25"
    },
    {
      "任务描述": "完成预算报告",
      "负责人": "王强",
      "截止日期": "2025-12-18"
    }
  ]
}

技术点解析

  1. 正则表达式提取关键信息

    • 使用正则表达式匹配任务编号、任务描述、负责人和截止日期。
    • re.finditer() 用于获取所有匹配项,支持多任务提取。
  2. 日期标准化处理
    • 使用 datetime.strptime() 尝试将中文日期格式(如“12月20日”)转换为标准格式(如“2025-12-20”),提升输出的可读性。
  3. 结构化输出
    • 将提取的信息组织为 JSON 格式,便于后续处理或集成到其他系统中。
  4. 命令行交互
    • 使用 input()print() 构建简单的命令行交互界面,用户可输入文本并查看结构化结果。

总结

本项目实现了一个基于命令行的智能会议纪要生成器,通过正则表达式提取会议中的关键信息,并以 JSON 格式输出。项目具备以下特点:

  • 轻量级:无需依赖复杂框架,适合本地运行。
  • 可扩展性强:可以进一步集成语音转文字、Markdown 输出等功能。
  • 学习价值高:涵盖了正则表达式、文本处理、结构化数据输出等核心技术点。

通过本项目,开发者可以掌握如何从自然语言中提取结构化信息,并为后续开发更复杂的会议管理工具打下基础。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注