韓亞紅
【摘要】物料編碼是ERP的基礎(chǔ),通過大數(shù)據(jù)分類算法,對物料進(jìn)行自動分類,提高物料編碼管理工作效率。本文基于Python實現(xiàn)物料的自動分類。
【關(guān)鍵詞】物料編碼、物料分類、大數(shù)據(jù)、Python
1引言
物料是在ERP的基礎(chǔ),物料編碼是以簡短的文字、符合或數(shù)字、號碼來代表物料、品名、規(guī)格或類別等其他有關(guān)事項的一種管理工具。在編碼過程中,需要對物料進(jìn)行分類,并給出相應(yīng)的編碼,由于不同員工對物料分類有不同的理解,出錯率也時常發(fā)生。實驗表明,通過大數(shù)據(jù)技術(shù)快速對物料進(jìn)行分類,可節(jié)約人力,避免人工分類帶來的錯誤率高、效率低等諸多問題。
本文基于Python語言,結(jié)合第三方庫jieba和panda庫,實現(xiàn)物料的自動分類。
2物料分類流程及相關(guān)技術(shù)
物料分類實際是短中文文本分類問題,分類問題的主要目標(biāo)是確定新數(shù)據(jù)所屬的類別。分類是給定一堆樣本數(shù)據(jù),以及這些數(shù)據(jù)所屬的類別標(biāo)簽,通過算法來預(yù)測新數(shù)據(jù)的類別。
物料分類步驟主要有1.預(yù)處理(中文文本分詞)2. 關(guān)鍵詞(對樣本數(shù)據(jù)進(jìn)行詞頻統(tǒng)計,獲取關(guān)鍵詞)3、分類器。
2.1物料預(yù)處理
對中文文本進(jìn)行分類,主要是分詞。文本分詞采用結(jié)巴分詞(jieba)庫實現(xiàn),結(jié)巴分詞有三種分詞模式:全模式、精確模式和搜索引擎模式。針對物料名稱短而精的特點,本文采用了精確模式對物料進(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é)巴分詞庫和extract_tags函數(shù)獲取此類別的關(guān)鍵詞。
實現(xiàn)思路為:TF-IDF文本關(guān)鍵詞抽取方法流程
(1)利用EXCEL將同一分類下的物料進(jìn)行拼接,形成文本D。
(2)對給定的文本D進(jìn)行分詞,磁性標(biāo)注和去除停用詞等數(shù)據(jù)預(yù)處理操作,獲得n個候選關(guān)鍵詞D=【t1,t2….tn】
(3)計算詞語ti在文本D中詞頻
(4)計算詞語ti在整個語料的IDF=log(Dn/(Dt+1))
(5)計算獲取詞語ti的TF-IDF
(6)對關(guān)鍵詞計算結(jié)果進(jìn)行倒序排列,獲得排名前的TOPN個詞匯作為文本關(guān)鍵詞。
利用jieba. analyse庫中extract_tags實現(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,決策樹分類法,貝葉斯分類算法,支持向量機(jī)的分類器,神經(jīng)網(wǎng)絡(luò),模糊分類法等。本文采用貝葉斯分類器進(jìn)行分類,貝葉斯分類的思想:單獨考量每一維度特征被分類的條件概率,然后綜合這些概率對所在的特征向量做出分類。首先利用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實驗和結(jié)果
實驗采用已有的物料庫中的物料作為訓(xùn)練和測試數(shù)據(jù),該數(shù)據(jù)包含1407個類別,總共11000條物料,其中訓(xùn)練樣本10000條物料,測試樣本1000條物料。
準(zhǔn)確率和查全率作為物料分類的評價標(biāo)準(zhǔn)。準(zhǔn)確率計算公式為分類正確的物料條數(shù)/已分類的物料條數(shù)。查全率計算公式為分類正確的物料條數(shù)/測試樣本的物料條數(shù)。
在實驗中發(fā)現(xiàn),由于物料編碼的特殊性,如果某一類中包含多個不同名稱,會導(dǎo)致名稱出現(xiàn)次數(shù)少的,自動分類出錯。在此基礎(chǔ)上,改進(jìn)實驗思路:將測試數(shù)據(jù)進(jìn)行物料名稱唯一性處理,再進(jìn)行物料分類。實驗過程中發(fā)現(xiàn),利用extract_tags去掉停用詞獲取關(guān)鍵詞時,會將單個字的詞過濾掉,比如“毯”,“帶”等關(guān)鍵字,這大大降低了檢索的正確性,在此基礎(chǔ)上將單個詞添加到關(guān)鍵詞中去大大增加了分類的準(zhǔn)確性。
從上圖可以看出,關(guān)鍵詞取得少會導(dǎo)致查全率降低,關(guān)鍵詞取過多會導(dǎo)致查準(zhǔn)率降低,總體上利用貝葉斯分類器分類,選擇合適的關(guān)鍵詞個數(shù),可以取得較好的查全率和查準(zhǔn)率。
4結(jié)語
本文利用Excel、Python語言以及jieba庫,實現(xiàn)了物料的自動分類,在實驗過程中發(fā)現(xiàn),物料名稱的簡潔性以及標(biāo)準(zhǔn)性對物料分類結(jié)果有很大的影響,盡量減少修飾性詞語。由于jieba庫的強(qiáng)大功能,物料分類過程實現(xiàn)比較簡單,分類效果良好,大大減少了編碼的工作量,提高了物料分類的準(zhǔn)確性。
參考文獻(xiàn):
[1]孫強(qiáng),李建華,李生紅,基于Python的文本分類系統(tǒng)開發(fā)研究[J].計算機(jī)應(yīng)用與軟件,2011,3.13-14
[2]鮑仲平,企業(yè)信息的編碼和描述[J].電子標(biāo)準(zhǔn)化與質(zhì)量,1995,3,37-40
[3]徐易,基于短文本的分類算法研究[J].上海交通大學(xué),2010.