Deberta V3 Large Lemon Spell 5k
D
Deberta V3 Large Lemon Spell 5k
由 manred1997 开发
基于DeBERTa-v3-large微调的英语语法纠错模型,专注于检测和修正常见语法错误
下载量 15
发布时间 : 10/24/2024
模型简介
该模型是基于microsoft/deberta-v3-large微调的语法纠错(GEC)系统,旨在检测和修正英语文本中的语法错误,如动词时态、名词变形、形容词用法等。
模型特点
多阶段训练
采用三阶段训练策略,分别使用不同难度和来源的数据集进行优化
双任务头设计
同时包含错误检测头和标记分类头,提高语法错误识别精度
通用英语优化
特别适合语言学习者或需要提升语法精确度的应用场景
模型能力
英语语法错误检测
英语语法错误修正
动词时态纠错
名词变形纠错
形容词用法纠错
使用案例
教育技术
写作助手
集成到写作软件中提供实时语法检查
提高非母语使用者的写作准确性
语言学习应用
帮助英语学习者识别和纠正语法错误
加速语言学习过程
专业工具
专业文档校对
用于商务邮件、学术论文等正式文本的语法检查
提升文档专业度
🚀 语法错误纠正模型
本模型是一个基于microsoft/deberta-v3-large
微调的语法错误纠正(GEC)系统,能够检测并纠正英文文本中的语法错误。它聚焦于常见语法错误,如动词时态、名词词形变化、形容词用法等,对语言学习者或需要提高语法准确性的应用程序非常有用。
🚀 快速开始
以下是使用该模型的示例代码:
from dataclasses import dataclass
from typing import Optional, Tuple
import torch
from torch import nn
from torch.nn import CrossEntropyLoss
from transformers import AutoConfig, AutoTokenizer
from transformers.file_utils import ModelOutput
from transformers.models.deberta_v2.modeling_deberta_v2 import (
DebertaV2Model,
DebertaV2PreTrainedModel,
)
@dataclass
class XGECToROutput(ModelOutput):
"""
Output type of `XGECToRForTokenClassification.forward()`.
loss (`torch.FloatTensor`, optional)
logits_correction (`torch.FloatTensor`) : The correction logits for each token.
logits_detection (`torch.FloatTensor`) : The detection logits for each token.
hidden_states (`Tuple[torch.FloatTensor]`, optional)
attentions (`Tuple[torch.FloatTensor]`, optional)
"""
loss: Optional[torch.FloatTensor] = None
logits_correction: torch.FloatTensor = None
logits_detection: torch.FloatTensor = None
hidden_states: Optional[Tuple[torch.FloatTensor]] = None
attentions: Optional[Tuple[torch.FloatTensor]] = None
class XGECToRDebertaV3(DebertaV2PreTrainedModel):
"""
This class overrides the GECToR model to include an error detection head in addition to the token classification head.
"""
_keys_to_ignore_on_load_unexpected = [r"pooler"]
_keys_to_ignore_on_load_missing = [r"position_ids"]
def __init__(self, config):
super().__init__(config)
self.num_labels = config.num_labels
self.unk_tag_idx = config.label2id.get("@@UNKNOWN@@", None)
self.deberta = DebertaV2Model(config)
self.classifier = nn.Linear(config.hidden_size, config.num_labels)
if self.unk_tag_idx is not None:
self.error_detector = nn.Linear(config.hidden_size, 3)
else:
self.error_detector = nn.Linear(config.hidden_size, 2)
def forward(
self,
input_ids=None,
attention_mask=None,
token_type_ids=None,
position_ids=None,
inputs_embeds=None,
labels=None,
output_attentions=None,
output_hidden_states=None,
return_dict=None,
):
r"""
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
Labels for computing the token classification loss. Indices should be in `[0, ..., config.num_labels - 1]`.
"""
return_dict = (
return_dict if return_dict is not None else self.config.use_return_dict
)
outputs = self.deberta(
input_ids,
attention_mask=attention_mask,
token_type_ids=token_type_ids,
position_ids=position_ids,
inputs_embeds=inputs_embeds,
output_attentions=output_attentions,
output_hidden_states=output_hidden_states,
return_dict=return_dict,
)
sequence_output = outputs[0]
logits_correction = self.classifier(sequence_output)
logits_detection = self.error_detector(sequence_output)
loss = None
if labels is not None:
loss_fct = CrossEntropyLoss()
loss = loss_fct(
logits_correction.view(-1, self.num_labels), labels.view(-1)
)
labels_detection = torch.ones_like(labels)
labels_detection[labels == 0] = 0
labels_detection[labels == -100] = -100 # ignore padding
if self.unk_tag_idx is not None:
labels_detection[labels == self.unk_tag_idx] = 2
loss_detection = loss_fct(
logits_detection.view(-1, 3), labels_detection.view(-1)
)
else:
loss_detection = loss_fct(
logits_detection.view(-1, 2), labels_detection.view(-1)
)
loss += loss_detection
if not return_dict:
output = (
logits_correction,
logits_detection,
) + outputs[2:]
return ((loss,) + output) if loss is not None else output
return XGECToROutput(
loss=loss,
logits_correction=logits_correction,
logits_detection=logits_detection,
hidden_states=outputs.hidden_states,
attentions=outputs.attentions,
)
def get_input_embeddings(self):
return self.deberta.get_input_embeddings()
def set_input_embeddings(self, value):
self.deberta.set_input_embeddings(value)
config = AutoConfig.from_pretrained("manred1997/deberta-v3-large-lemon-spell_5k")
tokenizer = AutoTokenizer.from_pretrained("manred1997/deberta-v3-large-lemon-spell_5k")
model = XGECToRDeberta.from_pretrained(
"manred1997/deberta-v3-large-lemon-spell_5k", config=config
)
✨ 主要特性
- 精准纠错:能够准确检测并纠正英文文本中的常见语法错误。
- 可微调性:可以针对特定领域(如学术写作、商务沟通等)进行微调,以提高特定语境下的纠错精度。
📚 详细文档
模型详情
模型描述
本模型是一个语法错误纠正(GEC)系统,基于microsoft/deberta-v3-large
模型进行微调。它旨在检测并纠正英文文本中的语法错误,专注于常见的语法错误类型,如动词时态、名词词形变化、形容词用法等。该模型对于语言学习者或需要提高语法准确性的应用程序特别有用。
属性 | 详情 |
---|---|
模型类型 | 带有序列到序列纠正的标记分类 |
适用语言 | 英文 |
微调基础模型 | microsoft/deberta-v3-large |
用途
直接使用
该模型可直接用于检测和纠正英文文本中的语法错误,非常适合集成到写作助手、教育软件或校对工具中。
下游使用
可以针对特定领域(如学术写作、商务沟通或非正式文本纠正)对模型进行微调,以确保在特定语境下对语法错误的高精度纠正。
不适用场景
本模型不适用于非英文文本、非语法纠正(如风格、语气或逻辑),或检测超出基本语法结构的复杂错误。
偏差、风险和局限性
该模型在通用英文语料库上进行训练,对于非标准方言(如口语)或特定领域的行话可能表现不佳。由于训练数据的局限性,在这些语境中应用时,可能会引入或忽略一些错误。
建议
尽管该模型在一般情况下表现出色,但用户应手动审查纠正结果,特别是在专业或创造性语境中,因为这些语境中的语法规则可能更加灵活。
🔧 技术细节
训练详情
训练数据
模型的训练分为三个阶段,每个阶段需要特定的数据集。以下是每个阶段使用的数据描述:
阶段 | 使用的数据集 | 描述 |
---|---|---|
阶段 1 | 来自PIE语料库(仅A1部分)的900万条打乱句子 | 来自PIE语料库的900万条打乱句子,专注于A1级别的句子。 |
阶段 2 | NUCLE、FCE、Lang8、W&I + Locness数据集的打乱组合 | Lang8数据集包含947,344条句子,其中52.5%的源句子和目标句子不同。如果使用较新的Lang8转储,请考虑进行采样。 |
阶段 3 | W&I + Locness数据集的最终打乱版本 | W&I + Locness数据集的最终打乱版本。 |
评估
测试数据、因素和指标
测试数据
模型在W&I + Locness测试集上进行了测试,这是语法错误纠正的标准基准。
指标
主要使用的评估指标是F0.5,用于衡量模型正确识别和修复语法错误的能力。
结果
F0.5 = 74.61
Indonesian Roberta Base Posp Tagger
MIT
这是一个基于印尼语RoBERTa模型微调的词性标注模型,在indonlu数据集上训练,用于印尼语文本的词性标注任务。
序列标注
Transformers 其他

