由于最近接触到一些短信内容,本着想要做一个模板提取和分类,先试试水。开局就遇到一堆问题,也可能是我自己太菜。所以想把遇到的问题进行记录,以备不时之需。
第一部分
①由于我拿到的数据是没有标签的,就是只有短信内容,没有短信标签,是分为那个类。所以我打算只添加两类标签,就用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等。