语言:
- 英语
许可证:
- 知识共享-署名-非商业性使用-相同方式共享 4.0
- Apache 2.0
标签:
- 语法
- 拼写
- 标点
- 错误修正
- 语法合成
- FLAN
数据集:
-
JFLEG
示例:
-
文本: "他们的车坏了,所以他们搭便车去上课。"
示例标题: "复合错误-1"
-
文本: "我能吃芝士汉堡吗"
示例标题: "芝士汉堡"
-
文本: "所以,如果我们现在有一个,那么通过拟合环状模型,知道如何估计趋势,给定当前趋势,我们也可以估计节点。我再次尝试过滤,我们已经估计了趋势,并称之为当前的外部趋势。现在我们可以看看为什么这不应该有一个趋势,因为我们可以直接移除趋势,然后现在可以估计这些外部效应的影响。"
示例标题: "转录音频示例2"
-
文本: "我的同事说他用财务规划师来帮助选择股票,这样他就不会亏钱。"
示例标题: "错误词语选择(上下文)"
-
文本: "好的,所以,我周一无法参加扩展会议,这就是为什么我在预先录制这个优秀课程。今天我想讨论两件事,首先,我会总结一下如何从时间序列中移除趋势。"
示例标题: "小写音频转录输出"
-
文本: "感到沮丧,我花了很长时间才把椅子摆好。"
示例标题: "悬垂修饰语"
-
文本: "我想要一块派。"
示例标题: "拼写错误"
-
文本: "你第一次一起去苏黎世时,打算去哪个部分徒步?! ?"
示例标题: "苏黎世聊天机器人"
-
文本: "课程大部分是关于语义或语言内容的,但也有从文档字符统计之外的服务特性中学到的有趣主题。此时,Elvthos以英语为母语自我介绍,并继续说,如果你继续从事社会科学工作,"
示例标题: "社会科学ASR摘要输出"
-
文本: "它们有些接近,是的,请,我不确定芬兰语如何表达,但你可以选择一个在属性中有变体的,基本上任何人都可以应用浏览方法达到。"
示例标题: "医学课程音频转录"
参数:
最大长度: 128
最小长度: 4
束搜索数量: 8
重复惩罚: 1.21
长度惩罚: 1
提前停止: 是
语法合成大型模型: FLAN-t5
基于google/flan-t5-large微调的版本,用于在扩展版JFLEG数据集上进行语法校正。演示在HF空间。
示例

与原版grammar-synthesis-large对比。
Python中的使用
已经有一个Colab笔记本实现了这个基本版本(点击“在Colab中打开”按钮)
安装pip install transformers
后运行以下代码:
from transformers import pipeline
corrector = pipeline(
'text2text-generation',
'pszemraj/flan-t5-large-grammar-synthesis',
)
raw_text = '我能吃芝士汉堡吗'
results = corrector(raw_text)
print(results)
批量推理: 详情见讨论帖,但本质上数据集包含多个句子,因此建议以相同方式运行推理:64-96个令牌左右的批次(或,用正则表达式分割的2-3个句子)
- 首先检查给定句子是否需要语法校正也是有益的,然后再使用text2text模型。可以使用像
textattack/roberta-base-CoLA
这样在CoLA上微调的BERT类模型完成。
- 我制作了一个演示批量推理的笔记本这里
模型描述
目的是创建一个文本到文本的语言模型,成功完成“单次语法校正”,针对可能有大量错误的文本,重要条件是它不会语义上改变语法正确的文本/信息。
比较其他语法校正模型上的一些重度错误示例,看看区别 :)
ONNX检查点
此模型已转换为ONNX,可以使用huggingface的optimum
库加载/使用。
首先需要安装optimum
pip install optimum[onnxruntime]
用optimum的pipeline
加载
from optimum.pipelines import pipeline
corrector = pipeline(
"text2text-generation", model=corrector_model_name, accelerator="ort"
)
其他检查点
如果为了更快的推理速度而略微降低语法校正质量对你的用例有意义,可以查看从相关t5检查点微调的**base和small**检查点。
限制
- 数据集:
cc-by-nc-sa-4.0
- 模型:
apache-2.0
- 这仍是一个进行中的工作,虽然可能在许多情况下对“单次语法校正”有用,但请检查输出的正确性好吗?
使用案例
显然,这部分相当通用,因为“通用单次语法校正”有许多用途。一些想法或使用案例:
- 校正高度易错的LM输出。一些例子是音频转录(ASR)(这实际上是一些示例)或类似手写OCR的东西。
- 有待进一步研究,根据使用的模型/系统,可能值得在OCR后对键入字符应用此模型。
- 校正/填充文本生成模型生成的文本,使其连贯/去除明显破坏对话沉浸感的错误。我在这个OPT 2.7B聊天机器人式模型的输出上使用这个。
一个在CPU上运行此模型并使用束搜索的示例:
原始响应:
我听说它被归因于许多不同的哲学流派,包括斯多葛主义、实用主义、存在主义,甚至一些后结构主义形式。我认为最有趣(也是最困难)的哲学问题之一是试图让狗(或其他动物)出笼子。这个问题之所以困难,是因为它似乎违背了我们的本性(可以这么说)
合成耗时306.12秒
最终响应耗时1294.857秒:
我听说它被归因于许多不同的哲学流派,包括唯我论、实用主义、存在主义,甚至一些后结构主义形式。我认为最有趣(也是最困难)的哲学问题之一是试图让狗(或其他动物)出笼子。这个问题之所以困难,是因为它似乎违背了我们的本性(可以这么说)
注意:在这个聊天机器人设置中,我有一些其他逻辑会移除最终句子的任何句点以避免显得被动攻击
- 与上述#2相关,修复/校正所谓的折磨短语,这些是文本由语言模型生成的明显迹象。注意,一些这些没有被修复,特别是当它们涉及领域特定术语时(例如,不规则林地而不是随机森林)。
引用信息
如果你发现这个微调模型在你的工作中有用,请考虑引用它 :)
@misc {peter_szemraj_2022,
作者 = { {Peter Szemraj} },
标题 = { flan-t5-large-grammar-synthesis (修订版 d0b5ae2) },
年份 = 2022,
网址 = { https://huggingface.co/pszemraj/flan-t5-large-grammar-synthesis },
doi = { 10.57967/hf/0138 },
出版商 = { Hugging Face }
}