Python:用Word2Vec 和 sklearn 对IMDB评论进行分类训练

本文介绍了如何结合Word2Vec和sklearn对IMDB电影评论进行情感分类。首先,利用nltk和gensim库进行数据预处理和Word2Vec模型的构建。接着,使用SGD分类器进行训练,并探讨了不同训练样本比例对最终测试准确率的影响。实验结果显示,尽管使用词的平均向量作为句子表示的方法比直接应用bag of words在性能上有提升,但仍存在改进空间。
摘要由CSDN通过智能技术生成

Python:用Word2Vec 和 sklearn 对IMDB评论进行分类训练

之前一直做的是目标跟踪上的东西,这几天在看这本书又看到NLP,两者均作为对数据序列的处理,应该是有共通点的,于是就简单摸索了一下。

在NLP建立由词到向量的映射最简单的方法是bag of words,粗暴直接,没准还效果拔群。

但是bag of words 没法表达出词与词之间联系与相似程度,功能上还是有些粗糙,所以就考虑用Word2Vec将词映射到向量空间,再进行分类训练。

这次的工作主要就是一些书上教程和word2vec的结合

需要用到的module

  • sklearn
  • nltk
  • gensim

不是什么偏门模块,直接anaconda里面install就行,conda没有就pip

数据来源

爬网页什么的就算了,我也搞不了那么大的,直接找现成的。(我是拒绝承认我是因为知道了这个数据才做这项工作的)。
这个数据集里面把IMDB评分在5以上的都视作positive sample,5以下的视作 negative sample

数据预处理

  • 借用了nltk的 stopwords 集,就是那些像 i, you, is 之类的没啥营养哪都出现频率还死高的词。用来把他们从训练集中清除。
  • pyprind看个进度
  • 还有个对符号表情的提取,比如:-)但是这一套东西,不管是stopwords还是表情符号,都是基于英语环境的,对于中文还是不行,或者是有类似的成果只是我孤陋寡闻。(我就对这种
    (~ ̄▽ ̄)~ 还有这种 (눈‸눈) 搞出通用的识别方法的难度表示关切)

    把原始的txt整理成为csv

# -*- coding: utf-8 -*-
import pyprind
import pandas as pd
import os
from nltk.corpus import stopwords
import re
import numpy as np


stop = stopwords.words('english')


def tokenizer(text):
    text = re.sub('<[^>]*>', '', text)
    emoticons = re.findall('(?::|;|=)(?:-)?(?:\)|\(|D|P)', text.lower())
    text = re.sub('[\W]+', ' ', text.lower()) +\
        ' '.join(emoticons).replace('-', '')
    tokenized = [w for w in text.split() if w not in stop]
    return tokenized


basepath = 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值