背景介绍
在现代办公场景中,会议是信息交流和决策制定的重要方式。然而,会议结束后,手动整理会议纪要往往耗时且容易遗漏关键信息。为提高效率,本文将介绍一个基于命令行的智能会议纪要生成器,它能够从用户输入的会议文本中自动提取任务描述、负责人和截止日期等关键信息,并以结构化的 JSON 格式输出。
本项目将使用 Python 编程语言,结合正则表达式(re库)进行信息提取,并将结果以 JSON 格式展示。适合初学者学习文本处理和信息提取的基础技术。
思路分析
- 输入处理
用户输入一段会议记录文本,例如语音转文字的会议内容或手写的会议纪要。 -
信息提取
使用正则表达式提取以下信息:- 会议主题(通过关键词如“讨论”、“会议”、“议题”等提取)
- 任务描述(如“设计宣传海报”、“联系媒体”)
- 负责人(如“张伟”、“李娜”)
- 截止日期(如“12月20日”、“12月25日”)
- 结构化输出
将提取的信息组织为 JSON 格式,便于后续处理和展示。 -
命令行交互
提供简单的命令行交互界面,用户可输入文本并查看结构化输出。
代码实现
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"
}
]
}
技术点解析
-
正则表达式提取关键信息
- 使用正则表达式匹配任务编号、任务描述、负责人和截止日期。
re.finditer()用于获取所有匹配项,支持多任务提取。
- 日期标准化处理
- 使用
datetime.strptime()尝试将中文日期格式(如“12月20日”)转换为标准格式(如“2025-12-20”),提升输出的可读性。
- 使用
- 结构化输出
- 将提取的信息组织为 JSON 格式,便于后续处理或集成到其他系统中。
- 命令行交互
- 使用
input()和print()构建简单的命令行交互界面,用户可输入文本并查看结构化结果。
- 使用
总结
本项目实现了一个基于命令行的智能会议纪要生成器,通过正则表达式提取会议中的关键信息,并以 JSON 格式输出。项目具备以下特点:
- 轻量级:无需依赖复杂框架,适合本地运行。
- 可扩展性强:可以进一步集成语音转文字、Markdown 输出等功能。
- 学习价值高:涵盖了正则表达式、文本处理、结构化数据输出等核心技术点。
通过本项目,开发者可以掌握如何从自然语言中提取结构化信息,并为后续开发更复杂的会议管理工具打下基础。