基于MLP进行文本分类

最近学习了基于Pytorch框架下的MLP、CNN、RNN网络模型,利用在GitHub上获取的商品评论数据进行文本分类实验。本文介绍了如何在Pytorch框架下建立MLP对数据进行二分类,数据集大致如下:
数据集概况

1、导入模块

import pandas as pd
import numpy as np
import jieba
import keras
import re
import spacy
from keras.preprocessing.text import Tokenizer
import gensim
from gensim import models
from torch.nn.utils.rnn import pad_sequence
import torch

2、导入数据

data = pd.read_csv('./data.tsv',sep='\t',index_col=0).astype(str)
data.head()

导入数据

3、文本数据预处理

3.1 数据清洗

首先需要对数据集进行常规的清洗处理,在实际电商平台中,有时会存在用户购买后没有评论,也会存在商家为了“刷单”自动对产品发布好评,所以需要分别对该文本数据进行缺失值检查、重复值检查并进行删除,减少对研究目的不必要的影响。同时,因为过短评论的研究价值不大,所以筛选掉了评论文本小于等于5的数据,上述清洗过程统一自定义打包成clean函数如下:

def clean(data):
    #去除缺失值
    Nan = data.dropna()
    print("去除缺失值后:",Nan.shape)
    #去除重复值
    dup = Nan.drop_duplicates()
    print("去除重复值后:",dup.shape)
    #筛选评论文本数大于5的评论
    clean_data = dup[dup['text'].str.len() > 5]
    print("筛选掉评论文本数大于5的评论后:",clean_data.shape)
    clean_data.reset_index(inplace=True)
    
    return clean_data

清洗数据
运行后发现该数据不存在缺失值,但存在10条重复值,删除小于等于5的文本数据后剩余9702条评论。

3.2 分词并去除停用词

首先,需要排除文本中的数字、字母等不是中文字符的文本,利用re模块定义find_chinese函数如下:

#排除数字、字母等不是中文字符的数据
def find_chinese(file):
    pattern = re.compile(r'[^\u4e00-\u9fa5]')
    chinese = re.sub(pattern, '', file)
    return chinese

for number in range(len(newdata)):
    newdata[number]=find_chinese(newdata[number])

然后利用jieba模块对文本进行分词并把结果存入列表中,传入存有中文停用词数据的xlsx文件,用if判断语句来去除停用词(比spacy快多了…),这两步可以包装成函数如下:

#去除停用词
def del_stop(texts
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值