Comment Classification in NLP

1. 介绍

最近假期没事就想来玩玩机器学习,找到了曾经学长做过的评论分类的小项目,因为一直没有过制作机器学习项目的经验,就打算从阅读代码开始。

2. 问题分析

  1. 训练数据可以最终被处理为一个列表的字符串 (list(string)) ( l i s t ( s t r i n g ) ) 。它们被打上了标量标记 0 或 1,来表示好评和差评的区别。

  2. 将整段的中文句子用jieba拆分成词语段(因为英文词语之间都有空格隔开),在其中插入空格,剔除stopwords和标点等奇怪符号……

  3. 对每个词语进行预先训练,形成最初的word embedding。使用低维dense的词向量代替one-hot来表示corpus当中的每一个词汇。我想着应该用网上训练好的词向量模型,因为训练数据不够完备,在使用的过程中可能遇到没有在词向量训练中遇到的词,这样的话我们的词向量模型未免就一筹莫展了……gensim.Word2Vec训练出的model说到底是一个dict。

  4. 下面就可以用各种各样的训练方法。似乎在这里,他将每个句子中的独立的单词的词向量naive地加起来作为一个整体放入神经网络进行训练,我非常质疑这种做法的有效性。

3. 操作细节问题

  • 数据的读取和预处理:
    • 使用json或者pickle一类的轻量级数据处理包来进行load和dump。
    • 需要strip掉句子开头和结尾的制表符、空格、换行符等等。
    • 需要注意编码的一致性。
    • 剔除stopwords。

论文:CNN for Sentence Classification

  1. CNN models have subsequently been shown to be effective for NLP and have achieved excellent results in semantic parsing, search query retrieval, sentence modeling, and other traditional NLP tasks.
  2. 架构:预先使用开源的word vector embedding。把句子拆分成单词列表,将词向量首尾排列。在输入层后面是一个卷积层,拥有若干个卷积核,每个卷积核作为一个feature extractor,作用在h个相邻的单词上。卷积层后面跟着一个max pooling层,用于提取出卷积层当中的最明显的特征,也解决了卷积核大小不同,句子长短不同的问题。最终把池化结果与全连接层相连,通过softmax输出概率分布。
    模型架构

  3. 词向量使用了google的开源词向量,有着300的维度。不存在的词被随机初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值