由於最近接觸到一些簡訊內容,本著想要做乙個模板提取和分類,先試試水。開局就遇到一堆問題,也可能是我自己太菜。所以想把遇到的問題進行記錄,以備不時之需。
第一部分
①由於我拿到的資料是沒有標籤的,就是只有簡訊內容,沒有簡訊標籤,是分為那個類。所以我打算只新增兩類標籤,就用0和1區分。問題出來了,pandas可以把標籤都賦值成一類,data1['score']=1。但是就沒有負標籤,也不能人工去標註負標籤把,想著是自己做著玩,然後就每五個標註為乙個負樣本。找了好幾種方法,發現如下**可以解決:
ran1=random.sample(range(0,len(data1)),len(data1)//5) #前面沒有//5隨機所有行這樣得出的樣本比例正負樣本5:1.。for i in ran1:
data1['score'][i]=0
②然後發現資料量太少,就做了複製操作。複製容易,就是總是出現x,y的資料條數匹配不上,找了好幾個方法,還好可以解決:
from sklearn.utils import shuffle #utils在英語中是跑龍套/小工具的意思先對資料打亂,然後在複製,就不報錯了,我也不知道原理是什麼,有知道的大神移動要告訴一下!df = shuffle(data1,random_state=33)
x = df['content']
y = df['score']
x = pd.concat([df[['content']],df[['content']],df[['content']]]) #複製三分
y = pd.concat([df.score,df.score,df.score])
③由於處理的文字,要進行分詞、去停用詞等處理,在新增停用詞檔案的時候,把停用詞檔案放到專案目錄data中,總是讀取錯誤,只能從盤裡讀取。估計是我哪個地方寫錯了,回頭再找找方法。
第二部分
①匯入詞袋模型,將分割的文字進行詞袋處理
②借助多維貝葉斯模型,短文本分類
③分別列印出混淆矩陣,準確率,召回率,f1等。
文字分類深度學習實踐 學習記錄
word2vec的主要思路 通過單詞和上下文彼此 對應的兩個演算法分別為 也就是說模型的輸出概率代表著到我們詞典中每個詞有多大可能性跟input word同時出現。例如 如果我們向神經網路模型中輸入乙個單詞 soviet 那麼最終模型的輸出概率中,像 union russia 這種相關詞的概率將遠高...
文字分類 libsvm
關於 libsvm 的介紹以及相關 網上很多,感興趣可以找找。這是libsvm 這裡主要是針對之前學習過的幾種特徵篩選演算法用 libsvm 進行比較。採用搜狗實驗室的資料,選擇商業類文字 1001 篇,娛樂類文字 1208 篇,測試集 29904 篇。分別採用文件頻次,卡方分布,互資訊,資訊增益來...
文字分類四
下面是使用knn演算法來做的。資料均是由前面的程式生成的。做完這個之後,就是將每一步整合起來。然後再盡可能的優化,使得程式效率更好。然後可以嘗試不同的特徵選擇演算法和分類演算法,當然最後要是能有自己的一些小小改進就好了。不過至少有了乙個還可以的結果了。include include include ...