文本分类的学习
一篇文章,要對它進行分類,也就是說判斷它是金融類的文章還是科技類的文章還是體育類的文章還是其他類別的文章,是如何做到,以下是我的理解?
第一步:分詞
對文章內容進行分詞,分詞的意思就是把文章變成一個個的詞,同時還要去掉不關鍵的詞,分詞是什么意思呢?比如對”一篇文章,要對它進行分類,也就是說判斷它是金融類的文章還是科技類的文章還是體育類的文章還是其他類別的文章,是如何做到?“這句話進行分詞操作,分詞的結果可能就是**“文章” “進行” “分類” “判斷” “金融類” “文章” “科技類” “文章” “體育類” “文章” “其他” “類別” “文章” “如何” “做到”**。也就是說,分詞,就是把文章變成詞的集合。分詞的算法有多種。比如二語言,NLB等,目前網上也有很多分詞的工具可以使用。
第二步:特征選擇
選出重點詞匯,什么意思呢?對文章進行分詞后,有很多詞是對分類判斷沒有幫助的,比如說對金融、體育、科技類的判斷,那么“股票”、“籃球”、“機器學習”這種詞匯就比較有好的區分度,像比如“效果”、“實際”這類詞就沒有很好的區分度,在對文章進行分詞后,應該把分出來的“效果”、“實際”這類詞給舍棄掉。那么如何選出重要程度大的詞匯呢?也有很多解決算法。比如卡方檢驗。
特征選擇可以看作給每個詞匯打分,分數好的重要程度就高,即區分度高,可以納入“特征向量詞典”,作為判斷的依據。
也就是說比如 “牛市” 比較重要,得9分,“下跌 ”一般重要,得7分,“效果” 特別不重要,得1分,過低,舍棄。
經過了特征選擇后,就選出了特征向量詞典,比如【“股票”,“牛市”,“籃球”,“下跌”,…】
注意,特征詞典里的每個詞匯的重要程度也是不一樣的,只是他們的重要程度達到了可以劃分的級別才會被納入“特征向量詞典”,也就是說他們代表的“分量”不一樣,相當于他們都被納入了“尖子班”,但“尖子班”中也有學霸和學神的區別!
第三步:權重計算
在第二步的特征選擇中,選擇了一些詞匯來作為分類的特征,比如選中了“牛市”這個詞匯,因為它跟金融類文章的關聯度很高,這個單詞非常重要,也有“效果”這種沒什么用的詞匯被舍棄了,但是有的詞匯,比如“下跌”,它既不是非常重要,又有點重要,因為“下跌”有較大的概率跟金融類的文章相關,但是跟體育類的文章也有那么一點關系,比如某篇文章中寫道xxx場均得分“下跌”,所以說“下跌”這個詞有點重要但是也不是特別重要(相比較于“牛市”而言),只能說它對分類有一定的區分度。
那么權重計算是干嘛的呢?第二部中的特征選擇中不是算好了每個詞匯的“權重”嗎?這個比較容易讓人混淆。他們的區別是:
權重計算是指一篇文章中一個詞匯的權重,而不是指該詞匯的重要程度!所有文章中相同詞匯的重要程度是一樣的,但是不同文章中相同詞匯的權重是不一樣的!
比如說,“牛市”這個單詞在特征選擇中的得分是9。在文章1中出現了5次”牛市“,在文章2中出現了2次”牛市“,那么文章1中”牛市“的特征權重可以視為9x5=45,而在文章2中”牛市“的特征權重為9x2=18.當然,這里只是按照詞頻來簡單地計算特征權重,實際上是一種很low的方法,還有很多更為科學有效的方法,比如IF/IDF。
第四步:向量化
向量化就很簡單了,就是把一篇文章變成一個向量,然后扔進分類算法中等待計算結果。具體步驟如下
1.對文章進行分詞,并根據特征向量詞典刪掉不重要的詞匯。
2.根據特征向量字典把所有詞匯替換成該詞匯的特征權重值。
3.完畢,一篇文章以及變成了一組向量。
整個文本分類的具體過程:
步驟一:
對所有文章(一般是用來做訓練集的文章)進行分詞,假設分詞結果為【“股票” ”然后“ ”結果“ ”市場“ “計算” “機器學習 ””股票“ ”下跌" “匯編” “未來” ”股票“” “機器學習’” …】
步驟二:
計算所有詞的重要程度,假設“股票” 得9分, ”然后“ 得0分, ”結果“ 得1分, ”籃球“ 得10分,”下跌“ 得7分,“牛市” 得9分, “未來” 得0分,“計算” 得4分,”機器學習“ 得10分,“計算機” 得8分 “匯編” 得9分…
根據計算結果,去掉不重要的詞,那么選出的特征向量詞典就為:【“股票”,“牛市”,“籃球”,“下跌”,“匯編”,“機器學習”,“計算機”,…】
步驟三:
進行訓練,假設訓練集的文章有100篇,那么按照順序對每一篇文章進行如下操作:
1.分詞并去掉不重要詞匯,如某一篇的分詞結果為:【”然后“ ”結果“ ”市場“ ”股票“ ”下跌” “未來” ”股票“” “上漲” “股票” “牛市” “下跌”…】
2.特征權重向量化,根據特征詞典,該文章的權重為【27,9,0,14 ,0,0,0,…】便于理解,這里采用了根據詞頻來計算特征權重。
根據特征向量字典,第一項為”股票“,而該篇文章中出現了三次股票,股票的重要程度為9,所有該向量的第一個值根據詞頻計算的值為27,同理第二項為9,第三項由于“籃球”沒有在該篇文章中出現,故為0。
步驟四:
把100篇訓練集的文章全部向量化了以后,得到了100組向量。
把100篇文章中每篇文章的類別和文章向量交給分類算法計算,就可以得出一個分類模型。
步驟五:
結束,分類模型就是我們要的結果!
總結
- 上一篇: 英语兔之从句大攻关
- 下一篇: c++ cin不能输入的问题