韓亞紅
【摘要】物料編碼是ERP的基礎(chǔ),通過(guò)大數(shù)據(jù)分類算法,對(duì)物料進(jìn)行自動(dòng)分類,提高物料編碼管理工作效率。本文基于Python實(shí)現(xiàn)物料的自動(dòng)分類。
【關(guān)鍵詞】物料編碼、物料分類、大數(shù)據(jù)、Python
1引言
物料是在ERP的基礎(chǔ),物料編碼是以簡(jiǎn)短的文字、符合或數(shù)字、號(hào)碼來(lái)代表物料、品名、規(guī)格或類別等其他有關(guān)事項(xiàng)的一種管理工具。在編碼過(guò)程中,需要對(duì)物料進(jìn)行分類,并給出相應(yīng)的編碼,由于不同員工對(duì)物料分類有不同的理解,出錯(cuò)率也時(shí)常發(fā)生。實(shí)驗(yàn)表明,通過(guò)大數(shù)據(jù)技術(shù)快速對(duì)物料進(jìn)行分類,可節(jié)約人力,避免人工分類帶來(lái)的錯(cuò)誤率高、效率低等諸多問(wèn)題。
本文基于Python語(yǔ)言,結(jié)合第三方庫(kù)jieba和panda庫(kù),實(shí)現(xiàn)物料的自動(dòng)分類。
2物料分類流程及相關(guān)技術(shù)
物料分類實(shí)際是短中文文本分類問(wèn)題,分類問(wèn)題的主要目標(biāo)是確定新數(shù)據(jù)所屬的類別。分類是給定一堆樣本數(shù)據(jù),以及這些數(shù)據(jù)所屬的類別標(biāo)簽,通過(guò)算法來(lái)預(yù)測(cè)新數(shù)據(jù)的類別。
物料分類步驟主要有1.預(yù)處理(中文文本分詞)2. 關(guān)鍵詞(對(duì)樣本數(shù)據(jù)進(jìn)行詞頻統(tǒng)計(jì),獲取關(guān)鍵詞)3、分類器。
2.1物料預(yù)處理
對(duì)中文文本進(jìn)行分類,主要是分詞。文本分詞采用結(jié)巴分詞(jieba)庫(kù)實(shí)現(xiàn),結(jié)巴分詞有三種分詞模式:全模式、精確模式和搜索引擎模式。針對(duì)物料名稱短而精的特點(diǎn),本文采用了精確模式對(duì)物料進(jìn)行分詞。代碼和結(jié)果如下:
import jieba
import pandas as pd
txt=pd.read_excel(“C:\\Users\\shiyan.xlsx”)
for name in txt[“名稱”]:
words=jieba.lcut(name)
print(words)
[‘不銹鋼’, ‘清潔劑’][‘防爆’, ‘內(nèi)燃’, ‘叉車’]
2.2關(guān)鍵詞
物料編碼原先設(shè)定為按照類別、大類、中類、小類規(guī)則進(jìn)行人工編碼,所以樣本數(shù)據(jù)已經(jīng)有了分類,在已有的類別碼基礎(chǔ)上利用結(jié)巴分詞庫(kù)和extract_tags函數(shù)獲取此類別的關(guān)鍵詞。
實(shí)現(xiàn)思路為:TF-IDF文本關(guān)鍵詞抽取方法流程
(1)利用EXCEL將同一分類下的物料進(jìn)行拼接,形成文本D。
(2)對(duì)給定的文本D進(jìn)行分詞,磁性標(biāo)注和去除停用詞等數(shù)據(jù)預(yù)處理操作,獲得n個(gè)候選關(guān)鍵詞D=【t1,t2….tn】
(3)計(jì)算詞語(yǔ)ti在文本D中詞頻
(4)計(jì)算詞語(yǔ)ti在整個(gè)語(yǔ)料的IDF=log(Dn/(Dt+1))
(5)計(jì)算獲取詞語(yǔ)ti的TF-IDF
(6)對(duì)關(guān)鍵詞計(jì)算結(jié)果進(jìn)行倒序排列,獲得排名前的TOPN個(gè)詞匯作為文本關(guān)鍵詞。
利用jieba. analyse庫(kù)中extract_tags實(shí)現(xiàn),代碼和結(jié)果如下:
txt=pd.read_excel("C:\\Users\\5510387hyh\\Desktop\\物料分類.xlsx")
for name in txt["名稱"]:
word=jieba.analyse.extract_tags(name,topK=3)
物料類別 名稱 關(guān)鍵詞
420350700 砂輪磨頭砂輪磨頭磨頭磨頭磨削工具磨削工具百潔布磨頭鎢鋼滾磨刀鎢鋼滾磨刀磨削針具金剛石磨頭 ['磨頭', '磨削', '鎢鋼']
2.3文本分類
常用的分類算法:K-最近鄰發(fā)KNN,決策樹(shù)分類法,貝葉斯分類算法,支持向量機(jī)的分類器,神經(jīng)網(wǎng)絡(luò),模糊分類法等。本文采用貝葉斯分類器進(jìn)行分類,貝葉斯分類的思想:?jiǎn)为?dú)考量每一維度特征被分類的條件概率,然后綜合這些概率對(duì)所在的特征向量做出分類。首先利用CountVectorizer將文本關(guān)鍵詞進(jìn)行向量化,再運(yùn)用貝葉斯分類算法進(jìn)行分類,代碼如下:
vec=CountVectorizer()
x_train=vec.fit_transform(train_features)
clf=MultinomialNB(alpha=0.001).fit(x_train,train_labels)
predicted_labels=clf.predict(x_test)
3實(shí)驗(yàn)和結(jié)果
實(shí)驗(yàn)采用已有的物料庫(kù)中的物料作為訓(xùn)練和測(cè)試數(shù)據(jù),該數(shù)據(jù)包含1407個(gè)類別,總共11000條物料,其中訓(xùn)練樣本10000條物料,測(cè)試樣本1000條物料。
準(zhǔn)確率和查全率作為物料分類的評(píng)價(jià)標(biāo)準(zhǔn)。準(zhǔn)確率計(jì)算公式為分類正確的物料條數(shù)/已分類的物料條數(shù)。查全率計(jì)算公式為分類正確的物料條數(shù)/測(cè)試樣本的物料條數(shù)。
在實(shí)驗(yàn)中發(fā)現(xiàn),由于物料編碼的特殊性,如果某一類中包含多個(gè)不同名稱,會(huì)導(dǎo)致名稱出現(xiàn)次數(shù)少的,自動(dòng)分類出錯(cuò)。在此基礎(chǔ)上,改進(jìn)實(shí)驗(yàn)思路:將測(cè)試數(shù)據(jù)進(jìn)行物料名稱唯一性處理,再進(jìn)行物料分類。實(shí)驗(yàn)過(guò)程中發(fā)現(xiàn),利用extract_tags去掉停用詞獲取關(guān)鍵詞時(shí),會(huì)將單個(gè)字的詞過(guò)濾掉,比如“毯”,“帶”等關(guān)鍵字,這大大降低了檢索的正確性,在此基礎(chǔ)上將單個(gè)詞添加到關(guān)鍵詞中去大大增加了分類的準(zhǔn)確性。
從上圖可以看出,關(guān)鍵詞取得少會(huì)導(dǎo)致查全率降低,關(guān)鍵詞取過(guò)多會(huì)導(dǎo)致查準(zhǔn)率降低,總體上利用貝葉斯分類器分類,選擇合適的關(guān)鍵詞個(gè)數(shù),可以取得較好的查全率和查準(zhǔn)率。
4結(jié)語(yǔ)
本文利用Excel、Python語(yǔ)言以及jieba庫(kù),實(shí)現(xiàn)了物料的自動(dòng)分類,在實(shí)驗(yàn)過(guò)程中發(fā)現(xiàn),物料名稱的簡(jiǎn)潔性以及標(biāo)準(zhǔn)性對(duì)物料分類結(jié)果有很大的影響,盡量減少修飾性詞語(yǔ)。由于jieba庫(kù)的強(qiáng)大功能,物料分類過(guò)程實(shí)現(xiàn)比較簡(jiǎn)單,分類效果良好,大大減少了編碼的工作量,提高了物料分類的準(zhǔn)確性。
參考文獻(xiàn):
[1]孫強(qiáng),李建華,李生紅,基于Python的文本分類系統(tǒng)開(kāi)發(fā)研究[J].計(jì)算機(jī)應(yīng)用與軟件,2011,3.13-14
[2]鮑仲平,企業(yè)信息的編碼和描述[J].電子標(biāo)準(zhǔn)化與質(zhì)量,1995,3,37-40
[3]徐易,基于短文本的分類算法研究[J].上海交通大學(xué),2010.