正则定位文本目标词语_你的第一个神经网络文本分类任务——让机器也懂感情...

码农三哥愿与大家每日分享java开发过程中笔记和互联网人工智能技术文章,愿你我互交流,共同成长!

本文的任务,是希望基于电商的商品评论文本数据实现一个神经网络模型,用于判断一段评论是好评还是差评。这个任务本质上是一个二分类问题。同理,二分类问题还可以解决诸如筛选无意义评论,判断一张图片属于猫还狗等任务。区别就在于输入的数据是文本,图片,还是其他数据类型。

开始之前先允许我做一个简单的划重点,以便大家对全文内容有一个初步的认识。我们要完成这个任务的核心分为两点:

首先,是数据处理环节。在你的第一个神经网络——共享单车预测器中,我也花了大量的篇幅来讲数据处理,其中用到了one-hot,归一化等基本的数据处理操作。而在本任务中,数据处理更是重中之重。主要涉及到,如何让机器识别文本,并用其进行计算的问题。在这里,我们主要使用了最简单的词袋模型(BOW)。其中对中文的处理还需要使用到正则匹配以及jieba分词工具 。

其次,就是基本的神经网络训练步骤,其实这个步骤和你的第一个神经网络——共享单车预测器一文的步骤基本大同小异,无非就是建立模型,输入数据,得到预测值,反向传播计算loss,再进行梯度运算调整权重,并不断重复这整个过程,直到loss不再下降,所以对训练步骤的说明就不再详细展开了,还不了解的同学可以回过头看上一篇文章。不同之处仅仅在于,分类任务的损失函数和回归任务不同,这一点待会儿会具体说明。

下面就开始正式操作环节,让我们先来看数据处理。

1. 数据预处理

先来看一下我们用于建模的数据格式。分成了两个文本文件,good.txt和bad.txt,分别存放好评和差评,每一行代表一条评论。数据来源于京东(2013年),可在集智学园github上获取数据文件。

e38528bf8cd24a5d8ccd296347c0b614.png

将文件按行读取并依次存储,我们可以在读取的时候就过滤掉标点,并对句子进行分词。这样可以得到两个数组,一个好评文本数组,一个差评文本数组。

其中过滤标点可以直接使用正则表达式,分词则可以直接使用结巴分词库,这个工具可以准确地把一个句子分割为几个有意义的词语。一句话特定词语出现的次数多,比如“很好”,“赞”等,通常我们就可以认为这句话是一句正向评论。所以中文词语才是我们要分析的最小单元。

import re #正则表达式的包import jieba #结巴分词包# 正向文本with open('good.txt', 'r') as fr: for idx, line in enumerate(fr): if True: #过滤标点符号 line = re.sub("[s+.!/_,$%^*(+"'“”《》?“]+|[+——!,。?、~@#¥%……&*():]+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值