向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

任务场景

文本反垃圾是网络社区应用非常常见的任务。因为各种利益关系,网络社区通常都难以避免地会涌入大量骚扰、色情、诈骗等垃圾信息,扰乱社区秩序,伤害用户体验。这些信息往往隐晦,多变,传统规则系统如正则表达式匹配关键词难以应对。通常情况下,文本反垃圾离不开用户行为分析,本章只针对文本内容部分进行讨论。

为了躲避平台监测,垃圾文本常常会使用火星文等方式对关键词进行隐藏。例如:

垃圾文本通常还会备有多个联系方式进行用户导流。识别异常联系方式是反垃圾的一项重要工作,但是传统的识别方法依赖大量策略,攻防压力大,也容易被突破。例如:

在这个实例中,我们将使用TensorLayer来训练一个垃圾文本分类器,并介绍如何通过TensorFlow Serving来提供高性能服务,实现产品化部署。这个分类器将解决以上几个难题,我们不再担心垃圾文本有多么隐晦,也不再关心它们用的哪国语言或有多少种联系方式。

第一步,训练词向量,相关代码在word2vec文件夹,执行步骤见word2vec/README.md。

第二步,训练分类器,相关代码在network文件夹,执行步骤见network/README.md。

第三步,与TensorFlow Serving交互,客户端代码在serving文件夹。

代码  获取:

关注微信公众号 datayx  然后回复  文本分类  即可获取。

AI项目体验地址 https://loveai.tech

网络结构

文本分类必然要先解决文本表征问题。文本表征在自然语言处理任务中扮演着重要的角色。它的目标是将不定长文本(句子、段落、文章)映射成固定长度的向量。文本向量的质量会直接影响下游模型的性能。神经网络模型的文本表征工作通常分为两步,首先将单词映射成词向量,然后将词向量组合起来。有多种模型能够将词向量组合成文本向量,例如词袋模型(Neural Bag-of-Words,NBOW)、递归神经网络(Recurrent Neural Network,RNN)和卷积神经网络(Convolutional Neural Network,CNN)。这些模型接受由一组词向量组成的文本序列作为输入,然后将文本的语义信息表示成一个固定长度的向量。NBOW模型的优点是简单快速,配合多层全连接网络能实现不逊于RNN和CNN的分类效果,缺点是向量线性相加必然会丢失很多词与词相关信息,无法更精细地表达句子的语义。CNN在语言模型训练中也被广泛使用,这里卷积的作用变成了从句子中提取出局部的语义组合信息,多个卷积核则用来保证提取的语义组合的多样性。RNN常用于处理时间序列数据,它能够接受任意长度的输入,是自然语言处理最受欢迎的架构之一,在短文本分类中,相比NBOW和CNN的缺点是需要的计算时间更长。

实例中我们使用RNN来表征文本,将输入的文本序列通过一个RNN层映射成固定长度的向量,然后将文本向量输入到一个Softmax层进行分类。本章结尾我们会再简单介绍由NBOW和多层感知机(Multilayer Perceptron,MLP)组成的分类器和CNN分类器。实际分类结果中,CNN和MLP两种分类器的准确率都能达到95%以上(RNN模型由于未知原因准确度较低)。相比之前训练的SVM分类器所达到的93%左右的准确率,基于神经网络的垃圾文本分类器表现出非常优秀的性能。

词的向量表示

最简单的词表示方法是One-hot Representation,即把每个词表示为一个很长的向量,这个向量的维度是词表的大小,其中只有一个维度的值为1,其余都为0,这个维度就代表了当前的词。这种表示方法非常简洁,但是容易造成维数灾难,并且无法描述词与词之间的关系。还有一种表示方法是Distributed Representation,如Word2vec。这种方法把词表示成一种稠密、低维的实数向量。该向量可以表示一个词在一个N维空间中的位置,并且相似词在空间中的位置相近。由于训练的时候就利用了单词的上下文,因此Word2vec训练出来的词向量天然带有一些句法和语义特征。它的每一维表示词语的一个潜在特征,可以通过空间距离来描述词与词之间的相似性。

比较有代表性的Word2vec模型有CBOW模型和Skip-Gram模型。图2演示了Skip-Gram模型的训练过程。假设我们的窗口取1,通过滑动窗口我们得到(fox, brown)(fox, jumps)等输入输出对,经过足够多次的迭代后,当我们再次输入fox时,jumpsbrown的概率会明显高于其他词。在输入层与隐层之间的矩阵W1存储着每一个单词的词向量,从输入层到隐层之间的计算就是取出单词的词向量。因为训练的目标是相似词得到相似上下文,所以相似词在隐层的输出(即其词向量)在优化过程中会越来越接近。训练完成后我们把W1(词向量集合)保存起来用于后续的任务。

Dynamic RNN分类器

传统神经网络如MLP受限于固定大小的输入,以及静态的输入输出关系,在动态系统建模任务中会遇到比较大的困难。传统神经网络假设所有输入都互相独立,其有向无环的神经网络的各层神经元不会互相作用,不好处理前后输入有关联的问题。但是现实生活中很多问题都是以动态系统的方式呈现的,一件事物的现状往往依托于它之前的状态。虽然也能通过将一长段时间分成多个同等长度的时间窗口来计算时间窗口内的相关内容,但是这个时间窗的依赖与变化都太多,大小并不好取。目前常用的一种RNN是LSTM,它与标准RNN的不同之处是隐层单元的计算函数更加复杂,使得RNN的记忆能力变得更强。

