2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
In hodiernae lingua naturali processus (NLP) campi, cognitio animi motus maximi momenti est applicationis missionis. Utrum in agro intelligentis servitii emptoris, analysi socialis instrumentorum, an motus computandi, accurate cognoscendi motus utentium utentium experientiae et intellegentiae gradum systematis valde emendare possint. BERT (Repraesentationes Bidirectionales Encoder a Transformers), ut praevalens exemplar linguae praeexercitatae, suam egregiam in multiplicibus NLP operibus adimpletionem demonstravit. In hoc blog, singillatim introducebimus quomodo exemplar BERTI utendum est ad agnitionem sermonis affecti consequendam quae in compage MindSpore fundata est. Adiuva te hanc technicam cum gradatim codice exemplis et explicationibus accuratis vince.
BERT (Repraesentationes Bidirectionales Encoder a Transformers) est Transformer-substructio exemplar repraesentationis bidirectionis encoder. Praecipue verbum ac sententiam capit repraesentationes campestres per duo opera praevia: Masked Language Model (MLM) et Praedictio proxima sententiae (NSP).
Post BERT est praeexercitatus, adhiberi potest pro variis amni operibus, ut textus classificationis, similitudo iudicii, lectionis comprehensionis, etc.
In parasceve notitiarum parte emissae et deprimendae sunt chat robot notitiae compositae per turmas Baidu Feipiao. Dataset haec preprocessa est et pittacia motus continet. Omnis ordo notitiarum ex pittacio et textu verbi segmenti consistit. Titulus categoriae passionis repraesentat (0 significat negativum, 1 neutrum significat, 2 significat positivum), et textus est contentus colloquio utentis. Hac data structa utentes, opi- nionem classificationis officia commodius praestare possumus.
# 下载数据集
!wget https://baidu-nlp.bj.bcebos.com/emotion_detection-dataset-1.0.0.tar.gz -O emotion_detection.tar.gz
!tar xvf emotion_detection.tar.gz
Data forma paroecia talis est:
label--text_a
0--谁骂人了?我从来不骂人,我骂的都不是人,你是人吗 ?
1--我有事等会儿就回来和你聊
2--我见到你很高兴谢谢你帮我
Datae onerationis et praeprocessionis gradus cruciales sunt in processu discendi apparatus.utendum estGeneratorDataset
notitias onerare et operationibus destinatis uti, ut textum convertat in formam acceptam ad exemplar.In specie, utendum estBertTokenizer
Textum in vocabularium ID signare et in operando codex conficere. Propositum hoc est curare ut longitudo omnium sequentium initus consistat, ita ut efficientiam et exemplar exerceat in melius exercitatione.
import numpy as np
from mindspore.dataset import text, GeneratorDataset, transforms
from mindnlp.transformers import BertTokenizer
def process_dataset(source, tokenizer, max_seq_len=64, batch_size=32, shuffle=True):
is_ascend = mindspore.get_context('device_target') == 'Ascend'
column_names = ["label", "text_a"]
dataset = GeneratorDataset(source, column_names=column_names, shuffle=shuffle)
type_cast_op = transforms.TypeCast(mindspore.int32)
def tokenize_and_pad(text):
if is_ascend:
tokenized = tokenizer(text, padding='max_length', truncation=True, max_length=max_seq_len)
else:
tokenized = tokenizer(text)
return tokenized['input_ids'], tokenized['attention_mask']
dataset = dataset.map(operations=tokenize_and_pad, input_columns="text_a", output_columns=['input_ids', 'attention_mask'])
dataset = dataset.map(operations=[type_cast_op], input_columns="label", output_columns='labels')
if is_ascend:
dataset = dataset.batch(batch_size)
else:
dataset = dataset.padded_batch(batch_size, pad_info={'input_ids': (None, tokenizer.pad_token_id), 'attention_mask': (None, 0)})
return dataset
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
dataset_train = process_dataset(SentimentDataset("data/train.tsv"), tokenizer)
dataset_val = process_dataset(SentimentDataset("data/dev.tsv"), tokenizer)
dataset_test = process_dataset(SentimentDataset("data/test.tsv"), tokenizer, shuffle=False)
In exemplar aedificium parte usi sumusBertForSequenceClassification
ad passionis genus munia praestare. Hoc exemplar prae-exercitatum in corpora magnalia exercitata est et linguas validas facultates intelligendi habet. Oneratisque praevia ponderibus exercitatis, signanter emendare possumus exemplar agendi in muneribus classificationis passionis. Eodem tempore utimur auto mixta subtilitate technologia, quae non solum accelerat processum disciplinae, sed etiam usum memoriae memoriae reducit, eo quod plus efficientis disciplinae sub limitibus hardware facultatibus assequatur.
Optimizeri et aestimatio metrica magni momenti sunt in disciplina exemplaris. Adamum optimizer propter excellentem eius observantiam elegimus, cum de magna-scalarum notitia et multiplicibus exemplaribus ageremus. In indicibus aestimationis, accurate utimur ad exemplar faciendum metiendum. His uncinis efficere possumus ut exemplar semper optimized in disciplina et perficiendo bonum obtineat in convalidatione statuto.
Munera callback magni ponderis partes agunt in processu disciplinae exemplari. Duo munera callback constituimus:CheckpointCallback
etBestModelCallback
. Illa regulariter pondus servandi exemplaris adhibetur, haec automatice pondera optimorum exemplarium faciendorum onerat. Per has functiones callbackas dabimus operam ut exemplar magni momenti in disciplina parametri non amittatur et optimum exemplar faciendo semper adhibeatur ad coniecturam et aestimationem.
from mindnlp.transformers import BertForSequenceClassification
from mindspore import nn
from mindnlp._legacy.amp import auto_mixed_precision
model = BertForSequenceClassification.from_pretrained('bert-base-chinese', num_labels=3)
model = auto_mixed_precision(model, 'O1')
optimizer = nn.Adam(model.trainable_params(), learning_rate=2e-5)
metric = Accuracy()
ckpoint_cb = CheckpointCallback(save_path='checkpoint', ckpt_name='bert_emotect', epochs=1, keep_checkpoint_max=2)
best_model_cb = BestModelCallback(save_path='checkpoint', ckpt_name='bert_emotect_best', auto_load=True)
trainer = Trainer(network=model, train_dataset=dataset_train,
eval_dataset=dataset_val, metrics=metric,
epochs=5, optimizer=optimizer, callbacks=[ckpoint_cb, best_model_cb])
trainer.run(tgt_columns="labels")
In sectione convalidationis exemplaris utimur convalidatione dataset ad exemplar faciendum aestimandum. Ponendo subtiliter exemplar exemplar in convalidationis statuto, possumus comprehendere facultatem generalem et actualem effectum exemplaris. Hic gradus magni momenti est quod nos adiuvare potest problemata possibilium in processu disciplinarum exemplarium detegere et congruere adaptationes et optimizationes.
evaluator = Evaluator(network=model, eval_dataset=dataset_test, metrics=metric)
evaluator.run(tgt_columns="labels")
Exemplar consequentiae sectionis ostendit quomodo utatur exemplo erudito ad opi- nionem classificationem de novis data praestandis.Nos definivimuspredict
Munus, quod passionem praesagium exercet in inputando textu et exitu praenuntiationis eventus. Hic gradus demonstrat applicationem facultatum exemplarium practicarum et certificat effectionem generalem exemplaris.
dataset_infer = SentimentDataset("data/infer.tsv")
def predict(text, label=None):
label_map = {0: "消极", 1: "中性", 2: "积极"}
text_tokenized = Tensor([tokenizer(text).input_ids])
logits = model(text_tokenized)
predict_label = logits[0].asnumpy().argmax()
info = f"inputs: '{text}', predict: '{label_map[predict_label]}'"
if label is not None:
info += f" , label: '{label_map[label]}'"
print(info)
for label, text in dataset_infer:
predict(text, label)
Demum ostendimus quomodo usus sit exemplo motus recognitionis de consuetudine input. Hic gradus non solum demonstrat applicationem facultatum exemplarium practicam, sed etiam probat exsecutionem exemplaris sub diversis inputibus. Hoc modo ulterius intellegere possumus facultatem generalem et effectum exemplar actu.
predict("家人们咱就是说一整个无语住了 绝绝子叠buff")