前段時間更新了一系列基礎的機器學習算法,感受有些無味,並且剛好那時買了了國內某公司的雲服務器,就打算部署一套文本處理的WEB API
,順別應用一下以前學習到的機器學習算法。(文末放出地址)python
本文不會涉及過於複雜的數學原理,主要講述如何提取特徵與調用模型。git
分詞
訪問/cut?sentence=&method=
,其中sentence
參數指明須要分詞的句子,method
參數指明分詞的方式。github
統計詞頻
訪問/count?sentence=&=method=
,其中的參數說明和分詞的api一致。算法
情感分析
訪問/count?sentence=
,由於目前是針對句子的,所以sentence
的範圍限制了在1~200詞之間。segmentfault
本文重點講述情感分析的實現。後端
情感分析的應用是多種多樣的,往大了說,能夠用於國家對某個熱點進行輿情監控,選舉的選情分析,電商對產品的售後意向調查,往小了說還能夠寫一個腳本對你女神的微博進行關心
,在女神不開心的時候及時送上關心。api
至於情感分析的實現,在學術論文上均有說起,大體過程均可以分爲提取情感極性詞
,將語句轉化爲向量
,扔進你訓練好的模型裏
服務器
在這裏咱們針對實際狀況作出必定的修改,提取情感極性詞,必然是須要詞典來參考的,雖然各大語言機構都有公開的詞典,,但並不建議使用這些詞典。其中一個緣由是由於這些公開的詞典太過書面化,和「禮貌」,不太接近平常生活。所以這這裏我採用的是自定義詞典,另一點是,在提取關鍵詞部分不只僅是提取情感相關的詞語,同時也使用其餘平常用語,好比草泥馬
,雖然不像開心
,傷心
這樣的情感極性詞,但草泥馬
顯然具備明確的情感偏向。機器學習
值得說明的是,咱們既然在提取特徵詞的時候考慮到日常的詞語,一樣也就意味這一些亂七八糟的詞語會混進來,因此咱們在提取完特徵詞後,同時計算它們的詞頻,只取頻率排名的前20%,(固然這個數字能夠根據本身須要調整)。學習
挑選的出來的特徵詞就構成了[word1,word2,word3……]
,同時檢測訓練樣本,若樣本中出現了特徵詞,則該樣本的特徵向量對應位置置1,不然爲0。
構成特徵向量後,我選取的算法是樸素貝葉斯
,關於其原理,能夠查看我支持的專欄機器學習從入門到放棄之樸素貝葉斯。至於爲何選取樸素貝葉斯,很大一個緣由是由於樸素貝葉斯
在垃圾郵件分類上有不錯的效果,而肯定一個句子屬於那種情感,和判斷一封郵件是否爲垃圾郵件有殊途同歸之妙。
在sklearn中,只要添加以下代碼便可。
from sklearn.naive_bayes import GaussianNB gnb = GaussianNB() gnb = gnb.fit(feature, label) result = gnb.predice(test)
上述api中涉及的分詞操做均是使用 結巴分詞 完成。
下面測試用例又黃又暴力,未成年觀衆在家長的陪同下觀看。
目前只有情感分析的api的測試頁面
dudulu
不得不說使用了必應的背景圖來作本身網站的背景圖效果至關不錯。
但願你們多多調戲(目前語料只支持中文),後端的日誌會記錄下測試記錄(算是收集數據),我會週期性上去更新模型,效果理論上會越變越好。