zoukankan      html  css  js  c++  java
  • 基于RNN/CNN的短评打分预测

    0. 一壶清酒

        给最近的工作做一个小小的总结。不会放出实测代码,以后有机会会补上部分内容。这篇博客算是调好一个简单测试样例,在CSDN上搜索“基于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的运行结果。

  • 相关阅读:
    python day03--字符串
    python day02--运算符,编码
    python day01
    数据库:对 null 和notnull,单表操作,多表操作 。
    数据库的介绍
    数据库对表的操作练习。
    数据库基础知识:介绍
    并发编程知识总结,软件开发架构,socket套接字模板,粘包问题,struct解决粘包问题,上传大文件数据,socketserver,关于操作系统的发展史,进程,线程。
    Event事件,进程池与线程池,高性能爬取梨视频,协程,协程的目的,gevent。
    GIL全局解释器锁,多线程的作用,死锁现象,信号量(了解),线程队列。
  • 原文地址:https://www.cnblogs.com/catallen/p/9555246.html
Copyright © 2011-2022 走看看