广告识别算法

标签:文本分类
作者:炼己者


本博客所有内容以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢!


半监督学习文本分类系列

用半监督算法做文本分类(sklearn)
sklearn半监督学习
基于自训练的半监督文本分类算法
基于协同训练的半监督文本分类算法

好久没有更新博客了,最近一直在忙着学c++,把python版本的项目转为c++,对于小白的我真的好难啊。每天下班后先学c++,尽管学了这么久,但是距离把python版本的项目转为c++还是有段距离,再接再厉吧!

一. 摘要

之前拿到了80万条数据,要做广告识别,简单的说就是拿到一段文本,让模型判断它是不是广告。这就是一个二分类的问题。但是80万条数据是没有标签的啊,我总不能把它们标注完然后去训练模型吧。所以研究了很多半监督学习方法,试图用半监督学习来解决这个问题。

半监督学习算法效果并不好,精度太低了。最后想到了一个好方法,先标注2万条数据,然后用textcnn训练这份标注好的数据,预测出文本的标签。最后我根据这些标签来排查。简单来说就是先让机器替我标注数据,然后我再进行复核。虽然有错误,不过大大地加快了我标注数据的速度。最后我一共复核了8万条数据,然后训练模型,最终效果还可以,准确率是0.95

二.操作

简单说下怎么使用textcnn,这份代码来自于github上的一个大佬,结构很简单,很好理解的一份代码,基本上只要会一些tensorflow的基本语法,再稍微理解一下cnn网络的原理,就可以理解这份代码了。后期我会尝试着把自己对tensorflow和cnn的理解分享给大家。关键还是怎么把这份代码用在自己的数据集上,这样才能让自己放心。没用起来,总会觉得心里有点虚。

代码源于这里cnn和rnn,它里面介绍了cnn和rnn两种文本分类方法。用法是一样的。不过里面文件有点多,可能看着会有点懵逼。所以我简化了一下,大家可以直接参考这里。
点开这个链接(https://github.com/lianjizhe/adver-project),然后clone一下,打开文件夹,发现有这些文件

先说一下各个文件夹是什么意思,checkpoints文件夹里放着是你训练好的模型(当你运行run_cnn.py之后会产生的文件),data文件夹里放着需要处理的数据,cnn_model.py里是构建cnn模型的py文件,
run_cnn.py这里就是我们要运行的文件。

将代码用到自己数据集的流程:
1.打开data文件夹,再打开里面的cnews文件夹,你会看到里面有四个文件

cnews.test.txt是测试数据集,cnews.train.txt是训练数据集,cnews.val.txt是验证数据集,cnews.vocab.txt是词汇表。你所需要替换的只有前三个文件。按里面的数据格式替换即可。一共是两列,一列是标签,另一列就是文本数据。文件名也不要改动。

由于github貌似传不了大文件,我就在这里给大家展示里面的数据格式,三个文件的数据格式是一样的。

体育   马晓旭意外受伤让国奥警惕
体育   商瑞华首战复仇心切

这里提示一下,训练数据集最好分布均衡,比如我的广告数据集,就是做二分类。那么假设训练集一共10000条数据,我就要找到5000条广告数据和5000条非广告数据来做训练集。

  1. 数据替换完毕之后,要更改代码了。代码只需要改动两个地方就可以了。打开cnn_model.py文件,找到下面代码

改动里面的num_classes就可以了,做几分类就改成多少。

然后打开data文件夹里面的cnews_loader.py文件,找到下面代码

改掉categories里的标签,把它们改成你自己设置的标签就好了

  1. 到这里就结束了。然后cmd,切换到run_cnn.py文件所在目录,敲入
python run_cnn.py train

这样就是训练模型了,训练好之后,模型会自动保存到checkpoints文件夹里面。
测试模型的效果输入以下命令即可

python run_cnn.py test

然后你就会得到模型的效果了。

三.总结

  • 很多任务其实不用你从头到尾把代码写一遍,只要能利用别人写好的代码完成你的任务就好,你要去理解别人的代码,然后做到随意改动,得到你想要的东西,这很关键,学别人的代码会让你成长的更快。
  • 我们大部分人做项目都是尽力去保证精度,很少会去考虑时间性能。你训练好的模型测试数据时一秒钟可以跑几条?这在工作的时候很重要,因为效率至上。所以在优化的时候要好好注意!

通过这个项目,给大家几个建议:

  • 当你拿到一批没有标注的数据时,第一步就是先标注3万条数据,跑跑模型,测测效果。然后开始利用训练好的模型去预测未标注数据的标签。然后通过复核标签来增加你的训练集,这样做就可以提升你标注数据的速度。
  • 训练集要保证数据均衡,比如广告数据和非广告数据的数量要相等。大部分数据肯定是非广告数据,你在复核数据的时候可以直接取出预测标签为广告的数据进行复核。
  • 时间性能的提升我这里做了两步,首先是降低了每个句子的维度,一开始设置的是600维,后来改成了300维。其次是对数据进行了分析,把所有的数据按字数做了分划,最后发现15个字以内的句子都是非广告数据,而且15个字以内的文本占全部文本的80%,这就说明我的数据有80%是非广告数据啊。这样在做测试的时候先对每个句子的长度进行判断,如果大于15个字再用模型预测,如果小于15个字直接判定为非广告。
  • 通过上面两步的操作,时间性能得到了提升,最终一秒钟可以跑7000条数据

如果大家还有问题可以在博客下面提问,我们一起探讨!

以下是我所有文章的目录,大家如果感兴趣,也可以前往查看
👉戳右边:打开它,也许会看到很多对你有帮助的文章

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,392评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,258评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,417评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,992评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,930评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,199评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,652评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,327评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,463评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,382评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,432评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,118评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,704评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,787评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,999评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,476评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,057评论 2 341

推荐阅读更多精彩内容