python进行文本分类,基于word2vec,sklearn-svm对微博性别分类
来源:互联网 发布:木工数控机床编程 编辑:程序博客网 时间:2024/05/22 12:42
第一个分类任务,记录一下
语料库下载
一、进行手工分类
导师给的数据是两个文件夹,一个包含了以用户ID名为标题的一大堆txt(未分类),还有一个文件夹里面是已经分类好的男女性别ID的集合txt。
先要做的任务就是将未分类的txt分成两类(根据给的已经分类的id集合txt),这个分为三步:
1、新建男女分类的空文件夹。
2、提取id集合中的id,存在两个list里面.
3、提取未分类txt的文件名,对它们进行分类,如果是女的,将其复制txt到女文件夹。否则放到男文件夹。
最后得到结果如下:
其中female 和male文件夹中是已经分类好的txt文件。
二、进行分词
利用Jieba分词和去除停用词(这里我用的是全模式分词),每一篇文档为一行 用换行拼接,得到result.txt
fobj = open(new_folder_path + '//' + file, 'r', encoding='utf-8') # 打开样本raw = fobj.read() # 读样本word_cut = jieba.cut(raw,cut_all=True) # 对样本进行结巴分词stopwords=stopwordslist('D:/pycharm/project1/tingyongci.txt') # 这里加载停用词的路径
三、用gensim.word2vec得到词向量模型
对result.txt进行模型训练
如何使用word2vec见这篇文章
得到train.model(我用的维度50,min_count=1)
四、求和求平均得到文档向量
对每一篇文章的词向量进行求和,然后除以词数量,得到文档向量(维度为50的向量)。
其中70%划分到train_set,30%划分到test
利用numpy里面的sum函数对列求和
a=np.sum(ce,axis=0) a.tolist() a=[i/number for i in a] #求平均值后的文档向量
五、利用sklearn-svm进行分类
输入的是训练数据和训练标签(对应每一个文档向量的类别标签),进行训练。
预测则输入测试数据,得到测试标签(即测试分类结果)
如下:
核函数为rbf的时候效果最好。
clf=svm.SVC() train_data_x = [d for (d, c) in train_set] train_data_y = [c for (d, c) in train_set] test_data_x = [d for (d, c) in test_set] test_data_y = [c for (d, c) in test_set]print("开始训练") clf.fit(train_data_x,train_data_y) result=clf.predict(test_data_x) acc = accuracy_score(test_data_y,result) print(acc) print(classification_report(test_data_y, result,labels=class_list,target_names=class_name))
结果如下:
阅读全文
0 0
- python进行文本分类,基于word2vec,sklearn-svm对微博性别分类
- 基于Word2Vec Doc2Vec 进行文本情感分类
- 利用python+jieba+gensim+sklearn实现微博文本性别分类
- Python:用Word2Vec 和 sklearn 对IMDB评论进行分类训练
- 利用python,基于SVM实现文本分类
- sklearn svm实现文本分类 入门
- python sklearn做文本分类
- Scikit-learn中使用SVM对文本进行分类
- 文本分类的python实现-基于SVM算法
- 文本分类的python实现-基于SVM算法
- SVM对sklearn自带手写数字数据集进行分类
- sklearn 用于文本分类
- 使用word2vec对新浪微博进行情感分析和分类
- 基于SVM的中文文本分类方法
- 使用python进行人脸性别分类
- sklearn,SVM 和文本分类
- 利用sklearn 实现SVM分类
- sklearn之SVM二分类
- 第四章 样式初始化 元素类型转换 外边距合并
- AtCoder 2688 Young Maids
- 大数据|意不意外?今年卖得最好的月饼是这个馅的……
- VS C#实现简单拼图游戏
- JZOJ 5399. 【NOIP2017提高A组模拟10.7】Confess
- python进行文本分类,基于word2vec,sklearn-svm对微博性别分类
- Android LinearLayout 线性布局
- 常用js
- Linux命令行笔记
- 学习Docker(2017-10-7)
- 不重启修改计算机名
- Bless You Autocorrect 字典树+bfs
- ajax
- Linux中MySql数据库的使用