python文本预处理

在机器学习中,不能直接处理文本数据,需要提前将其转换为数值向量,接下来的内容,将简要覆盖其中涉及的技术要点

文本数据在训练机器学习模型之前需要先进行清理并转化成向量,这个过程称为文本预处理

在这节中,将会介绍编码文本数据的基本数据清理步骤和技术

  1. 理解数据 - 数据是关于什么的,清理这样的数据需要考虑什么(标点符号,停止词等)。
  2. 基础清理 - 清理无用的数据时需要考虑什么参数(标点符号,停止词等) ,及其实现代码
  3. 编码技术 - 当前比较流行的用于编码文本的技术
    •       **Bag of Words (词袋模型)**
      
    •       **Binary Bag of Words **
      
    •       **Bigram, Ngram (N元语法模型)**
      
    •       **TF-IDF**( **T**erm  **F**requency - **I**nverse **D**ocument **F**requency)
      
    •       **Word2Vec**
      
    •       **Avg-Word2Vec**
      
    •       **TF-IDF Word2Vec**
      

导入库

import warnings
warnings.filterwarnings("ignore")                     #Ignoring unnecessory warnings

import numpy as np                                  #for large and multi-dimensional arrays
import pandas as pd                                 #for data manipulation and analysis
import nltk                                         #Natural language processing tool-kit

from nltk.corpus import stopwords                   #Stopwords corpus
from nltk.stem import PorterStemmer                 # Stemmer

from sklearn.feature_extraction.text import CountVectorizer          #For Bag of words
from sklearn.feature_extraction.text import TfidfVectorizer          #For TF-IDF
from gensim.models import Word2Vec                                   #For Word2Vec

data_path = "Reviews.csv"                                  #文件下载链接在文本末尾
data = pd.read_csv(data_path)
data_sel = data.head(10000)                                #读取前10000条

数据集包含来自亚马逊到2012年10月份为止,时间跨度超过10年,50多万条的美食评论。每条评论包括产品和用户信息,评分和纯文本的评论。

# 列名
data_sel.columns
Index(['Id', 'ProductId', 'UserId', 'ProfileName', 'HelpfulnessNumerator',
       'HelpfulnessDenominator', 'Score', 'Time', 'Summary', 'Text'],
      dtype='object')
  1. 理解数据

假设此时的目标是基于评论文本内容来预测评论的正向还是负向性。

观察评分列,可以看到有1,2,3,4,5类评分。此时可以认为1,2是负向评分,4,5是正向评分,3是中性评分

预测目标为正向或负向评分,因此需要移除中性评分

data_sel['Score'].value_counts()
5    6183
4    1433
1     932
3     862
2     590
Name: Score, dtype: int64
data_score_removed = data_sel[data_sel['Score']!=3]       #移除中心评分

转化评分为正负二分类

def partition(x):
    if x < 3:
        return 'negative'
    return 'positive'

score_upd = data_score_removed['Score']
t = score_upd.map(partition)
data_score_removed[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值