基于word2vec和TextCNN的新闻标题分类器

本文介绍了如何使用word2vec对新闻标题进行向量化,并通过TextCNN模型进行二分类,以区分新闻和非新闻列表页。经过训练,模型的准确率达到了94%,对线上数据的预测效果良好。
摘要由CSDN通过智能技术生成

一、背景

    本人做新闻爬虫工作,由于工作需要,经常需要将一个列表页中的a标签链接进行提前并进行抓取,但问题是,如何确定一个列表页大概率是新闻页面那

起初,通过一些规则的方法,比如新闻高频词来确定是否是新闻列表页,但由于热词更新的滞后以及无热词页面,规则匹配的效果变得很差,故放弃了该方案。后期,通过总结新闻标题的模式发现,

新闻和非新闻的标题内容在用词以及语义上存在明显的区别,如果规则解决不了的问题,也许可以借助NLP来解这个问题。经过调研,发现有很多通过NLP来实现对评论进行情感分类的项目,

都是二分类的问题,自己目前面临的问题也是二分类,这坚定了我趟这条路的信心。

二、技术路线

    由于面临的问题是一个文本二分类问题,所以有两个问题需要解决:

  1.  如何将标题向量化,以喂给模型训练。
  2.  选择什么模型来训练数据。

     通过调研,问题1可通过Word2vec将词的语义嵌入到一个低维向量中。问题2解决方法很多,由于时下正是深度学习大红大紫之时,因此选择了TextCNN,它是一种卷积神经网络,在文本分类领域表现非常抢眼。

三、Word2vec

    Word2vec是非常流行的词嵌入(将一个词表示成一个向量方法之一而Word2vec是其中的佼佼者,其主要优点是:

  • 可以将文本在低维空间中进行稠密表示,克服了one-shot的表示稀疏性。
  • 可以很好的表达词与词之间的语义相似性,如 “国王” 和 "女王",“男人” 和 “女人”,但是one-shot表示是体现不出这种相似性的。

   Word2vec的流行实现有Skip和CBOW,在此不做详述,感兴趣的可以参考 秒懂词向量Word2vec 。

   词向量的问题解决之后,便可以将不同词的词向量表示成二维矩阵输入给TextCNN进行训练。

四、TextCNN

    TextCNN是一个基于卷积神经网络的文本分类模型,在众多应用领域表现非常出色,原始论文是Convolutional Neural Networks for Sentence Classification。本文的工作均参考了

 How to Develop a Multichannel CNN Model for Text Classification 文中的实现。同图像分类一样,TextCNN的输入也是一个 n\times m 的二维矩阵,然后通过卷积层和池化层进行特征提取,

最后展平卷积部分的输出到一个全连接层,最后输出层给出分类结果。其中,n 表示词汇表的大小,m 表示词嵌入的维度,表示我们希望将一个词嵌入到一个多少维的向量空间中。


    TextCNN的基本思想是实现了一个多通道的卷积神经网络,并通过融合不同通道的信息进行文本分类。

    具体的,通过设定多组尺寸不同的卷积核,每组卷积核对应不同大小的滑动窗口。比如,可以分别设定核尺寸大小为1、2、4的三组卷积核,每组的数量自行设定,这样,

每组卷积核可在不同大小的滑动窗口中提取语义特征,最后融合不同组的卷积核所提取的特征(通过concatenate实现),并将融合后的特征向量送入全连接层层,输出层最后给出最终的分类,

大体的思想是这样,细节方面可以参考原始论文。下图很好的阐述了其基本实现过程。

                                               

五、 训练词向量

    由于本人是做爬虫工作,训练数据收集可谓是近水楼台先得月。收集了新闻标题(正样本)5834363例,非新闻标题(负样本)5108778。

    为了训练词向量,将正负样本中的每个标题通过jieba进行了分词,并去掉了停用词。同时将所有的词用空格分隔,同时,为了在滑窗过程中,不同标题之间的数据产生关联,

在不同标题的分词结果之间插入了6个UNK标识,因为本人选择的窗口大小是3,所以6个UNK标识刚好了隔离不同标题的分词结果。如下图所示。

    

    如图,“获刑” 和 “黑白” 属于不同标题的首尾词,因为UNK标识,在训练过程中不会因为大小为3的滑窗而组成训练样本,不会干扰最终的训练结果。word2vec的内部实现好像并没有提及这样的处理细节。

但个人认为这么做是有必要的,不然会将不同标题的首部和尾部的词进行关联,而这些词本身可能并无关联。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值