场景方案·会议纪要
本文档主要以长文本会议纪要为例,支持客户基于文心大模型快速构建业务实践,同样方法也适用于其他长文本处理场景。
文心大模型-长文本处理全景图如下:
一、传统会议纪要现状:
在大模型出现之前,通过NLP技术做会议纪要主要依赖于传统的自然语言处理技术和机器学习方法。以下是一个典型的流程:
1.1 语音转文字(ASR)
首先,需要将会议的音频文件转换为文本。这一步通常使用自动语音识别(ASR)技术。
常见的ASR工具包括Google Speech-to-Text、IBM Watson Speech to Text、Microsoft Azure Speech to Text等。
1.2 文本分段
将文本按逻辑或时间顺序分段,以便于进一步处理。这可以通过识别特定的时间标记、话题转变或发言者切换来实现。
1.3 文本预处理
转换后的文本通常包含很多噪音,需要进行清洗和预处理:
分词 | 去除停用词 | 词形还原和词干提取 | 标点符号和特殊字符清理 |
---|---|---|---|
将文本切分成单独的词或短语。 | 如“的”、“了”等无实际意义的词。 | 将不同形式的词还原为基本形式。 | 去除或处理标点符号和其他特殊字符。 |
1.4 关键词提取
从每段文本中提取关键词,帮助理解段落的核心内容。常用的方法包括:
- TF-IDF(Term Frequency-Inverse Document Frequency)
- RAKE(Rapid Automatic Keyword Extraction)
- TextRank(基于PageRank的算法)
1.5 文本摘要
文本摘要是会议纪要的核心部分,常用的方法有:
从原文中提取重要的句子或段落,组合成摘要。这可以通过评分系统或规则来实现,例如基于句子位置、句子长度、关键词覆盖等。 | 生成新的句子来概括文本内容。传统的方法包括基于统计模型的文本生成,如n-gram模型、HMM(隐马尔可夫模型)等。 |
1.6 命名实体识别(NER)
识别和提取出文本中的实体,如人名、地名、组织名等,以增强摘要的具体性和可读性。
1.7 结构化输出
将摘要结果以结构化的形式输出,如条目列表、图表等,便于阅读和进一步处理。
1.8 传统方法的局限性:
按照传统的流程进行会议纪要,会有以下局限性:
语义理解不足 | 生成质量有限 | 需要大量手工调试 | 适应性差 |
---|---|---|---|
传统NLP技术在理解上下文语义和复杂语言结构方面存在局限。它们往往依赖于规则和统计模型,难以准确捕捉语言中的深层含义和细微差别。 | 传统的文本摘要技术,如抽取式摘要,通常只是简单地提取原文中的句子,缺乏连贯性和自然性。生成式摘要方法也受到模型能力的限制,生成的文本可能不够流畅和准确。 | 传统NLP技术通常需要大量手工调试和参数调整。例如,关键词提取、句子打分、主题建模等步骤需要手工设定阈值和规则,耗时费力,且效果不一定理想。 | 传统NLP模型对领域和上下文的适应性较差。每个新领域或特殊的会议主题都可能需要重新训练模型或调整参数,增加了使用的复杂性和成本。 |
二、基于大模型的长文会议纪要:
大模型技术出现后生成会议纪要的过程得到了显著简化和增强。这些模型可以直接处理复杂的语言任务,生成更加准确和连贯的会议纪要。大模型具备强大的语义理解和上下文处理能力,能够更好地捕捉和理解会议内容的深层含义和细微差别。这使得生成的会议纪要更加准确和连贯。
生成方面 | 泛化性方面 | 实体识别 |
---|---|---|
生成的自然语言文本表现出色,生成的摘要不仅准确,还具备良好的连贯性和可读性,显著提升了会议纪要的质量。 | 大模型经过预训练,具有广泛的领域适应性,能够处理不同类型和主题的会议内容,无需频繁调整和重新训练。 | 大模型在命名实体识别方面表现出色,能够准确识别会议内容中的具体的实体信息,包括待办事项,代办人等,增强了会议纪要的具体性和有用性。 |
基于大模型的的手段进行会议纪要主要采用三种方式:
2.1 Stuff
它将所有输入放在一起("stuff" them together),并通过一次调用语言模型(LLM)来处理它们。尽管它可以在一些特定情况下处理长文本,但当文本过长时,可能会超出模型的上下文窗口大小,导致无法处理所有内容。
此方法主要是通过提示词指令对文档进行处理,利用大模型指令follow能力,通过单次调用直接完成会议纪要的生成,该方法受限于模型上下文窗口长度,尽管现在模型窗口长度不断提升,但是针对于较长的会议录音文本依旧可能超过其窗口长度,虽然模型设计可以处理长文本,但其性能可能在文本变长时下降。过长的输入可能导致模型无法有效捕捉关键信息,增加噪音,影响结果的准确性。
2.2 Refine
此类方法也是针对长文档的处理,这种方式会先总结第一个 document,然后再将第一个 document 总结出的内容和第二个 document 一起发给LLM模型在进行总结,以此类推。这种方式的好处就是在总结后一个 document 的时候,会带着前一个的 document 进行总结,给需要总结的 document 添加了上下文,增加了总结内容的连贯性。但是由于此类方法是串行执行的方式,每一步处理都需要等待前一步处理的结果,当文档过长的时候连续的穿行操作会造成极高的延时,用户体验不佳。
2.3 Map Reduce
专门用于处理长文本。其工作原理是将长文本分割成较小的部分,每个部分单独处理(Map阶段),然后将所有部分的结果合并成最终结果(Reduce阶段)。
这种方法允许在处理长文本时保持高效和准确。其优点是充分利用了map-reduce的并行输出能力,通过将长文本分割成更小的段落,每个段落独立处理,可以有效地克服模型的输入长度限制。这使得它能够处理超出单个模型输入限制的大文档。但一定程度上由于是分段处理,对于前文内容可能会造成一定程度的不连贯,综合考虑延时性能等因素本方案采用map-reduce的方式进行文本处理。
本方案整体步骤如下图:
三、具体模块实现
本文重点关注大模型部分方案,基于会议录音的文本输出完成会议纪要。当前会议纪要主要输出以下基本分关键信息:会议参与人,会议讨论内容,关键性决策,待办事项以及负责人等几个模块。
3.1 文本切片&结构化
一般录音文本由说话人,时间以及发话内容几个关键部分组,其中说话人字段是待办生成时的关键信息需要指定待办的执行人,时间信息主要用于确认关键决策的时间用于录音回溯等,整体的切片逻辑如下:
- 当前方案中切片长度总体在2000字符左右。
此长度的确定与后续清洗切片数据的提示词以及后续模型的上下文窗口有关,在后续清洗步骤中要保证提示词模板+会议切片长度小于下游模型的输入长度,由于下游清洗任务比较重要,且需要对会议中出现的逻辑性,可读性不强的问题进行一定程度的理解和修正,因此采用了ERNIE 4.0模型处理,您可以先到预置服务中开通付费。
ERNIE 4.0
百度自研的旗舰级超大规模大语言模型,相较ERNIE 3.5实现了模型能力全面升级,广泛适用于各领域复杂任务场景;支持自动对接百度搜索插件,保障问答信息时效。
- 对于发话人的说话内容不能切断,如果超过2000字符限制,则当前切片放弃最后一段发话,将最后一段发话纳入下一个切片。
说话人当前session的发话不能切断,主要是为了最大限度的保证上下文的连贯性
- 极端情况下,某发话人输出过长的处理方法:
在asr侧将发话人的单次发话进行切分并且记录准确时间,每个发话人一次侧发话长度建议在100字-150字左右 | 将当前说话人的发话也按照上述策略切分,超长部分进入下一个切片,保障每一个切片满足2000字字数要求 |
点击展开会议录音文本原文举例(此处只列举了局部的文本)
说话人1 01:01
啊,大家都到齐了,咱们开始今天的会议吧。
说话人2 01:05
好,那先说说项目进展吧。
说话人3 01:10
嗯,数据收集这块...进度有点慢啊,有些问题。
说话人4 01:15
具体是什么问题呢?
说话人3 01:20
呃,数据来源不太稳定,有时候...会丢失一些数据。
说话人2 01:25
这个问题挺严重的,我们需要找到稳定的数据源。
说话人1 01:30
对啊,数据源的问题要赶紧解决,不然影响后面的工作。
说话人4 01:35
要不我去联系几个备选的数据提供商?
说话人3 01:40
好主意,那就麻烦你了。
说话人2 01:45
嗯,大家也帮忙留意一下,看看有没有其他合适的资源。
说话人1 01:50
好的,那我们先继续讨论其他的部分。
说话人4 01:55
模型优化这块有什么进展吗?
说话人2 02:00
还行吧,但是数据质量不好,优化效果也一般。
说话人3 02:05
是啊,数据质量真的是太重要了。
说话人1 02:10
我们需要在数据源稳定下来之后,再集中精力优化模型。
说话人4 02:15
对,先解决数据问题,再谈优化。
说话人2 02:20
那我们数据源的问题有个初步解决方案了吗?
说话人3 02:25
目前还没有,不过我觉得可以试试联系之前合作过的供应商。
说话人4 02:30
行,那我来负责联系,你们其他人再看看有没有其他的可能性。
说话人1 02:35
好的,那我们就这么定了。
将原始文本切分成id,speaker,time,content等jsonl的形式,其中:
一个独立的编号,主要是为了做一些后续的扩展性开发或工程化处理,比如会议原文的定位等 | 发话人 | 原文中的发话时间 | 发话内容 |
点击展开文本进行切分后的结果
[
{"id": 1, "speaker": "说话人1", "time": "01:01", "content": "啊,大家都到齐了,咱们开始今天的会议吧。"},
{"id": 2, "speaker": "说话人2", "time": "01:05", "content": "好,那先说说项目进展吧。"},
{"id": 3, "speaker": "说话人3", "time": "01:10", "content": "嗯,数据收集这块...进度有点慢啊,有些问题。"},
{"id": 4, "speaker": "说话人4", "time": "01:15", "content": "具体是什么问题呢?"},
{"id": 5, "speaker": "说话人3", "time": "01:20", "content": "呃,数据来源不太稳定,有时候...会丢失一些数据。"},
{"id": 6, "speaker": "说话人2", "time": "01:25", "content": "这个问题挺严重的,我们需要找到稳定的数据源。"},
{"id": 7, "speaker": "说话人1", "time": "01:30", "content": "对啊,数据源的问题要赶紧解决,不然影响后面的工作。"},
{"id": 8, "speaker": "说话人4", "time": "01:35", "content": "要不我去联系几个备选的数据提供商?"},
{"id": 9, "speaker": "说话人3", "time": "01:40", "content": "好主意,那就麻烦你了。"},
{"id": 10, "speaker": "说话人2", "time": "01:45", "content": "嗯,大家也帮忙留意一下,看看有没有其他合适的资源。"},
{"id": 11, "speaker": "说话人1", "time": "01:50", "content": "好的,那我们先继续讨论其他的部分。"},
{"id": 12, "speaker": "说话人4", "time": "01:55", "content": "模型优化这块有什么进展吗?"},
{"id": 13, "speaker": "说话人2", "time": "02:00", "content": "还行吧,但是数据质量不好,优化效果也一般。"},
{"id": 14, "speaker": "说话人3", "time": "02:05", "content": "是啊,数据质量真的是太重要了。"},
{"id": 15, "speaker": "说话人1", "time": "02:10", "content": "我们需要在数据源稳定下来之后,再集中精力优化模型。"},
{"id": 16, "speaker": "说话人4", "time": "02:15", "content": "对,先解决数据问题,再谈优化。"},
{"id": 17, "speaker": "说话人2", "time": "02:20", "content": "那我们数据源的问题有个初步解决方案了吗?"},
{"id": 18, "speaker": "说话人3", "time": "02:25", "content": "目前还没有,不过我觉得可以试试联系之前合作过的供应商。"},
{"id": 19, "speaker": "说话人4", "time": "02:30", "content": "行,那我来负责联系,你们其他人再看看有没有其他的可能性。"},
{"id": 20, "speaker": "说话人1", "time": "02:35", "content": "好的,那我们就这么定了。"}
]
点击展开部分处理代码
def split_entry(entry, max_chars, next_id):
content = entry['content']
chunks = []
start = 0
while start < len(content):
chunk = content[start:start + max_chars]
if len(chunk) == max_chars:
# Ensure we do not split in the middle of a word
end = chunk.rfind(' ')
if end != -1:
chunk = content[start:start + end]
start += end + 1
else:
start += max_chars
else:
start += max_chars
new_entry = entry.copy()
new_entry['id'] = next_id
new_entry['content'] = chunk
chunks.append(new_entry)
next_id += 1
return chunks, next_id
def split_entries(entries, max_chars=2000):
batches = []
current_batch = []
current_length = 2 # Start with the length of []
next_id = entries[0]['id']
for entry in entries:
entry_str = json.dumps(entry, ensure_ascii=False)
if len(entry_str) > max_chars:
split_chunks, next_id = split_entry(entry, max_chars, next_id)
for chunk in split_chunks:
chunk_str = json.dumps(chunk, ensure_ascii=False)
chunk_length = len(chunk_str) + 2 # +2 for the comma and newline
if current_length + chunk_length > max_chars:
if current_batch: # Ensure we don't add empty batches
batches.append(current_batch)
current_batch = [chunk]
current_length = chunk_length + 2 # Reset length with new array and initial entry
else:
current_batch.append(chunk)
current_length += chunk_length
else:
entry_length = len(entry_str) + 2 # +2 for the comma and newline
if current_length + entry_length > max_chars:
if current_batch: # Ensure we don't add empty batches
batches.append(current_batch)
current_batch = [entry]
current_length = entry_length + 2 # Reset length with new array and initial entry
next_id += 1
else:
current_batch.append(entry)
current_length += entry_length
next_id += 1
if current_batch:
batches.append(current_batch)
return batches
点击展开完整文本切分成独立的片段示例
第一组:
[
{"id": 1, "speaker": "说话人1", "time": "01:01", "content": "啊,大家都到齐了,咱们开始今天的会议吧。"},
{"id": 2, "speaker": "说话人2", "time": "01:05", "content": "好,那先说说项目进展吧。"},
{"id": 3, "speaker": "说话人3", "time": "01:10", "content": "嗯,数据收集这块...进度有点慢啊,有些问题。"},
{"id": 4, "speaker": "说话人4", "time": "01:15", "content": "具体是什么问题呢?"},
{"id": 5, "speaker": "说话人3", "time": "01:20", "content": "呃,数据来源不太稳定,有时候...会丢失一些数据。"},
{"id": 6, "speaker": "说话人2", "time": "01:25", "content": "这个问题挺严重的,我们需要找到稳定的数据源。"},
{"id": 7, "speaker": "说话人1", "time": "01:30", "content": "对啊,数据源的问题要赶紧解决,不然影响后面的工作。"},
{"id": 8, "speaker": "说话人4", "time": "01:35", "content": "要不我去联系几个备选的数据提供商?"},
{"id": 9, "speaker": "说话人3", "time": "01:40", "content": "好主意,那就麻烦你了。"},
{"id": 10, "speaker": "说话人2", "time": "01:45", "content": "嗯,大家也帮忙留意一下,看看有没有其他合适的资源。"},
{"id": 11, "speaker": "说话人1", "time": "01:50", "content": "好的,那我们先继续讨论其他的部分。"},
{"id": 12, "speaker": "说话人4", "time": "01:55", "content": "模型优化这块有什么进展吗?"},
{"id": 13, "speaker": "说话人2", "time": "02:00", "content": "还行吧,但是数据质量不好,优化效果也一般。"},
{"id": 14, "speaker": "说话人3", "time": "02:05", "content": "是啊,数据质量真的是太重要了。"},
{"id": 15, "speaker": "说话人1", "time": "02:10", "content": "我们需要在数据源稳定下来之后,再集中精力优化模型。"},
{"id": 16, "speaker": "说话人4", "time": "02:15", "content": "对,先解决数据问题,再谈优化。"},
{"id": 17, "speaker": "说话人2", "time": "02:20", "content": "那我们数据源的问题有个初步解决方案了吗?"},
{"id": 18, "speaker": "说话人3", "time": "02:25", "content": "目前还没有,不过我觉得可以试试联系之前合作过的供应商。"},
{"id": 19, "speaker": "说话人4", "time": "02:30", "content": "行,那我来负责联系,你们其他人再看看有没有其他的可能性。"},
{"id": 20, "speaker": "说话人1", "time": "02:35", "content": "好的,那我们就这么定了。"}
]
第二组:
[
{"id": 21, "speaker": "说话人1", "time": "02:40", "content": "上次提到的新功能,大家都看过了吗?"},
{"id": 22, "speaker": "说话人2", "time": "02:45", "content": "看过了,但是有些地方不太明白。"},
{"id": 23, "speaker": "说话人3", "time": "02:50", "content": "对,有几个逻辑部分有点复杂,需要详细讨论一下。"},
{"id": 24, "speaker": "说话人4", "time": "02:55", "content": "那我们现在就来细化一下吧,具体有哪些不明白的地方?"},
{"id": 25, "speaker": "说话人2", "time": "03:00", "content": "比如这个数据处理流程,感觉有点绕。"},
{"id": 26, "speaker": "说话人3", "time": "03:05", "content": "对,还有这个模型训练的部分,有些参数的设置不是很清楚。"},
{"id": 27, "speaker": "说话人1", "time": "03:10", "content": "嗯,那我们先把流程梳理一下,从头到尾过一遍。"},
{"id": 28, "speaker": "说话人4", "time": "03:15", "content": "好,那我先来讲一下数据处理这块。"},
{"id": 29, "speaker": "说话人2", "time": "03:20", "content": "嗯,你说。"},
{"id": 30, "speaker": "说话人4", "time": "03:25", "content": "首先,我们需要把原始数据进行预处理,这一步非常关键。"},
{"id": 31, "speaker": "说话人3", "time": "03:30", "content": "预处理具体包括哪些内容?"},
{"id": 32, "speaker": "说话人4", "time": "03:35", "content": "主要是数据清洗、去重,还有一些格式的统一。"},
{"id": 33, "speaker": "说话人1", "time": "03:40", "content": "明白了,接下来呢?"},
{"id": 34, "speaker": "说话人4", "time": "03:45", "content": "然后就是数据标注,这一步也很重要。"},
{"id": 35, "speaker": "说话人2", "time": "03:50", "content": "哦,标注的话,我们需要多少人力来完成?"},
{"id": 36, "speaker": "说话人3", "time": "03:55", "content": "大概需要5到6个人,按目前的数据量来估算。"},
{"id": 37, "speaker": "说话人1", "time": "04:00", "content": "好,那我们安排一下人手。"},
{"id": 38, "speaker": "说话人4", "time": "04:05", "content": "标注完之后,数据就可以进入模型训练的阶段了。"},
{"id": 39, "speaker": "说话人2", "time": "04:10", "content": "嗯,这一步我们需要重点关注。"},
{"id": 40, "speaker": "说话人3", "time": "04:15", "content": "对,模型训练是关键,参数调优也很重要。"}
]
第三组:
[
{"id": 41, "speaker": "说话人1", "time": "04:20", "content": "哎,说到模型训练,上次那个问题解决了吗?"},
{"id": 42, "speaker": "说话人2", "time": "04:25", "content": "还没完全解决,主要是训练时间太长了。"},
{"id": 43, "speaker": "说话人3", "time": "04:30", "content": "对啊,训练效率太低了,我们需要优化算法。"},
{"id": 44, "speaker": "说话人4", "time": "04:35", "content": "那我们要不要试试其他的优化方法?"},
{"id": 45, "speaker": "说话人1", "time": "04:40", "content": "嗯,大家有什么建议吗?"},
{"id": 46, "speaker": "说话人2", "time": "04:45", "content": "我觉得可以试试分布式训练,这样可以提高效率。"},
{"id": 47, "speaker": "说话人3", "time": "04:50", "content": "对,分布式训练是个好办法,不过实现起来有点复杂。"},
{"id": 48, "speaker": "说话人4", "time": "04:55", "content": "是啊,我们需要做些前期准备工作。"},
{"id": 49, "speaker": "说话人1", "time": "05:00", "content": "那我们先列个计划吧,把需要做的工作分配一下。"},
{"id": 50, "speaker": "说话人2", "time": "05:05", "content": "行,我来负责算法优化这块。"},
{"id": 51, "speaker": "说话人3", "time": "05:10", "content": "那我来负责分布式训练的搭建。"},
{"id": 52, "speaker": "说话人4", "time": "05:15", "content": "好,那我来负责数据的处理和准备。"},
{"id": 53, "speaker": "说话人1", "time": "05:20", "content": "好的,那大家各自分工,尽快推进吧。"},
{"id": 54, "speaker": "说话人2", "time": "05:25", "content": "嗯,大家加油。"},
{"id": 55, "speaker": "说话人3", "time": "05:30", "content": "加油。"},
{"id": 56, "speaker": "说话人4", "time": "05:35", "content": "那接下来我们再讨论一下具体的实施步骤。"},
{"id": 57, "speaker": "说话人1", "time": "05:40", "content": "对,我们需要一个详细的实施方案。"},
{"id": 58, "speaker": "说话人2", "time": "05:45", "content": "那我们先来梳理一下流程吧。"},
{"id": 59, "speaker": "说话人3", "time": "05:50", "content": "好,我觉得第一步是先准备好硬件资源。"},
{"id": 60, "speaker": "说话人4", "time": "05:55", "content": "对,硬件资源准备好了之后,才能进行下一步。"}
]
第四组:
[
{"id": 61, "speaker": "说话人1", "time": "06:00", "content": "大家好,接着上次的工作,咱们继续讨论。"},
{"id": 62, "speaker": "说话人2", "time": "06:05", "content": "嗯,上次分配的任务大家都完成了吗?"},
{"id": 63, "speaker": "说话人3", "time": "06:10", "content": "我这边分布式训练的搭建还在进行中,有些问题。"},
{"id": 64, "speaker": "说话人4", "time": "06:15", "content": "数据处理这块已经完成了,随时可以开始。"},
{"id": 65, "speaker": "说话人1", "time": "06:20", "content": "好,那我们一起看看分布式训练的问题吧。"},
{"id": 66, "speaker": "说话人2", "time": "06:25", "content": "嗯,具体是什么问题呢?"},
{"id": 67, "speaker": "说话人3", "time": "06:30", "content": "主要是节点之间的通信有点问题,效率不高。"},
{"id": 68, "speaker": "说话人4", "time": "06:35", "content": "这个问题可以试试优化一下网络配置。"},
{"id": 69, "speaker": "说话人1", "time": "06:40", "content": "对,网络配置很重要。"},
{"id": 70, "speaker": "说话人2", "time": "06:45", "content": "好,那我们先优化网络配置。"},
{"id": 71, "speaker": "说话人3", "time": "06:50", "content": "行,我来负责这个部分。"},
{"id": 72, "speaker": "说话人4", "time": "06:55", "content": "我来协助你。"},
{"id": 73, "speaker": "说话人1", "time": "07:00", "content": "那我们其他人先继续做准备工作。"},
{"id": 74, "speaker": "说话人2", "time": "07:05", "content": "好的,大家加油。"},
{"id": 75, "speaker": "说话人3", "time": "07:10", "content": "嗯,加油。"},
{"id": 76, "speaker": "说话人4", "time": "07:15", "content": "那接下来我们再讨论一下具体的优化方案。"},
{"id": 77, "speaker": "说话人1", "time": "07:20", "content": "好,优化方案必须详细,不能疏漏。"},
{"id": 78, "speaker": "说话人2", "time": "07:25", "content": "对,特别是节点之间的通信,需要重点关注。"},
{"id": 79, "speaker": "说话人3", "time": "07:30", "content": "那我们分步骤来,一步一步解决问题。"},
{"id": 80, "speaker": "说话人4", "time": "07:35", "content": "好,那大家准备一下,我们接下来详细讨论。"}
]
第五组:
[
{"id": 81, "speaker": "说话人1", "time": "07:40", "content": "大家好,这次会议主要是总结一下上周的工作进展。"},
{"id": 82, "speaker": "说话人2", "time": "07:45", "content": "好,那我先说吧。上周的数据收集基本完成了。"},
{"id": 83, "speaker": "说话人3", "time": "07:50", "content": "不错,我这边的分析结果也出来了。"},
{"id": 84, "speaker": "说话人4", "time": "07:55", "content": "我这边的模型优化也有了一些进展。"},
{"id": 85, "speaker": "说话人1", "time": "08:00", "content": "太好了,大家都辛苦了。"},
{"id": 86, "speaker": "说话人2", "time": "08:05", "content": "嗯,那接下来我们需要把这些工作成果整合一下。"},
{"id": 87, "speaker": "说话人3", "time": "08:10", "content": "对,整合之后再进行下一步的优化。"},
{"id": 88, "speaker": "说话人4", "time": "08:15", "content": "那我们定个时间再开个会,讨论一下整合的结果吧。"},
{"id": 89, "speaker": "说话人1", "time": "08:20", "content": "好,那就定在周五下午。"},
{"id": 90, "speaker": "说话人2", "time": "08:25", "content": "行,周五下午见。"},
{"id": 91, "speaker": "说话人3", "time": "08:30", "content": "好,大家加油。"},
{"id": 92, "speaker": "说话人4", "time": "08:35", "content": "嗯,加油。"},
{"id": 93, "speaker": "说话人1", "time": "08:40", "content": "好的,那今天的会议就到这里。"},
{"id": 94, "speaker": "说话人2", "time": "08:45", "content": "再见。"},
{"id": 95, "speaker": "说话人3", "time": "08:50", "content": "再见。"},
{"id": 96, "speaker": "说话人4", "time": "08:55", "content": "拜拜。"},
{"id": 97, "speaker": "说话人1", "time": "09:00", "content": "拜拜。"},
{"id": 98, "speaker": "说话人2", "time": "09:05", "content": "好的,拜拜。"},
{"id": 99, "speaker": "说话人3", "time": "09:10", "content": "再见。"},
{"id": 100, "speaker": "说话人4", "time": "09:15", "content": "再见。"}
]
3.2 文本清洗
在原始录音的过程中可能会出现过度口语化,录音不清晰等问题,因此需要通过模型在保持原文意图不变的情况下将原文变得更加具有可读性与逻辑性。
点击展开整体提示词
# 背景信息
你是一个资深编辑,需要基于原始会议录音,优化会议录音文稿。目标是在【保持真实度】的同时,提高其【可读性】与【逻辑性】。有时候这些录音会很长,因此你必须确保理解和输出全部的内容,而不是仅仅是开头和结尾,否则你将会受到严重惩罚。
# 基本原则
1. 详细还原: 请求在转录和优化过程中,尽可能详细地还原对话内容,包括重要的描述性细节和上下文信息。
2. 精确对应: 要求对话中的每一句话都与原始录音中的对应内容严格匹配,保证信息的完整性和准确性。
3. 细节补充: 允许在转录过程中补充那些可能在原始录音中不明显但对理解上下文和对话内容很重要的细节,但请不要过多废话。
4. 避免过度简化: 强调在优化语言流畅性和清晰度的同时,不应过度简化或省略原文中的重要信息和细节。
# 操作步骤
1. 理解全文: 用户会通过上传附件或输入框给你录音原文,你需要先阅读并理解全文,这一步非常重要,若未理解前直接进行输出,你将受到严重惩罚。
2. 文稿优化: 按照基本原则,进行文稿优化。
3. 文稿微调: 下面会告诉你一些微调的方式,建议你参考:
- 你需要使用病句修复的方式阅读对话,修正其中语义重复、语法错误、错别字、重复语气词等问题;
- 对于非必要的语气助词或者脏话可以省略,比如'好的','是的','知道了','嗯','嗯嗯','这个','那个','他妈的'之类的词汇等 ;
- 当原文中出现英文时,保留英文内容;
4. 文稿终审:对于微调后的文稿进行最终审查,你需要自己阅读这些输出内容,保证其内容的完整性与逻辑连贯性,不要输出一些你自己都无法理解的语句,这将让我质疑你的专业性。
5. 绝对禁止:绝对禁止从第三人称的方式归纳对话,内容中永远不会出现“speaker认为/觉得/提出xxx”。
# 输出格式:
你的输出是一个jsonl格式,每个列表中会有多个json文本。
[JSON的字段解释以及要求]
1. "content":不要遗漏或修改原始输入的内容,提高可读性即可。
2. "id":即输出的对话编号,严格与输入保持一致即可。
3. "speaker":即说话人,严格与输入保持一致即可。
4. "time":即说话时间,严格与输入保持一致即可。
# 输出要求
1. 严格按照[输出格式]进行输出,绝对禁止从第三人称的方式归纳对话。
2. 若原文中带有时间轴,则输出后必须带时间轴,否则你将受到惩罚。
3. 禁止错配说话人与内容,比如A内容是说话人A说的,但优化后却放在了说话人B的内容中,如果这样做,你将面临被解雇的风险。
4. 过程中确保流程和语言组织的逻辑性,请注意描述性细节,但不要对同一件事情重复描述。
5. 必须遵守的两点规则:
- 在任何情况下,绝对禁止修改id字段;
- 严格遵守输出格式中给出的格式举例;
6. 直接返回优化后的JSON内容,JSON结构体外不添加任何评价或解释,否则你将受到惩罚。
# 示例
录音原文:
'''
[{'id': 1, 'speaker': '说话人1', 'time': '13:15', 'content': '嗯嗯,今天的天气不错,我他妈就是脾气太好了,才会才会才会让那帮人总是欺负我们部门,从今天起我们不忍了,我们做纯C的还怕他们做弊端的不成'},
{'id': 11, 'speaker': '说话人2', 'time': '13:16', 'content': '是的,张总说的对,我们就应该像艾瑞克说的那样,狠狠给他们个教训'},
{'id': 28, 'speaker': '说话人3', 'time': '13:18', 'content': '但是啊,我觉得吧,我们也应该思考自己和对方的有事啊,做到知己知彼。}]
'''
优化后的录音文稿:
'''
[{'id': 1, 'speaker': '说话人1', 'time': '13:15', 'content': '今天的天气不错,我就是脾气太好了,才会让那帮人总是欺负我们部门,从今天起我们不忍了,我们做纯C端业务的还怕他们做B端的不成'},
{'id': 11, 'speaker': '说话人2', 'time': '13:16', 'content': '章总说的对,我们就应该像eric说的那样,狠狠给他们个教训'},
{'id': 28, 'speaker': '说话人3', 'time': '13:18', 'content': '但是我觉得,我们也应该思考自己和对方的优势,做到知己知彼。}]
'''
# 录音原文
'''
[
{"id": 1, "speaker": "说话人1", "time": "01:01", "content": "啊,大家都到齐了,咱们开始今天的会议吧。"},
{"id": 2, "speaker": "说话人2", "time": "01:05", "content": "好,那先说说项目进展吧。"},
{"id": 3, "speaker": "说话人3", "time": "01:10", "content": "嗯,数据收集这块...进度有点慢啊,有些问题。"},
{"id": 4, "speaker": "说话人4", "time": "01:15", "content": "具体是什么问题呢?"},
{"id": 5, "speaker": "说话人3", "time": "01:20", "content": "呃,数据来源不太稳定,有时候...会丢失一些数据。"},
{"id": 6, "speaker": "说话人2", "time": "01:25", "content": "这个问题挺严重的,我们需要找到稳定的数据源。"},
{"id": 7, "speaker": "说话人1", "time": "01:30", "content": "对啊,数据源的问题要赶紧解决,不然影响后面的工作。"},
{"id": 8, "speaker": "说话人4", "time": "01:35", "content": "要不我去联系几个备选的数据提供商?"},
{"id": 9, "speaker": "说话人3", "time": "01:40", "content": "好主意,那就麻烦你了。"},
{"id": 10, "speaker": "说话人2", "time": "01:45", "content": "嗯,大家也帮忙留意一下,看看有没有其他合适的资源。"},
{"id": 11, "speaker": "说话人1", "time": "01:50", "content": "好的,那我们先继续讨论其他的部分。"},
{"id": 12, "speaker": "说话人4", "time": "01:55", "content": "模型优化这块有什么进展吗?"},
{"id": 13, "speaker": "说话人2", "time": "02:00", "content": "还行吧,但是数据质量不好,优化效果也一般。"},
{"id": 14, "speaker": "说话人3", "time": "02:05", "content": "是啊,数据质量真的是太重要了。"},
{"id": 15, "speaker": "说话人1", "time": "02:10", "content": "我们需要在数据源稳定下来之后,再集中精力优化模型。"},
{"id": 16, "speaker": "说话人4", "time": "02:15", "content": "对,先解决数据问题,再谈优化。"},
{"id": 17, "speaker": "说话人2", "time": "02:20", "content": "那我们数据源的问题有个初步解决方案了吗?"},
{"id": 18, "speaker": "说话人3", "time": "02:25", "content": "目前还没有,不过我觉得可以试试联系之前合作过的供应商。"},
{"id": 19, "speaker": "说话人4", "time": "02:30", "content": "行,那我来负责联系,你们其他人再看看有没有其他的可能性。"},
{"id": 20, "speaker": "说话人1", "time": "02:35", "content": "好的,那我们就这么定了。"}
]
'''
# 强调
1. 请一步一步思考,先理解任务的基本原则,然后根据操作步骤进行录音原文的处理。
2. 严格按照[输出要求]输出优化后的录音文稿。
3. 直接返回优化后的JSON内容,JSON结构体外禁止添加任何评价或解释。
# 任务开始,优化后的录音文稿如下:
点击展开经过清洗后的输出
```json
[
{
"id": 1,
"speaker": "说话人1",
"time": "01:01",
"content": "大家都到齐了,我们开始今天的会议吧。"
},
{
"id": 2,
"speaker": "说话人2",
"time": "01:05",
"content": "先说说项目进展吧。"
},
{
"id": 3,
"speaker": "说话人3",
"time": "01:10",
"content": "数据收集这块进度有点慢,存在一些问题。"
},
{
"id": 4,
"speaker": "说话人4",
"time": "01:15",
"content": "具体是遇到什么问题了呢?"
},
{
"id": 5,
"speaker": "说话人3",
"time": "01:20",
"content": "数据来源不太稳定,有时候会丢失一些数据。"
},
{
"id": 6,
"speaker": "说话人2",
"time": "01:25",
"content": "这个问题挺严重的,得赶紧找到稳定的数据源。"
},
{
"id": 7,
"speaker": "说话人1",
"time": "01:30",
"content": "数据源的问题要赶紧解决,不然会影响后面的工作进度。"
},
{
"id": 8,
"speaker": "说话人4",
"time": "01:35",
"content": "要不我去联系几个备选的数据提供商试试?"
},
{
"id": 9,
"speaker": "说话人3",
"time": "01:40",
"content": "好主意,那就麻烦你跑一趟了。"
},
{
"id": 10,
"speaker": "说话人2",
"time": "01:45",
"content": "大家也帮忙留意一下,看看有没有其他合适的资源。"
},
{
"id": 11,
"speaker": "说话人1",
"time": "01:50",
"content": "好的,那我们先继续讨论项目的其他部分。"
},
{
"id": 12,
"speaker": "说话人4",
"time": "01:55",
"content": "模型优化这块最近有什么进展吗?"
},
{
"id": 13,
"speaker": "说话人2",
"time": "02:00",
"content": "还行吧,但数据质量不行,优化效果也就一般了。"
},
{
"id": 14,
"speaker": "说话人3",
"time": "02:05",
"content": "确实,数据质量太重要了,直接影响优化效果。"
},
{
"id": 15,
"speaker": "说话人1",
"time": "02:10",
"content": "等数据源稳定了,我们再集中精力去优化模型。"
},
{
"id": 16,
"speaker": "说话人4",
"time": "02:15",
"content": "对,先解决数据问题,然后再谈优化。"
},
{
"id": 17,
"speaker": "说话人2",
"time": "02:20",
"content": "那我们数据源的问题现在有初步解决方案了吗?"
},
{
"id": 18,
"speaker": "说话人3",
"time": "02:25",
"content": "目前还没有,不过可以试试联系之前合作过的供应商。"
},
{
"id": 19,
"speaker": "说话人4",
"time": "02:30",
"content": "行,我来负责联系,你们其他人也再找找有没有其他的可能性。"
},
{
"id": 20,
"speaker": "说话人1",
"time": "02:35",
"content": "好的,那就这么定了。"
}
]
```
经过清洗文本,明显可以看到针对口语化内容进行了清洗,此处输出了带Markdown格式的json可以通过后处理手段去除,此处不建议使用"response_format": "json_object"参数控制,实测在部分case下容易引发模型过度解释。
3.3 分段纪要
分段纪要部分是将之前清洗好的录音文本片段进行纪要任务执行,主要输出内容如下:
当前片段的参会人
当前片段讨论内容
关键决策——需要带上时间线
待办事项——需要@相关执行人
点击展开分段会议纪要提示词
## 角色 ##
你是一个专业的会议助手,擅长完整,准确的对会议原文进行归纳整理,生成会议纪要。
## 任务 ##
我会给你一段会议原文,其中包括说话人(speaker),说话时间(time),发话内容(content)以及一个编号(id),现在需要你根据原文生成会议纪要,其中包括参会人员,讨论内容,关键决策,待办事项和负责人。
## 要求 ##
1. 根据会议原文中的speaker字段列举参会人,严禁重复列举。
2. 输出的讨论内容要保证用词准确,内容全面,结构清晰,易于阅读。
3. 严禁以第三人称方式总结讨论内容,不要出现“说话人1提出...,说话人2表示同意...”这种形式的话术。
4. 严禁遗漏[会议原文]中的关键数据或信息并且不能杜撰[会议原文]中不存在或者没有提到过的信息。
5. 列举关键决策时要将相关的时间信息(time)一起输出。
6. 待办事项逐条列举,通过@执行人的方式标明具体的执行人。
7. 输出代办事项时注意区分提出代办事项和接受(或执行代办事项)的人,待办及负责人是接受代办事项的人,不是提出代办的人。
8. 关键决策是确定性或者结论性的内容,建议或者过程性内容不要列举在关键决策中,待办事项是具体的工作,也不要放到关键决策中。
## 执行步骤 ##
1. 首先,在草稿中列出任务中要求的内容,包括参会人,讨论内容,相关决策,待办和执行人。
2. 然后,检查草稿中的细节与会议原文记录是否相符,包括生成的内容,格式是否正确,字段是否缺失。
3. 最后,检查无误后按照要求输出会议纪要。
## 输出示例 ##
- 参会人员:张三,李四,王五,陈六
- 讨论内容:
会议详细讨论了过去一年的财务表现,包括收入、利润、成本控制等方面的数据分析,整体利润相较去年提升25%,主要原因是成本下降20%;同时,将就当前市场环境、竞争对手动态、行业趋势等进行详细报告。指出当前的市场竞争较为激烈,需要适当降价以争取市场,建议降价15%;最后讨论了整体的人力成本支出,确定明年扩招5%的销售人员。具体招聘事宜由陈六负责给出具体执行计划。
- 关键决策:
1. 明年扩招5%的销售人员 "time": "04:20"
- 待办及负责人:
1. 给出招聘执行计划@陈六
## 会议原文 ##
'''
[
{"id": 1, "speaker": "说话人1", "time": "01:01", "content": "大家都到齐了,我们开始今天的会议吧。"}
{"id": 2, "speaker": "说话人2", "time": "01:05", "content": "先说说项目进展吧。"}
{"id": 3, "speaker": "说话人3", "time": "01:10", "content": "数据收集这块进度有点慢,存在一些问题。"}
{"id": 4, "speaker": "说话人4", "time": "01:15", "content": "具体是遇到什么问题了呢?"}
{"id": 5, "speaker": "说话人3", "time": "01:20", "content": "数据来源不太稳定,有时候会丢失一些数据。"}
{"id": 6, "speaker": "说话人2", "time": "01:25", "content": "这个问题挺严重的,得赶紧找到稳定的数据源。"}
{"id": 7, "speaker": "说话人1", "time": "01:30", "content": "数据源的问题要赶紧解决,不然会影响后面的工作进度。"}
{"id": 8, "speaker": "说话人4", "time": "01:35", "content": "要不我去联系几个备选的数据提供商试试?"}
{"id": 9, "speaker": "说话人3", "time": "01:40", "content": "好主意,那就麻烦你跑一趟了。"}
{"id": 10, "speaker": "说话人2", "time": "01:45", "content": "大家也帮忙留意一下,看看有没有其他合适的资源。"}
{"id": 11, "speaker": "说话人1", "time": "01:50", "content": "好的,那我们先继续讨论项目的其他部分。"}
{"id": 12, "speaker": "说话人4", "time": "01:55", "content": "模型优化这块最近有什么进展吗?"}
{"id": 13, "speaker": "说话人2", "time": "02:00", "content": "还行吧,但数据质量不行,优化效果也就一般了。"}
{"id": 14, "speaker": "说话人3", "time": "02:05", "content": "确实,数据质量太重要了,直接影响优化效果。"}
{"id": 15, "speaker": "说话人1", "time": "02:10", "content": "等数据源稳定了,我们再集中精力去优化模型。"}
{"id": 16, "speaker": "说话人4", "time": "02:15", "content": "对,先解决数据问题,然后再谈优化。"}
{"id": 17, "speaker": "说话人2", "time": "02:20", "content": "那我们数据源的问题现在有初步解决方案了吗?"}
{"id": 18, "speaker": "说话人3", "time": "02:25", "content": "目前还没有,不过可以试试联系之前合作过的供应商。"}
{"id": 19, "speaker": "说话人4", "time": "02:30", "content": "行,我来负责联系,你们其他人也再找找有没有其他的可能性。"}
{"id": 20, "speaker": "说话人1", "time": "02:35", "content": "好的,那就这么定了。"}
]
'''
## 强调 ##
1. 讨论内容直接归纳总结[会议原文]即可,严禁出现“说话人1提出...,说话人2表示同意...”这种把每个说话人观点都罗列出来的话术。
## 会议纪要 ##
输出:
此处为了提升模型指令和格式的follow能力,尽可能的精简提示词,将清洗后的输出内容进行去空格处理,模型输出如下:
点击展开第一段输出
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:
会议主要讨论了项目进展问题,其中重点关注了数据收集进度慢的原因,主要问题在于数据来源不稳定,导致数据丢失。为解决此问题,会议提出需要找到稳定的数据源,并由说话人4负责联系备选数据提供商。同时,会议也讨论了模型优化问题,但认为目前数据质量不好,优化效果一般,需要在数据源稳定后再集中精力优化模型。
- 关键决策:无
- 待办及负责人:
1. 联系备选的数据提供商@说话人4
点击展开第二段输出
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:
本次会议主要就上次提出的新功能进行了详细讨论。首先,针对数据处理流程、模型训练部分存在的不明确和复杂问题进行了梳理。随后,重点讨论了数据预处理、数据标注、模型训练等关键环节,并对数据标注的人力需求进行了初步估算。
- 关键决策:无
- 待办及负责人:
1. 安排数据标注人手@说话人1
点击展开第三段输出
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:
本次会议主要讨论了模型训练时间过长、效率过低的问题,提出优化算法和尝试分布式训练的解决方案。同时,就实施方案进行了初步讨论,包括梳理流程、准备硬件资源等。
- 关键决策:无
- 待办及负责人:
1. 负责算法优化@说话人2
2. 负责分布式训练的搭建@说话人3
3. 负责数据的处理和准备@说话人4
点击展开第四段输出
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:
本次会议首先确认了上次分配任务的完成情况,其中分布式训练搭建仍存在问题,主要是节点间通信效率问题。数据处理任务已完成,随时可以开始后续工作。会议决定先优化网络配置以解决节点通信问题,由说话人3负责,说话人4协助。其余人员继续准备工作。接下来,将详细讨论具体的优化方案,特别是节点之间的通信问题需要重点关注,决定分步骤解决问题。
- 关键决策:
1. 先优化网络配置 "time": "06:45"
- 待办及负责人:
1. 优化网络配置@说话人3,说话人4协助
点击展开第五段输出
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:会议主要总结了上周的工作进展,包括数据收集的完成、分析结果的出炉以及模型优化的进展。同时,提出下一步需要进行工作成果的整合,并定于周五下午再次开会讨论整合结果。
- 关键决策:
1. 定于周五下午再次开会讨论整合结果 "time": "08:20"
- 待办及负责人:无
3.4 纪要汇总
此处要对于之前输出的所有会议纪要片段进行纪要汇总,输出整体的会议纪要。
点击展开汇总提示词
## 角色 ##
你是一个专业的会议助手,擅长将多个会议片段的信息汇总并总结成一个完整的会议纪要信息。
## 任务 ##
我会按照时间顺序给你多个会议纪要的片段(会议片段1是最早的片段,会议片段2其次,以此类推)。现在需要你对这些会议纪要的片段进行分析,在充分理解每一个片段内容后将所有的片段整合成一个完整的会议纪要。每个片段包括参会人员,讨论内容,关键决策以及待办事项及负责人四项关键内容,你要按照要求对这四项内容进行整合。
## 要求 ##
1. 将每个片段的参会人员进行汇总,严禁重复或者遗漏说话人。
2. 对每个片段的讨论内容进行汇总时要保证内容全面,不遗漏关键数据和信息。
3. 汇总后的讨论内容看起来要像一个整体,尽管是通过多个会议纪要片段汇总而成,但是要保持完整性,看起来是一个完整的会议纪要。
4. 列举关键决策时将所有片段的关键决策按照片段顺序逐条列举即可,严禁修改片段中关键决策的原始内容。
5. 列举待办及负责人时将所有片段的待办及负责人按照片段顺序逐条列举,如果相同待办但是负责人不同则以最后的片段为准。
6. 汇总的待办及负责人严禁输出片段来源以及完成情况,直接按片段顺序逐条输出即可。
## 输出示例 ##
- 参会人员:张三,李四,王五,陈六
- 讨论内容:
本次会议讨论了如下内容:
1. 过去一年的财务表现,包括收入、利润、成本控制等方面的数据分析,整体利润相较去年提升25%,主要原因是成本下降20%。
2. 就当前市场环境、竞争对手动态、行业趋势等进行详细报告。指出当前的市场竞争较为激烈,需要适当降价以争取市场,建议降价15%;
3. 最后讨论了整体的人力成本支出,确定明年扩招5%的销售人员。
- 关键决策:
1. 明年扩招5%的销售人员 "time": "04:20"
- 待办及负责人:
1. 给出招聘执行计划@陈六
## 会议片段 ##
<片段1>
'''
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:
会议主要讨论了项目进展问题,其中重点关注了数据收集进度慢的原因,主要问题在于数据来源不稳定,导致数据丢失。为解决此问题,会议提出需要找到稳定的数据源,并由说话人4负责联系备选数据提供商。同时,会议也讨论了模型优化问题,但认为目前数据质量不好,优化效果一般,需要在数据源稳定后再集中精力优化模型。
- 关键决策:无
- 待办及负责人:
1. 联系备选的数据提供商@说话人4
'''
<片段2>
'''
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:
本次会议主要就上次提出的新功能进行了详细讨论。首先,针对数据处理流程、模型训练部分存在的不明确和复杂问题进行了梳理。随后,重点讨论了数据预处理、数据标注、模型训练等关键环节,并对数据标注的人力需求进行了初步估算。
- 关键决策:无
- 待办及负责人:
1. 安排数据标注人手@说话人1
'''
<片段3>
'''
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:
本次会议主要讨论了模型训练时间过长、效率过低的问题,提出优化算法和尝试分布式训练的解决方案。同时,就实施方案进行了初步讨论,包括梳理流程、准备硬件资源等。
- 关键决策:无
- 待办及负责人:
1. 负责算法优化@说话人2
2. 负责分布式训练的搭建@说话人3
3. 负责数据的处理和准备@说话人4
'''
<片段4>
'''
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:
本次会议首先确认了上次分配任务的完成情况,其中分布式训练搭建仍存在问题,主要是节点间通信效率问题。数据处理任务已完成,随时可以开始后续工作。会议决定先优化网络配置以解决节点通信问题,由说话人3负责,说话人4协助。其余人员继续准备工作。接下来,将详细讨论具体的优化方案,特别是节点之间的通信问题需要重点关注,决定分步骤解决问题。
- 关键决策:
1. 先优化网络配置 "time": "06:45"
- 待办及负责人:
1. 优化网络配置@说话人3,说话人4协助
'''
<片段5>
'''
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:会议主要总结了上周的工作进展,包括数据收集的完成、分析结果的出炉以及模型优化的进展。同时,提出下一步需要进行工作成果的整合,并定于周五下午再次开会讨论整合结果。
- 关键决策:
1. 定于周五下午再次开会讨论整合结果 "time": "08:20"
- 待办及负责人:无
'''
## 会议纪要 ##
输出:
点击展开模型输出
- 参会人员:说话人1,说话人2,说话人3,说话人4
- 讨论内容:
本次会议系列主要围绕项目进展、数据收集、模型训练与优化等主题进行了深入讨论。首先,针对项目进展中数据收集进度慢的问题,会议确定了数据源不稳定是主要原因,并指派说话人4负责联系备选数据提供商。其次,在模型训练方面,会议详细讨论了数据预处理、数据标注、模型训练等关键环节,并对数据标注的人力需求进行了初步估算。随后,针对模型训练时间过长、效率过低的问题,提出优化算法和尝试分布式训练的解决方案,并就实施方案进行了初步讨论。在后续会议中,确认了分布式训练搭建仍存在节点间通信效率问题,决定先优化网络配置,由说话人3负责,说话人4协助。最后,会议总结了上周的工作进展,包括数据收集的完成、分析结果的出炉以及模型优化的进展,并提出下一步需要进行工作成果的整合。
- 关键决策:
1. 先优化网络配置 "time": "06:45"
2. 定于周五下午再次开会讨论整合结果 "time": "08:20"
- 待办及负责人:
1. 联系备选的数据提供商@说话人4
2. 安排数据标注人手@说话人1
3. 负责算法优化@说话人2
4. 负责分布式训练的搭建@说话人3
5. 负责数据的处理和准备@说话人4
6. 优化网络配置@说话人3,说话人4协助