kaggle-电影评论情感分析-Words Meets Bags of Popcorn

Kaggle竞赛 - Words Meets Bags of Popcorn

经过一段时间ml的学习,以及kaggle入门的泰坦尼克幸存者项目的研究,我对这此产生了浓厚的兴趣,最近又学习了nlp的相关内容,想要动手实践一下,就在kaggle上尝试做了“Bag of Words Meets Bags of Popcorn”这个项目,它的主要任务是对电影评论文本进行情感分类,分类的结果为正面评论和负面评论,和之前泰坦尼克项目中预测船上某人是否存活一样,是一个二分类问题,二分类训练模型可以选择我熟悉的xgboost模型,但是两个项目特征数据上有很大差异,所以特征工程中使用了不同的方法,进行特征处理时的挑战之一是文本内容的向量化,因此,我首先尝试bag of words,然后尝试基于TF-IDF的向量化方法。最后训练模型评估时采用了交叉验证和留出法两种方法。其中在使用sklearn封装的xgboost函数在模型优化中发现其功能太少,改进使用了原生是xgboost并实现运行时打印出每一颗树训练集和测试集的auc,并能打印出模型学习到的对判断review情感类别权重较大的关键词

  • 数据清洗
# coding: UTF-8
import pandas as pd
import numpy as np
from sklearn.metrics import roc_auc_score
import re
from bs4 import BeautifulSoup

def review_to_wordlist(review):
    # 去掉HTML标签,拿到内容
    review_text = BeautifulSoup(review, "html.parser").get_text()
    #用正则表达式取出符合规范的部分
    review_text = re.sub("[^a-zA-Z]"," ",review_text)
    # 小写化所有的词,并转成词list
    #return review_text
    words = review_text.lower().split()
    # 返回words
    return words

分析:titanic项目中的数据集是描述乘客属性的多维特征,每个特征的特征值都是客观的数据,我们只需要在多维特征中抽取和标签相关性最高的几个特征来训练模型即可,而“Bag of Words Meets Bags of Popcorn”项目中数据集中的每个数据都是一段review的文本,而且每段文本都是带有作者表达的主观性的,那么怎么在一段本文中提取出能表现出这个review情感的特征呢?首先,观察文本,因为这些数据均是从网页上通过网络爬虫抓取下来的,所以本文内容里会有残留的html标签,标点符号,数字等对于我们情感分析没有意义的元素,所以我们要把这些元素过滤掉,使用BeautifulSoup Package来去掉html标签拿到文本内容,使用python中内置的re package中的正则表达式来清除文本中的标点符号和数字,处理之后已经得到纯英文的review文本了,但是其中每个单词会有大小写的差别,为了进一步地将特征归一化,再把review文本全转换成小写,并将它们分割成单个单词(称为NPL LINGO中的标记化)
总结:数据清洗在titanic项目中是没有遇到的,但是titanic项目中客观的特征值会有缺失的问题,需要进行缺失值处理,这在sentiment analysis项目中也没有体现,这是和两个项目的特征数据差异相对应的,所以在特征工程中要针对不同的原始特征数据来做不同的处理,不过这些处理特征的方法可能在以后的某个问题中全都会利用上,所以要深刻理解特征工程的主要方法的使用。

  • 特征抽取
stops = set(stopwords.words("english"))      
meaningful_words = [w for w in words if not w in stops] 

分析:从中文的表达来看,每一段review里都会很频繁的出现一些包括英文中的”a”, “and”, “is”, “and” “the”等不携带任何意义的词,这些词被成为停止词,所以要把停止词从review文本中清除,留下关键词。在Python程序

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值