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