【机器学习】人工智能典型应用:班组工作日志转绩效类型
應(yīng)用背景:
通信運檢一班績效的機制是利用每天的工作日志,將工作內(nèi)容按照《一線班組工作積分制考核實施方案(20190108修訂)》中的工作基本額定標(biāo)準(zhǔn)庫進行對應(yīng),就可以知道每天的工分,每月工分相加就是每位員工的核心工作積分。部分工作日志如下圖所示。
其中最有價值的部分是工作內(nèi)容這一列。平時班組的績效員根據(jù)自己的經(jīng)驗將工作內(nèi)容和《工作基本額定標(biāo)準(zhǔn)庫》進行人工一一對應(yīng),部分標(biāo)準(zhǔn)庫如下圖所示。
此人工過程相當(dāng)費時費力,如果能用人工智能解決工作內(nèi)容和工作基本額定標(biāo)準(zhǔn)庫的智能對應(yīng),將大大提升績效評定工作的效率。
數(shù)據(jù)集和標(biāo)簽:
選取一班今年1月的數(shù)據(jù)進行實驗:
將數(shù)據(jù)人工打上標(biāo)簽,標(biāo)簽一定不能打錯,否則會影響模型最終的判斷。平時普通的人工方法其實就是人工打標(biāo)簽的過程,此過程非常耗時,亟待優(yōu)化。打好標(biāo)簽的數(shù)據(jù)如下圖所示。
只需要建立深度學(xué)習(xí)模型將這個對應(yīng)關(guān)系學(xué)習(xí)出來,就可以利用深度學(xué)習(xí)模型對沒有打標(biāo)簽的日志表,自動打上標(biāo)簽。以前1小時的工作量可以縮短為5分鐘(登陸人工智能平臺,上傳數(shù)據(jù),運行,得到結(jié)果),大大提升績效評定工作的效率。
人工智能自然語言處理介紹:
自然語言處理的核心是通過編程設(shè)計讓系統(tǒng)模仿人的智能去處理各項工作,這是使得新時期的文本分類工作開始朝著自動化、智能化方向發(fā)展的關(guān)鍵。
從數(shù)學(xué)的角度來看,文本分類工作其實只不過是一個映射的過程??梢砸粚σ坏挠成?#xff0c;把一些被表明類別的文本信息映射到現(xiàn)有的種類當(dāng)中,完成分類工作。也可以一對多的映射,比如,有些文本當(dāng)中既有這種類別的特征,也含有其他類別的分類特征,因此需要將同一個文本分別存放在不同的類別中。所以在文本分類中,可以看作是一個集合的值映射到一個矩陣上。將相同類別的文本劃入同一個矩陣當(dāng)中,就完成了基礎(chǔ)的文本分類工作。
模型選擇:
本次項目選用的模型是百度PaddleHub中的ERNIE模型。
ERNIE通過建模海量數(shù)據(jù)中的詞、實體及實體關(guān)系,學(xué)習(xí)真實世界的語義知識。相較于BERT學(xué)習(xí)原始語言信號,ERNIE直接對先驗語義知識單元進行建模,增強了模型語義表示能力,以Transformer為網(wǎng)絡(luò)基本組件,以Masked Bi-Language Model和Next Sentence Prediction為訓(xùn)練目標(biāo),通過預(yù)訓(xùn)練得到通用語義表示,再結(jié)合簡單的輸出層,應(yīng)用到下游的NLP任務(wù),在多個任務(wù)上取得了SOTA的結(jié)果。其可用于文本分類、序列標(biāo)注、閱讀理解等任務(wù)。預(yù)訓(xùn)練數(shù)據(jù)集為百科類、資訊類、論壇對話類數(shù)據(jù)等中文語料。
啟動項目:
在ai studio中新建項目,上傳打好標(biāo)簽的數(shù)據(jù)和沒打標(biāo)簽需要預(yù)測的數(shù)據(jù)。
日志轉(zhuǎn)績效類型.xlsx中的數(shù)據(jù)如下圖所示。
預(yù)測.xlsx中的數(shù)據(jù)如下圖所示。
程序編寫:
導(dǎo)包:
import csv import paddle import pandas as pd import paddlehub as hub from paddlehub.datasets.base_nlp_dataset import InputExample,TextClassificationDataset數(shù)據(jù)導(dǎo)入:
DATA_DIR = "./work" data = pd.read_excel("./work/日志轉(zhuǎn)績效類型.xlsx") data.to_csv("./work/train1.csv",index=None) test = pd.read_excel("./work/預(yù)測.xlsx") test.to_csv("./work/test1.csv",index=None)模型建立:
classes = list(data.iloc[:,1].unique()) #把第二列的類型找出來,也就是最后要輸出的類別 model = hub.Module(name="ernie", task="seq-cls", num_classes = len(classes)) #ERNIE通過建模海量數(shù)據(jù)中的詞、實體及實體關(guān)系,學(xué)習(xí)真實世界的語義知識。 #task任務(wù)名稱,可為seq-cls文本分類任務(wù) #num_classes:分類任務(wù)的類別數(shù)數(shù)據(jù)加載:
class classifi(TextClassificationDataset):label_list = classesdef __init__(self, tokenizer, max_seq_len: int = 128, mode: str = "train"):if mode == "train":data_file = "train1.csv"elif mode == "test":data_file = "test1.csv"else:data_file = "dev.csv"super().__init__(base_path=DATA_DIR,data_file=data_file,tokenizer=tokenizer, max_seq_len=max_seq_len, mode=mode,is_file_with_header=True,label_list=self.label_list)def _read_file(self, input_file, is_file_with_header: bool = False) :with open(input_file,'r',encoding='UTF-8') as f:examples = []seq_id =0reader = csv.reader(f,delimiter = ',')header = next(reader) if is_file_with_header else Nonefor line in reader:example = InputExample(guid=seq_id, text_a=line[0],label=line[1])seq_id += 1examples.append(example)return examplestrain_dataset = classifi(model.get_tokenizer(),mode = 'train',max_seq_len=128)選擇優(yōu)化器和運行配置:
optimizer = paddle.optimizer.Adam(parameters=model.parameters(),learning_rate=1e-5) trainer = hub.Trainer(model,optimizer=optimizer,checkpoint_dir='./check_point',use_gpu=True)模型訓(xùn)練:
trainer.train(train_dataset,epochs=20,batch_size=10,save_interval=4)acc即是accuracy準(zhǔn)確度,準(zhǔn)確度高達96%,沒到100%的原因是訓(xùn)練的數(shù)據(jù)集不夠大,模型還沒有看完所有的情況。也就是只要他見過的類似題他就一定解得出,沒過類似題的,就有小概率會解錯。
模型預(yù)測:
#預(yù)測 label_map = {idx:label for idx,label in enumerate(classifi.label_list)} data = pd.read_csv("./work/test1.csv",delimiter=',',header=None) data.columns = ['預(yù)測輸入']#得到預(yù)測數(shù)據(jù)中的字符串組成列表 text = [[i[0]] for i in data.values ]#讀取模型 model_train = hub.Module(name="ernie", task="seq-cls",load_checkpoint = "./check_point/epoch_20/model.pdparams",label_map = label_map)result=model_train.predict(text,max_seq_len = 128, batch_size=1,use_gpu = True) #data:待預(yù)測數(shù)據(jù) #max_seq_len:模型處理文本的最大長度 #batch_size:模型批處理大小 #use_gpu:是否使用gpu,默認(rèn)為False。對于GPU用戶,建議開啟use_gpudata['預(yù)測結(jié)果'] = result data.to_csv("a.csv",index = None,sep = ',')在生成的a.csv中即可得到利用模型去預(yù)測的結(jié)果。
本次實驗結(jié)果如下圖所示:
肉眼可見準(zhǔn)確率近乎100%,想要達到完全100%的效果只需要找出預(yù)測錯誤的項,將正確的標(biāo)簽加入日志轉(zhuǎn)績效類型.xlsx文件重新訓(xùn)練模型,即可達到準(zhǔn)確率100%效果。
項目總結(jié):
在平時工作中,文本分類的場景非常普遍,只要大家善于發(fā)現(xiàn)場景,重視數(shù)據(jù)的收集和提煉,再結(jié)合人工智能技術(shù),就可以達到事半功倍的效果,效率呈幾何級增長。
希望各位同事留意梳理應(yīng)用場景,提升數(shù)據(jù)收集處理意識。
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機器學(xué)習(xí)課程》視頻課黃海廣老師《機器學(xué)習(xí)課程》711頁完整版課件本站qq群554839127,加入微信群請掃碼:
總結(jié)
以上是生活随笔為你收集整理的【机器学习】人工智能典型应用:班组工作日志转绩效类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10死机频繁怎么解决
- 下一篇: Vue里引入three.js