代码(包括数据集)链接放在文末。

上一篇博客,我们介绍了如何利用几种深度学习的模型对于中文文本进行情感分类,讲的非常的详细啊,那在这里我也不过多重复与上一篇博客相同的内容,感兴趣的朋友可以自行点击查看。

轻松搞懂word2vec+BiLSTM、TextCNN、CNN+BiLSTM、BiLSTM+Attention实现中英文情感分类
【TF-IDF、word2vec、svm、cnn、textcnn、bilstm、cnn+bilstm、bilstm+attention】英文长文本分类实战

在这篇博客中,我将详细介绍如何利用常见的机器学习模型——支持向量机,进行文本情感分类。

具体流程

前期

从最开始的数据集准备,到训练word2vec模型,全部都跟上一篇博客是一样的流程,这里就不重复了。

提取句特征

到这里之前,我们已经训练好了word2vec模型,也就是可以通过word2vec得到词的对应向量,但是,数据集的标注是针对一整个句子的标注,所以我们需要做的是通过词向量,来得到句向量。

如果想将word2vec换成fastText,只需要将
from gensim.models.word2vec import Word2Vec
换成
from gensim.models.fasttext import FastText
再将对应位置的Word2Vec换成FastText即可。

那在这里,我们用到的是求平均的方法,即通过将句子中出现的词的词向量的相加之后,再除以词的数量,得到句子的特征,这种方法简单,容易实现,但确实不可避免会忽视掉句子的语序信息。(但效果也不见得就比较差)

# 直接词向量相加求平均
def fea_sentence(list_w):n0 = np.array([0. for i in range(vocab_dim)], dtype=np.float32)for i in list_w:n0 += ife = n0 / len(list_w)fe = fe.tolist()return fedef parse_dataset(x_data, word2vec):xVec = []for x in x_data:sentence = []for word in x:if word in word2vec:sentence.append(word2vec[word])else:  # 词不存在,则补零向量。sentence.append([0. for i in range(vocab_dim)])xVec.append(fea_sentence(sentence))xVec = np.array(xVec)return xVec

划分数据集

注意,这里是跟上一篇博客不同的,标签不需要转换成one-hot的格式。

from sklearn.model_selection import train_test_splitdef get_data(word2vec, data, y):data = parse_dataset(data, word2vec)x_train, x_test, y_train, y_test = train_test_split(data, y, test_size=0.2, random_state=5)return x_train, y_train, x_test, y_test

训练模型

得到句特征之后,我们就可以开始训练模型啦,那在这里,我们用到了GridSearchCV(网格搜索)的方法,帮助我们进行调参。

由于数据集较大,训练时间可能会非常长,没有时间的朋友可以直接将前六行代码注释掉,将下面注释掉的代码恢复。

def train_svm(x_train, y_train):svc = svm.SVC(verbose=True)parameters = {'C':[1, 2], 'gamma':[0.5 ,1, 2]}clf = GridSearchCV(svc, parameters, scoring='f1')clf.fit(x_train, y_train, )print('最佳参数: ')print(clf.best_params_) # clf = svm.SVC(kernel='rbf', C=2, gamma=2, verbose=True)# clf.fit(x_train,y_train)# 封装模型print('保存模型...')joblib.dump(clf, 'svm.pkl')

模型评估

import joblib
from sklearn.metrics import classification_reportif __name__ == '__main__':svm = joblib.load('svm.pkl')y_pred = svm.predict(x_test)# target_names = ['负面', '正面']print(classification_report(y_test, y_pred))

“智能”推荐:
轻松搞懂word2vec+BiLSTM、TextCNN、CNN+BiLSTM、BiLSTM+Attention实现中英文情感分类
【TF-IDF、word2vec、svm、cnn、textcnn、bilstm、cnn+bilstm、bilstm+attention】英文长文本分类实战


代码下载链接,有需要的请自行提取,不想hua前的朋友,可评论同我说,我会回复你,但可能会比较慢。祝好!

https://download.csdn.net/download/qq_44186838/60890812

