由於最近接觸到一些短信內容,本着想要做一個模板提取和分類,先試試水。開局就遇到一堆問題,也可能是我自己太菜。所以想把遇到的問題進行記錄,以備不時之需。
第一部分
①由於我拿到的數據是沒有標籤的,就是隻有短信內容,沒有短信標籤,是分爲那個類。所以我打算只添加兩類標籤,就用0和1區分。問題出來了,pandas可以把標籤都賦值成一類,data1['score']=1。但是就沒有負標籤,也不能人工去標註負標籤把,想着是自己做着玩,然後就每五個標註爲一個負樣本。找了好幾種方法,發現如下代碼可以解決:
ran1=random.sample(range(0,len(data1)),len(data1)//5) #前面沒有//5隨機所有行 for i in ran1: data1['score'][i]=0
這樣得出的樣本比例正負樣本5:1.。
②然後發現數據量太少,就做了複製操作。複製容易,就是總是出現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等。