punctuator2

GitHub
683 193 中等 2 次阅读 1个月前MIT语言模型
AI 解读 由 AI 自动生成,仅供参考

punctuator2 是一款专为恢复未分段文本中缺失标点而设计的开源 AI 模型。它主要解决纯文本因缺乏标点符号而导致阅读困难的问题,特别擅长处理语音识别系统输出的原始字符串,将连续的字串转化为通顺的句子。

在技术实现上,punctuator2 采用双向循环神经网络结合注意力机制,能够精准判断句子边界及具体标点类型。其核心亮点在于支持双阶段训练:第一阶段仅依赖文本特征学习通用标点规则;第二阶段可引入停顿时长数据,帮助模型适应特定领域或优化语音转写后的标点还原效果,这在处理口语化内容时尤为有效。

punctuator2 非常适合自然语言处理开发者、语音技术研究者以及需要自动化清洗文本数据的工程人员使用。尽管它目前主要针对英文语料进行了优化,但其架构思路为无标点文本处理提供了高效的解决方案。集成到工作流后,它能显著提升文本的可读性,并降低人工校对的成本,是构建高质量 NLP 应用的基础组件之一。

使用场景

某在线教育平台的内容团队每天需处理大量语音讲座录音,将其转换为文字稿供学生复习。面对未经分割且缺失标点的原始转录文本,人工整理成本高昂且效率低下。

没有 punctuator2 时

  • 人工逐字校对耗时极长,一篇 1 小时的讲座文本往往需要数小时才能完成基础标点修复。
  • 简单的正则规则无法理解语义,经常将长难句错误切分,导致逻辑断裂。
  • 语音识别输出的停顿信息未被利用,无法区分疑问句与陈述句的语气差异。
  • 批量处理困难,遇到生僻词或特定领域术语时准确率急剧下降。

使用 punctuator2 后

  • punctuator2 基于双向循环神经网络自动恢复标点,处理速度达到每秒 1 万词,效率提升百倍。
  • 模型能结合上下文特征精准判断句子边界,显著改善长难句的阅读流畅度。
  • 支持引入停顿时长数据训练第二阶段,有效适配不同讲师的语速和发音习惯。
  • 在英文 TED 演讲等测试集上整体 F1 分数超 60%,大幅降低了人工审核的工作量。

punctuator2 通过深度学习技术将非结构化语音文本转化为高质量的可读内容,彻底解放了内容生产流程。

运行环境要求

操作系统
  • 未说明
GPU

非必需,提及“现代 GPU”可提升训练速度至约 10000 词/秒,无具体型号/显存/CUDA 要求

内存

未说明

依赖
notes1. 工具基于较旧的 Python 2.7 和 Theano 框架,现代系统运行可能需要兼容层;2. 输入文本需预处理,标点符号前后必须包含空格;3. 支持两阶段训练,第二阶段可选加入停顿时长标注以提升领域适应性;4. 预训练模型可通过 Google Drive 获取。
python2.7
numpy
theano
punctuator2 hero image

快速开始

演示 and 演示 2

Punctuator

一个带有注意力机制(Attention Mechanism)的双向循环神经网络(Bidirectional Recurrent Neural Network)模型,用于恢复未分词(Unsegmented Text)文本中缺失的词间标点。

该模型可以分两个阶段进行训练(第二阶段可选):

  1. 第一阶段在带标点标注的文本上进行训练。在此阶段,模型仅基于文本特征学习恢复标点。
  2. 可选的第二阶段可以在带标点和停顿(Pause)标注的文本上进行训练。在此阶段,模型学习结合停顿时长与文本特征,并适应目标领域。如果省略停顿,则仅执行适应。带有停顿时长的第二阶段可用于例如自动语音识别(Automatic Speech Recognition)系统输出的标点恢复。

效果如何?

请记住,下面给出的所有分数都是针对_unsegmented_(未分词)文本的,我们没有使用韵律(Prosodic)特征,因此,除其他外,模型必须完全基于文本特征检测句子边界以及边界类型(?QUESTIONMARK, .PERIOD 或 !EXCLAMATIONMARK)。分数是在测试集上计算的。

使用默认设置、优化的 Theano 安装和现代 GPU,训练速度应约为每秒 10000 个单词。

预训练模型可在此下载 here(演示版 + Interspeech 论文中的 2 个模型)。

英文 TED 演讲

训练集大小:210 万单词。仅第一阶段。更多详情见 这篇论文。 作为对比,我们的 先前模型 获得了 50.8 的整体 F1 分数。

