韓亞紅


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