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

2023-11-09 12:20

本文主要是介绍基于word2vec和TextCNN的新闻标题分类器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、背景

    本人做新闻爬虫工作,由于工作需要,经常需要将一个列表页中的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的内部实现好像并没有提及这样的处理细节。

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

    这里选择了开源的gensim来

这篇关于基于word2vec和TextCNN的新闻标题分类器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/376057

相关文章

理解分类器(linear)为什么可以做语义方向的指导?(解纠缠)

Attribute Manipulation(属性编辑)、disentanglement(解纠缠)常用的两种做法:线性探针和PCA_disentanglement和alignment-CSDN博客 在解纠缠的过程中,有一种非常简单的方法来引导G向某个方向进行生成,然后我们通过向不同的方向进行行走,那么就会得到这个属性上的图像。那么你利用多个方向进行生成,便得到了各种方向的图像,每个方向对应了很多

基于Python的自然语言处理系列(1):Word2Vec

在自然语言处理(NLP)领域,Word2Vec是一种广泛使用的词向量表示方法。它通过将词汇映射到连续的向量空间中,使得计算机可以更好地理解和处理文本数据。本系列的第一篇文章将详细介绍Word2Vec模型的原理、实现方法及应用场景。 1. Word2Vec 原理         Word2Vec模型由Google的Tomas Mikolov等人在2013年提出,主要有两种训练方式

【python 走进NLP】从零开始搭建textCNN卷积神经网络模型

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。人工智能教程 1、众所周知,tensorflow 是一个开源的机器学习框架,它的出现大大降低了机器学习的门槛,即使你没有太多的数学知识,它也可以允许你用“搭积木”的方式快速实现一个神经网络,即使没有调节太多的参数,模型的表现一般还

第23周:使用Word2vec实现文本分类

目录 前言 一、数据预处理 1.1 加载数据 1.2 构建词典 1.3 生成数据批次和迭代器 二、模型构建 2.1 搭建模型 2.2 初始化模型 2.3 定义训练和评估函数 三、训练模型 3.1 拆分数据集并运行模型 3.2 测试指定数据 总结 前言 🍨 本文为[🔗365天深度学习训练营]中的学习记录博客🍖 原作者:[K同学啊] 说在前面 本周任务

每天一个数据分析题(五百二十七)- word2vec模型

Word2vec,是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。关于word2vec模型,下面说法不正确的是: A. 得到的词向量维度小,可以节省存储和计算资源 B. 考虑了全局语料库的信息 C. 无法解决多义词的问题 D. 可以表示词和词之间的关系 数据分析认证考试介绍:点击进入 数据分析考试大纲下载 题目来源于CDA模拟题库 点

Spark2.x 入门:决策树分类器

一、方法简介 ​ 决策树(decision tree)是一种基本的分类与回归方法,这里主要介绍用于分类的决策树。决策树模式呈树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。学习时利用训练数据,根据损失函数最小化的原则建立决策树模型;预测时,对新的数据,利用决策树模型进行分类。 决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的剪枝。

word2vec 两个模型,两个加速方法 负采样加速Skip-gram模型 层序Softmax加速CBOW模型 item2vec 双塔模型 (DSSM双塔模型)

推荐领域(DSSM双塔模型): https://www.cnblogs.com/wilson0068/p/12881258.html   word2vec  word2vec笔记和实现 理解 Word2Vec 之 Skip-Gram 模型 上面这两个链接能让你彻底明白word2vec,不要搞什么公式,看完也是不知所云,也没说到本质. 目前用的比较多的都是Skip-gram模型 Go

word2vec 自己训练中文语料

(1) 准备文本 可以用爬虫爬,也可以去下载,必须是全文本。 (2)对数据进行分词处理 因为英文但此只见是空格所以不需要分词,二中文需要分词, 中文分词工具还是很多的,我自己常用的: - 中科院NLPIR - 哈工大LTP - 结巴分词 注意:分词后保存的文件将会作为word2vec的输入文件进行训练 (3)训练与实验 python 需要先安装gensim,参考http://bl

word2vec python使用

(1)安装gensim   pip install --upgrade setuptoolspip install gensimsudo pip install pattern                 (2)使用上次训练好的词向量vectors.bin   vectors.bin 的生成参考http://blog.csdn.net/u013378306/art

word2vec centos 安装

google的下载地址国内已无法连接,下载地址http://download.csdn.net/detail/u013378306/9741439 安装步骤 1、下载word2vec,其目录结构如下: 2、进入word2vec所在目录,使用make指令进行安装 make   可以发现在安装的时候,会出现如下error: gcc word2ve