国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

網(wǎng)站做短信接口具體方法正規(guī)的關(guān)鍵詞優(yōu)化軟件

網(wǎng)站做短信接口具體方法,正規(guī)的關(guān)鍵詞優(yōu)化軟件,河南百度推廣電話,高職高專網(wǎng)站建設(shè)與維護一、簡介: BERT全稱是來自變換器的雙向編碼器表征量(Bidirectional Encoder Representations from Transformers),它是Google于2018年末開發(fā)并發(fā)布的一種新型語言模型。與BERT模型相似的預(yù)訓(xùn)練語言模型例如問答、命名實體識別、自…

一、簡介:

BERT全稱是來自變換器的雙向編碼器表征量(Bidirectional Encoder Representations from Transformers),它是Google于2018年末開發(fā)并發(fā)布的一種新型語言模型。與BERT模型相似的預(yù)訓(xùn)練語言模型例如問答、命名實體識別、自然語言推理、文本分類等在許多自然語言處理任務(wù)中發(fā)揮著重要作用。模型是基于Transformer中的Encoder并加上雙向的結(jié)構(gòu),因此一定要熟練掌握Transformer的Encoder的結(jié)構(gòu)。

BERT模型的主要創(chuàng)新點都在pre-train方法上,即用了Masked Language Model和Next Sentence Prediction兩種方法分別捕捉詞語和句子級別的representation。

在用Masked Language Model方法訓(xùn)練BERT的時候,隨機把語料庫中15%的單詞做Mask操作。對于這15%的單詞做Mask操作分為三種情況:80%的單詞直接用[Mask]替換、10%的單詞直接替換成另一個新的單詞、10%的單詞保持不變。

因為涉及到Question Answering (QA) 和 Natural Language Inference (NLI)之類的任務(wù),增加了Next Sentence Prediction預(yù)訓(xùn)練任務(wù),目的是讓模型理解兩個句子之間的聯(lián)系。與Masked Language Model任務(wù)相比,Next Sentence Prediction更簡單些,訓(xùn)練的輸入是句子A和B,B有一半的幾率是A的下一句,輸入這兩個句子,BERT模型預(yù)測B是不是A的下一句。

BERT預(yù)訓(xùn)練之后,會保存它的Embedding table和12層Transformer權(quán)重(BERT-BASE)或24層Transformer權(quán)重(BERT-LARGE)。使用預(yù)訓(xùn)練好的BERT模型可以對下游任務(wù)進行Fine-tuning,比如:文本分類、相似度判斷、閱讀理解等。

二、環(huán)境準備:

在導(dǎo)入包之前,首先咱們要確定已經(jīng)在實驗的環(huán)境中安裝了mindspore和mindnlp:mindspore的安裝可以參考昇思25天學(xué)習打卡營第1天|快速入門-CSDN博客,mindnlp的安裝則直接運行下面的命令即可:

pip install mindnlp==0.3.1

安裝完成之后,導(dǎo)入我們下面訓(xùn)練需要的包:

import os
import timeimport mindspore
from mindspore.dataset import text, GeneratorDataset, transforms
from mindspore import nn, contextfrom mindnlp._legacy.engine import Trainer, Evaluator
from mindnlp._legacy.engine.callbacks import CheckpointCallback, BestModelCallback
from mindnlp._legacy.metrics import Accuracy

三、數(shù)據(jù)集:

1、數(shù)據(jù)集下載:

這里使用的是來自于百度飛槳的一份已標注的、經(jīng)過分詞預(yù)處理的機器人聊天數(shù)據(jù)集。數(shù)據(jù)由兩列組成,以制表符('\t')分隔,第一列是情緒分類的類別(0表示消極;1表示中性;2表示積極),第二列是以空格分詞的中文文本,如下示例,文件為 utf8 編碼。

label--text_a

0--誰罵人了?我從來不罵人,我罵的都不是人,你是人嗎 ?

1--我有事等會兒就回來和你聊

2--我見到你很高興謝謝你幫我

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

2、數(shù)據(jù)預(yù)處理:

新建 process_dataset 函數(shù)用于數(shù)據(jù)加載和數(shù)據(jù)預(yù)處理:

import numpy as npdef 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)# transformstype_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']# map datasetdataset = 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')# batch datasetif 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

昇騰NPU環(huán)境下暫不支持動態(tài)Shape,數(shù)據(jù)預(yù)處理部分采用靜態(tài)Shape處理,也就是說數(shù)據(jù)預(yù)處理階段需要采用固定的數(shù)據(jù)形狀。

定義bert的分詞器:

from mindnlp.transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
tokenizer.pad_token_id

將數(shù)據(jù)集劃分為訓(xùn)練集、開發(fā)集和測試集:

class SentimentDataset:"""Sentiment Dataset"""def __init__(self, path):self.path = pathself._labels, self._text_a = [], []self._load()def _load(self):with open(self.path, "r", encoding="utf-8") as f:dataset = f.read()lines = dataset.split("\n")for line in lines[1:-1]:label, text_a = line.split("\t")self._labels.append(int(label))self._text_a.append(text_a)def __getitem__(self, index):return self._labels[index], self._text_a[index]def __len__(self):return len(self._labels)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)dataset_train.get_col_names()
print(next(dataset_train.create_tuple_iterator()))

四、模型構(gòu)建:

通過 BertForSequenceClassification 構(gòu)建用于情感分類的 BERT 模型,加載預(yù)訓(xùn)練權(quán)重,設(shè)置情感三分類的超參數(shù)自動構(gòu)建模型。后面對模型采用自動混合精度操作,提高訓(xùn)練的速度,然后實例化優(yōu)化器,緊接著實例化評價指標,設(shè)置模型訓(xùn)練的權(quán)重保存策略,最后就是構(gòu)建訓(xùn)練器,模型開始訓(xùn)練。

from mindnlp.transformers import BertForSequenceClassification, BertModel
from mindnlp._legacy.amp import auto_mixed_precision# set bert config and define parameters for training
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()
# define callbacks to save checkpoints
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])%%time
# start training
trainer.run(tgt_columns="labels")

五、模型驗證:

將驗證數(shù)據(jù)集加再進訓(xùn)練好的模型,對數(shù)據(jù)集進行驗證,查看模型在驗證數(shù)據(jù)上面的效果,此處的評價指標為準確率。

evaluator = Evaluator(network=model, eval_dataset=dataset_test, metrics=metric)
evaluator.run(tgt_columns="labels")

六、模型推理:

遍歷推理數(shù)據(jù)集,將結(jié)果與標簽進行統(tǒng)一展示。

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)from mindspore import Tensorfor label, text in dataset_infer:predict(text, label)

輸入一句話測試一下(doge):

predict("家人們咱就是說一整個無語住了 絕絕子疊buff")

http://m.aloenet.com.cn/news/35495.html

相關(guān)文章:

  • 多用戶智能網(wǎng)站建設(shè)源碼洛陽網(wǎng)站seo
  • 聊城開發(fā)區(qū)建設(shè)局網(wǎng)站湖南專業(yè)關(guān)鍵詞優(yōu)化服務(wù)水平
  • 公務(wù)員 做網(wǎng)站 違法網(wǎng)站制作網(wǎng)站推廣
  • 手機網(wǎng)站改版公司百度關(guān)鍵詞熱度查詢工具
  • 做電影網(wǎng)站模板教學(xué)網(wǎng)站制作設(shè)計
  • 專做醫(yī)藥中間體的網(wǎng)站今天微博熱搜前十名
  • 幫一個企業(yè)做網(wǎng)站流程seo線上培訓(xùn)班
  • 效果圖在線制作重慶seo俱樂部
  • Iis 建網(wǎng)站為什么說沒有該用戶seo推廣顧問
  • 做電玩城設(shè)計的網(wǎng)站關(guān)鍵詞優(yōu)化公司
  • 如何搭建一個視頻網(wǎng)站互聯(lián)網(wǎng)營銷專業(yè)
  • 如何在公司網(wǎng)站上添加內(nèi)容微信朋友圈產(chǎn)品推廣語
  • 服裝網(wǎng)站建設(shè)與實現(xiàn)西安seo顧問公司
  • 電商網(wǎng)站開發(fā)平臺實驗河南搜索引擎優(yōu)化
  • 百度優(yōu)化網(wǎng)站建設(shè)網(wǎng)站制作多少錢
  • 村網(wǎng)站建設(shè)計劃書深圳專業(yè)建站公司
  • 網(wǎng)站開發(fā)需要幾個人企業(yè)網(wǎng)址怎么注冊
  • 河北建設(shè)廳注冊中心網(wǎng)站長沙做優(yōu)化的公司
  • 做網(wǎng)站順序搜索引擎優(yōu)化排名seo
  • 南京網(wǎng)站的優(yōu)化石景山區(qū)百科seo
  • wordpress七牛加密怎樣優(yōu)化網(wǎng)站排名靠前
  • 電子商務(wù)網(wǎng)站建設(shè)的核心是長沙做網(wǎng)絡(luò)推廣公司的
  • 自建網(wǎng)站如何上傳視頻市場營銷策劃書
  • wordpress php學(xué)習廣州網(wǎng)站快速排名優(yōu)化
  • 網(wǎng)站建設(shè)策劃書競價網(wǎng)絡(luò)推廣
  • 網(wǎng)站用途說明全國疫情實時動態(tài)
  • 汕頭網(wǎng)站建設(shè)系統(tǒng)學(xué)校網(wǎng)站建設(shè)
  • 做房產(chǎn)抵押網(wǎng)站需要什么手續(xù)互動營銷經(jīng)典案例
  • 靜態(tài)網(wǎng)站畢業(yè)論文東莞排名優(yōu)化團隊
  • 門戶營銷型網(wǎng)站搭建北京建設(shè)網(wǎng)站公司