在训练RNN的时候我们会遇到另一个问题。不定长序列的长度有可能范围很广,Static RNN由于只构建一次Graph,训练前需要对所有输入进行Padding以确保整个迭代过程中每个Batch的长度一致,这样输入的长度就取决于训练集最长的一个序列,导致许多计算资源浪费在Padding部分。Dynamic RNN实现了Graph动态生成,因此不同Batch的长度可以不同,并且可以跳过Padding部分的计算。这样每一个Batch的数据在输入前只需Padding到该Batch最长序列的长度,并且根据序列实际长度中止计算,从而减少空间和计算量。


阅读过本文的人还看了以下文章:

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  


机大数据技术与机器学习工程

 搜索公众号添加: datanlp

长按图片,识别二维码

产品级垃圾文本分类器相关推荐

  1. 垃圾邮件分类器_如何在10个步骤中构建垃圾邮件分类器

    垃圾邮件分类器 If you're just starting out in Machine Learning, chances are you'll be undertaking a classif ...

  2. 垃圾邮件分类 python_在python中创建SMS垃圾邮件分类器

    垃圾邮件分类 python 介绍 (Introduction) I have always been fascinated with Google's gmail spam detection sys ...

  3. 吴恩达|机器学习作业6.1.SVM建立垃圾邮件分类器

    6.1.SVM建立垃圾邮件分类器 1)题目: 如今,许多电子邮件服务提供垃圾邮件过滤器,能够将电子邮件精确地分类为垃圾邮件和非垃圾邮件.在本部分练习中,您将使用SVM构建自己的垃圾邮件过滤器. 您将训 ...

  4. fasttext文本分类python实现_一个使用fasttext训练的新闻文本分类器/模型

    fastext是什么? Facebook AI Research Lab 发布的一个用于快速进行文本分类和单词表示的库.优点是很快,可以进行分钟级训练,这意味着你可以在几分钟时间内就训练好一个分类模型 ...

  5. [转]Facebook 开源的快速文本分类器 FastText

    比深度学习快几个数量级,详解Facebook最新开源工具--fastText 导读:Facebook声称fastText比其他学习方法要快得多,能够训练模型"在使用标准多核CPU的情况下10 ...

  6. 机器学习不神秘!手把手教你用R语言打造文本分类器

    简单安装几个R软件包,你就直接在自己电脑上打造出一个文本分类器,用进行机器来评估人类写作. 本文是一篇极简的上手教程,它想用清晰明了的步骤告诉读者,机器学习不神秘,关键是动手!仅需七步,你也一样能&q ...

  7. 基于朴素贝叶斯到中文垃圾邮件分类器

    简介: 朴素 贝叶斯垃圾邮件分类器是在对邮件关键字进行统计分析到基础上利用贝叶斯公式进行分类到方法.相比其他模型,朴素贝叶斯模型到搭建比较简单,并且具有良好到分类效果. 朴素真贝叶斯分类器通过对邮件关 ...

  8. 上海居民被垃圾分类逼疯!这款垃圾自动分类器也许能帮上忙

    作者 | 视说君 来源 | 授权转载自视说AI(ID:techtalkai) 让垃圾自动分类 近期垃圾分类成为了一个热门话题,原来直接一次性扔掉的垃圾,现在都需要分门别类进行投放.从今年7月1日起,新 ...

  9. klearn 文本分类_使用gensim和sklearn搭建一个文本分类器

    总的来讲,一个完整的文本分类器主要由两个阶段,或者说两个部分组成:一是将文本向量化,将一个字符串转化成向量形式:二是传统的分类器,包括线性分类器,SVM, 神经网络分类器等等. 之前看的THUCTC的 ...

最新文章

  1. 刚输一行代码就报5次假漏洞,npm让程序员们累觉不爱
  2. Oceanus:美团HTTP流量定制化路由的实践
  3. spring cloud教程之使用spring boot创建一个应用
  4. 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world...
  5. Swift中文件和图片上传处理
  6. 软件项目组织管理(二、三)项目管理与信息技术环境、项目管理过程组
  7. python利用faker,输出企业名称、用户名称、手机号、地址信息等测试数据实例
  8. FreeMarker合并单元格
  9. 小车故障灯亮显示大全_车辆故障灯亮了,还能继续行驶吗?该怎么做?
  10. ubuntu 12.04下gedit查看txt中文乱码解决办法
  11. 简单理解LSTM神经网络
  12. WIN10开机启动深度优化超详细万字以上,开机5秒
  13. TwinCAT学习笔记3--创建PLC程序控制2台EtherCAT变频器
  14. openwrt折腾记2-广告拦截adbyby与pass
  15. 【西祠日志】【05】修修补补asp留言板,学习git,asp的ajax实现(2015.07.21周二)
  16. 谷歌身份验证器电脑版 Google Authenticator下载+使用教程
  17. 第二篇 自制系统内核
  18. 被忽视的开发安全问题
  19. java gui 日历_Java实现简单日历小程序 Java图形界面小日历开发
  20. Python计算温度植被干旱指数(TVDI)

热门文章

  1. 惠普谢少毅:网络攻击威胁在线交易
  2. Linux资源控制-CPU和内存【转】
  3. TOCControl 的HitTest()方法
  4. 从哪些角度进行手机软件测试
  5. How to make everyone is happy
  6. pm2.5测试软件,测pm2.5的软件准吗
  7. Linux常用命令之yum
  8. java国际化 英语的标识符_(转)Java 国际化
  9. 我的成长笔记20210325(一天写了247条用例)
  10. php 7.0 特性,PHP 7.3比PHP 7.0快22% 即将进入特性冻结阶段