轻松搞懂word2vec / FastText + SVM(支持向量机)实现中英文情感分类相关推荐

  1. php service原理,轻松搞懂WebService工作原理

    用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...

  2. proe常用c语言语句,带你轻松搞懂Proe条件语句

    原标题:带你轻松搞懂Proe条件语句 本文通过几个简单的例子介绍Proe中的条件语句,希望对你能有所帮助.Proe中使用的IF条件语句和C语言中的IF语句原理是一样的,其结构稍有差别.首先我们了解一下 ...

  3. 【机器学习sklearn】两个例子轻松搞懂核密度估计KernelDensity

    前言 作业中遇到了需要使用KernelDensity的情况,但是网上的资料参差不齐,找了不短的时间却失望而归,最后还是靠着自己的理解才弄懂sklearn这个函数的使用,特此纪念. [机器学习sklea ...

  4. 基于 Word2Vec 和 SVM 的微博舆情情感演化分析 论文笔记

    目录 论文标题 引言 标题论文学术结构 1.相关研究综述(先前学者的研究) 2.研究方法 3.基于 Word2Vec 和 SVM 的微博情感演化分析 4.基于 Word2Vec 词相似度的舆情主体对象 ...

  5. So easy ! 两句口号轻松搞懂Docker

    作为云计算IT圈里人, 如果还不知道Docker,那就算out啦.不过,在搞懂Docker之前,得先来了解一下Docker的成名之路! 从dotCloud到Docker,一"开"鸣 ...

  6. HanLP 基于SVM支持向量机 进行 ChnSentiCorp 情感分析

    一.ChnSentiCorp情感分析酒店评论数据集 ChnSentiCorp情感分析酒店评论数据集是一个标注了情感的数据集,分了负面和正面两类,下载地址: http://file.hankcs.com ...

  7. NLP之一文搞懂word2vec、Elmo、Bert演变

    导读 自然语言处理本质是解决文本相关的问题,我们可以把它的任务分为大致两部分:预训练产生词向量以及对词向量进行操作(下游NLP具体任务).在自然语言处理中有词向量模型word2vec.Elmo以及Be ...

  8. 阿里资深软件测试工程师总结的这几点,让你轻松搞懂性能调优

    什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How ...

  9. Python学习,轻松搞懂Python递归函数的原理与应用

    递归: 在函数的定义中,函数内部的语句调用函数本身. 1.递归的原理 学习任何计算机语言过程中,"递归"一直是所有人心中的疼.不知你是否听过这个冷笑话:"一个面包,走着走 ...

  10. 一篇文章 轻松搞懂 AC自动机

    索引 概念 前后缀匹配 Trie树 AC自动机的实现 初始化 Fail指针的构建 匹配字符串 一名蒟蒻向您问好. 概念 这是 AC自动机,不是自动AC机, 是一个十分常用的多模式字符串匹配算法 (也就 ...

最新文章

  1. python实现客户端和服务器端传输图片
  2. 转载 详解go语言GC
  3. python socket发送数组_利用pyprocessing初步探索数组排序算法可视化
  4. android+4.2+mtp+在此设备上不支持+文件类型,Nexus 4无法通过MTP显示文件
  5. python全栈工程师薪资-Python全栈工程师为何这么火薪资这么高看了才知道
  6. Asp.Net中WebForm与MVC,Web API模式对比
  7. Oracle Stream Replication技术
  8. Access访问错误集锦:Access关键字
  9. LaTex的book类型中,目录及chapter前自动插入空白页面
  10. unexpected error ConnectionError object has no attribute
  11. Mockplus黑色星期五和网络星期一特惠
  12. 数学史思维导图_思维导图话科学史:图说数学
  13. 关于vmplayer 和vmrun 同时使用说明文档
  14. 成都11区+4县+5市高分辨率边界kml
  15. 移动硬盘文件,图标变白解决方案
  16. python-django(一)
  17. C++/C语言申请动态空间的详解【new关键字、malloc关键字、delete和free关键字】
  18. 关于DM36x IPNC中IRCUT的使用
  19. windows7 系统下载
  20. 完整的渗透测试靶场通关

热门文章

  1. scratch编程例子
  2. 携职教育:中级职称《系统集成项目管理师》巨大作用!
  3. 雄迈摄像头研究笔记二:系统的研究
  4. greasemonkey油猴子初学过程中遇到的问题
  5. 微信公众号群发图文API插入视频音频解决方案
  6. ubuntu常用功能安装集锦
  7. java爬取百度图片
  8. 为什么要使用ABP框架?
  9. 2015 年度新增开源软件排名 TOP100
  10. java int 转 object_在java上将int转换为Object