标点 精确率 召回率 F 分数
,COMMA 64.4 45.2 53.1
?QUESTIONMARK 67.5 58.7 62.8
.PERIOD 72.3 71.5 71.9
总计 68.9 58.1 63.1

英文 Europarl v7

训练集大小:4000 万单词。仅第一阶段。详情见 ./example

您可以尝试在此处与该模型竞争 here

标点 精确率 召回率 F 分数
?QUESTIONMARK 77.7 73.2 75.4
!EXCLAMATIONMARK 50.0 0.1 0.1
,COMMA 68.9 72.0 70.4
-DASH 55.9 8.8 15.2
:COLON 60.9 23.8 34.2
;SEMICOLON 44.7 1.1 2.2
.PERIOD 84.7 84.1 84.4
总计 75.7 73.9 74.8

环境要求

  • Python 2.7
  • Numpy
  • Theano

数据要求:

  • 用于第一阶段模型训练和验证的清理后的文本文件。每个标点符号标记必须用空格包围。

    示例: to be ,COMMA or not to be ,COMMA that is the question .PERIOD

  • (可选) 用于第二阶段模型训练和验证的停顿标注文本文件。这些文件的清理方式应与第一阶段数据相同。以秒为单位的停顿时长应在每个单词后使用特殊标签 <sil=0.200> 标记。如果有标点符号,必须在停顿标签之后。

    示例: to <sil=0.000> be <sil=0.100> ,COMMA or <sil=0.000> not <sil=0.000> to <sil=0.000> be <sil=0.150> ,COMMA that <sil=0.000> is <sil=0.000> the <sil=0.000> question <sil=1.000> .PERIOD

    第二阶段数据也可以没有停顿标注,仅用于目标领域适应。

请确保句子的首单词不要有大写首字母。这会给模型关于句号位置的不公平提示。此外,你用于训练和验证的文本文件必须足够大(至少 minibatch_size x sequence_length 个单词,默认设置下为 128x50=6400 个单词),否则可能会出错。

配置

词汇表大小、标点标记及其映射,以及转换数据的位置可以在 data.py 的头部进行配置。 一些模型超参数(Hyperparameters)可以在 main.py 和 main2.py 的头部进行配置。学习率(Learning Rate)和隐藏层大小(Hidden Layer Size)可以作为参数传递。

使用方法

第一步是数据转换。假设预处理和清理后的 *.train.txt, *.dev.txt 和 *.test.txt 文件位于 <data_dir> 中,可以使用以下命令启动转换:

python data.py <data_dir>

如果你也有第二阶段数据,那么:

python data.py <data_dir> <second_stage_data_dir>

第一阶段可以通过以下方式训练:

python main.py <model_name> <hidden_layer_size> <learning_rate>

例如 python main.py <model_name> 256 0.02 效果良好。

第二阶段可以通过以下方式训练:

python main2.py <model_name> <hidden_layer_size> <learning_rate> <first_stage_model_path>

预处理文本可以通过以下方式添加标点,例如:

cat data.dev.txt | python punctuator.py <model_path> <model_output_path>

或者,如果 data.dev.txt 中存在停顿标注且你有一个在停顿标注数据上训练的第二阶段模型,那么:

cat data.dev.txt | python punctuator.py <model_path> <model_output_path> 1

data.dev.txt 中的标点标记不需要移除 - punctuator.py 脚本会忽略它们。

此示例中的错误统计信息可以通过以下方式计算:

python error_calculator.py data.dev.txt <model_output_path>

你可以使用以下方式玩弄训练好的模型(假设输入文本的预处理方式与训练数据类似):

python play_with_model.py <model_path>

或者使用:

python play_with_model.py <model_path> 1

如果你想查看模型将哪些词视为 UNKs(未知词,Out-of-Vocabulary)。

引用

该软件描述于:

@inproceedings{tilk2016,
  author    = {Ottokar Tilk and Tanel Alum{\"a}e},
  title     = {Bidirectional Recurrent Neural Network with Attention Mechanism for Punctuation Restoration},
  booktitle = {Interspeech 2016},
  year      = {2016}
}

我们在论文中使用了 release v1.0

替代方案

版本历史

v1.02017/03/03

常见问题

相似工具推荐

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

74.9k|★★★☆☆|今天
语言模型图像开发框架

OpenHands

OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。

70.6k|★★★☆☆|今天
语言模型Agent开发框架