I
w11wo
2.2M
7
Bert Base NER
MIT
基于BERT微调的命名实体识别模型,可识别四类实体:地点(LOC)、组织机构(ORG)、人名(PER)和杂项(MISC)
序列标注 英语
B
dslim
1.8M
592
Deid Roberta I2b2
MIT
该模型是基于RoBERTa微调的序列标注模型,用于识别和移除医疗记录中的受保护健康信息(PHI/PII)。
序列标注
Transformers 支持多种语言

D
obi
1.1M
33
Ner English Fast
Flair自带的英文快速4类命名实体识别模型,基于Flair嵌入和LSTM-CRF架构,在CoNLL-03数据集上达到92.92的F1分数。
序列标注
PyTorch 英语
N
flair
978.01k
24
French Camembert Postag Model
基于Camembert-base的法语词性标注模型,使用free-french-treebank数据集训练
序列标注
Transformers 法语

F
gilf
950.03k
9
Xlm Roberta Large Ner Spanish
基于XLM-Roberta-large架构微调的西班牙语命名实体识别模型,在CoNLL-2002数据集上表现优异。
序列标注
Transformers 西班牙语

X
MMG
767.35k
29
Nusabert Ner V1.3
MIT
基于NusaBert-v1.3在印尼语NER任务上微调的命名实体识别模型
序列标注
Transformers 其他

N
cahya
759.09k
3
Ner English Large
Flair框架内置的英文4类大型NER模型,基于文档级XLM-R嵌入和FLERT技术,在CoNLL-03数据集上F1分数达94.36。
序列标注
PyTorch 英语
N
flair
749.04k
44
Punctuate All
MIT
基于xlm-roberta-base微调的多语言标点符号预测模型,支持12种欧洲语言的标点符号自动补全
序列标注
Transformers

P
kredor
728.70k
20
Xlm Roberta Ner Japanese
MIT
基于xlm-roberta-base微调的日语命名实体识别模型
序列标注
Transformers 支持多种语言

X
tsmatz
630.71k
25
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98