基于RNN/CNN的短评打分预测

该博客总结工作,介绍基于文本的网络训练任务,通过输出短评让网络打分。阐述现实场景,说明训练集、测试集构成及数据清洗工作,还提及词映射文件。绘制流程图,用TextCNN和双向GRU两个网络测试,并贴出TextCNN运行结果。

0. 一壶清酒

    给最近的工作做一个小小的总结。不会放出实测代码,以后有机会会补上部分内容。这篇博客算是调好一个简单测试样例,在优快云上搜索“基于RNN的短评”也会有一些相关的技术贴。不过可能是用keras这些完成的,我用的基础的tf手写。测试了两个不同的网络,TextCNN和双向GRU。只要意思到位了就可以了。

1. 一身尘灰

    首先,简单介绍一下任务内容。我们需要训练一个基于文本的网络,通过输出一段简单的短评(例如饿了么的食物评价,去哪网的景点评价),然后由网络给出打分(0~5分可以有小数)。阐述几个现实使用场景,方便能更好的理解这个任务。例如,饿了么等APP有时会出现用户给了评价但缺省打分;再比如,针对旅游景点,我们根据大量用户评价进行打分,给出不同星级的推荐。

    其次,介绍一下训练集构成。这个测试样例的数据源与某旅游APP真实后台数据。训练集是一个三列的csv文件,第一列为Id,第二列为Discuss,第三列为Score如下图所示。每列之间由逗号隔开。

  • Id。这部分可以不管,只是APP中的一个标识符,按顺序存储即可。
  • Discuss。可以看到有很多的符号,总之杂乱无章,所以需要做切词分词等数据清洗工作;此外,有些评价果断,例如 “还行” ,这样的评价在数据清洗后为空字符,所以在输入网络前需要将所有的Discuss填充或截断为相同长度。
  • Score。1~5,没什么好说的。

    然后,测试集。没有Score一列。

    最后,说明一下使用的200dim的词映射文件。预处理之后,我们需要将Discuss部分长度截取为相同,例如每句Discuss200个词,不够的用“空白”一词填补至200词。每个词在映射文件中都映射为1*200的矩阵,所以一句Discuss经预处理和填充之后为1*200维*200词的向量。映射文件如下,只需要按每个词顺序查表即可映射。


 

2. 一场春秋

    这部分就简单画个流程图。虚线部分为稍微细节一点的操作处理。


3. 一念来回

    用了两个不同网络进行测试,一个是TextCNN,另一个是基于RNN的双向GRU。当然是用LSTM也是完全可以的,对最后一层稍作修改就可以了。

    因为用虚拟机跑的,所以运行时间较长。下面贴一个使用TextCNN的运行结果。

 

转载于:https://www.cnblogs.com/catallen/p/9555246.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值