学会这几点,就可以在百万数据里找到能赚钱的项目
前段时间陆续给大家分享了两种“挖掘别人正在做的项目”的方法和思路:
1:运用”词向量文本分类“的方法挖掘项目
2:运用”关键词根提取法“的方法挖掘项目
没有看过的朋友请先阅读前两篇内容,否则阅读本文并没有意义。
由于这两种方法涉及一些技术手段(很初级的那种),懂技术的人或许已经开始测试了,然而对于不懂技术的朋友,则没办法具体实现。
因此本文侧重为大家讲解如何才能学会使用这两种方法为自己工作。
插一段题外话:
最近一段时间接了朋友公司一个广告投放的事情,主要是帮他们挖掘用户需求和规划广告账户,所以原先定的文章更新推迟了,后台也有朋友私信催更,故解释一下,感谢支持。
说到这点,给大家看看我平时规划的账户结构:

根据这样一份需求分类,我们会规划出下面这样一个信息流广告账户:

信息流广告不同于竞价,重点在于分析用户诉求,再以对应卖点来引导转化(头条系统较于智能,做起来不会这么细致)。
所以我们会根据不同用户的特征及关注点做定向,并给与合适ta的文案卖点,区别于传统广告的是在于利用大数据将合适的人与广告对接在一起,尽量减少骚扰和浪费,提升广告主收益。
之所以顺带提到,因为无论是挖掘需要、归纳需求,都是我们做任何一个项目必须要经历的步骤,用各种思路研究我们挖掘到的需求,是我们做好每一个项目的前提。
首先必须很遗憾的声明:
如果你不打算学习任何技术,那么”词向量文本分类“这个方法你是没办法运用的,市面上也没有任何现成工具可以介绍给你。
至于”关键词根提取法“,如果你不愿意学习技术,那么有类似的工具可以帮你简单实现,但是会相对麻烦,同时因为是第三方工具,不是自己写的,可能没办法按照自己的思路做调整。
你愿意简单的学习点技术,那么接下来的内容我会帮你规划好:你应该学哪些、如何学习(在哪里学)、以及编写工具的思路还有核心的部分代码。
如果你只想用第三方工具,下面也有对应版块讲解。
步骤1:我们学哪些?
Excel、Python
足以!
Excel:
基础:排序、筛选、去重、=lenb
Python:
安装配置
基础编程知识:变量、函数、条件判断、循环、模块引用、文件读写
内置数据结构:list、set、dict
需要用到的模块:re、time、pickle、jieba、xmind
在编程里,模块(包),可以理解为一个打包好的工具箱,你可以引用它的功能。
步骤2:我们如何学习
首先明确一点:我们学习工具和技术都只是为了解决我们的问题,我们不是那个领域的人,不需要系统的学习各个知识点,学习我们需要的并能应用即可,如果你有志进入编程领域,建议寻找专业的渠道学习。
Excel:
稍微有点计算机工作经验的都应该会,我其实不好意思把这个当做一个版块去介绍,不过我们要照顾完全没有基础的朋友:
https://jingyan.baidu.com/article/c910274bb7f25acd371d2d69.html
这是一个百度经验教程,是我为大家找到的最合适学习的Excel基础教程,我们不需要去看一整套的视频、不需要去学习各种无关的公式,不用担心这个视频里的内容是不是我们需要的,图文的形式可以更加快速的跟着操作一遍。
这一个链接包含了:



教程内容很明确,哪个是我们需要的,点开跟着操作一遍就好了。
当你学会后:
你可以在Excel里对关键词去重、去长短词、去无效词、排序等
Python(下面内容请按照顺序来):
安装配置、基础编程知识、内置数据结构等,我们都可以在这里学到:
这是雪峰老师的基础教程,完全免费,面向小白朋友,通过简单的讲解帮你快速入门,你马上就可以运用起来。
这是我看到的所有Python教程中相对友好的,我就是在这里入门的,很感谢老师的分享。
当然,即使是这样一份教程,我们依然还要抽丝剥茧的挑出我们仅需要的那部分:


我们只需要学习图中红框内的版块,其他版块有兴趣可以学习。
当你学会后:
你可以自己写脚本工具
你可以对几百万的数据批量处理,增删改查
你可以自由的保存你所计算的任何数据
你可以批量化的操作你的电脑文件
关于”正则表达式“,在Python里只是一个模块,但并非Python独有,它是编程领域的一个通用技术,我建议你再单独学习下基础概念:
”正则表达式“看这一篇就够了,真的只是看一下就好,不需要精通和背诵各种字符,我们只需要知道它是什么,用来干嘛、怎么用的,在实际应用中,会百度就好。
time模块:
pickle模块,我们回看雪峰老师的教程,再多学习一个版块就搞定了:
别被这名字吓到,它不过就是用来方便存数据的而已。
如果上面的你都学OK了(也必须先OK),那么再学习这两个:
“xmind”模块:
它用来自动生成下面这样的思维导图:

“xmind”本身是一个思维导图软件,它可以制作各种样式的思维导图,方便我们头脑风暴,这是它的官网,我们可以直接下载来玩:
用它制作的思维导图,保存后就是一份”.xmind”的文件。
但是我们毕竟是让程序自动统计几百万的数据,归类好之后不可能我们人工去录入到“xmind”这个工具里。
于是神奇的Python有一个第三方的模块,它就叫“xmind”,运用它我们就可以让程序按照自己的要求自动生成一份“.xmind”的文件,然后再用xmind这个软件打开。
学习“xmind”模块在这里:
它会教你如何让Python自动:创建文档、画布、插入各级主题等等。
当你学会后:
百万级的数据也可以自动化的按照你要求的分类好,并保存成目标文件
重点:分词模块“jieba”
这是我们国人自己开发的一个模块,我们要实现的功能都少不了这个模块,它是这些功能的核心支撑,没有它,则没有意义。
我们简单普及一下分词的概念和意义:
分词就是把一段句子或者一篇文章按照我们的用语习惯分割成一个个单词或者单独的文字。
“i love you”
这是一句英文,想要把它分词,只需要按照空格分割即可,因为英文单词中间必定是空格,同时英文是硬性语言,涉及到的歧义较少,句式也相对固定和统一。
分词后得到:i、love、you,三个单词
可是对于中文
“我爱你”
却没有办法有一个空格可以分割成:我、爱、你,没有空格,程序不知道从哪里分割。
同时,中文语境千变万化,同一个字同一个词在不同场合、音调、句式、语速、前后缀等等情况下,可以表达完全不一样的意思,比如:
“通过历史学高深的智慧……”
可以解读为:通过历史,学高深的智慧……,也可以解读为:通过历史学,高深的智慧……
因此可以分割成:通过/历史/学/高深/的/智慧 及 通过/历史学/高深/的/智慧
也就是说即使分割很方便,但是现在的问题在于分割的标准也不明确,到底是按照“历史”“学”来分割,还是按照“历史学”来分割,更绝一点的:
“我也想过过过儿过过的生活”
我相信除了我们中国人,其他人很难理解这样的一句话,更别说机器。
有基于此,我们国人自己开发了一套专门用来分割中文的模块–jieba
很调皮的使用了“结巴”的拼音作为名称。
分词的技术对于不是专业领域的我们来说过于高深,我自己也只是大概知道运作原理,事实上我们没必要去了解它背后的工作原理和算法机制,会用就好。
jieba模块有内置的词库,包含我们中文的各种常用词语、短语,可以帮你分词(有几个分词模式可选),同时可以自定义词库。
所谓的自定义词库:你可以自己定义必须当做一个词看待的和不可以当做一个词看待的,比如:
“历史学”,你希望分词时遇到它的时候,必须被当做一个整体看待,又或者你希望它必须被分割开,不可以单独当做一个词。
“阿里巴巴”
这是一个品牌名词,内置词库里不一定有,你可以自己单独加进去,程序再分词的时候,就会把它当做一个词语来看待,不会分割开。
“但是不是……”
这样一个词可以分为:“但是”“不是” or “但”“是不是”,因此可以人工干预,事先设置。
分词的意义是什么?
分词后,我们才可以针对这个短语、文章来统计词频、分析结构,常见的分词应用比如制作一份精美的标签云:

商业上的应用比如搜索引擎要分析文章相似度,也需要对文章分词,要做”倒排索引“也一样要做分词,统计词根文章。
那么jieba分词怎么学习呢?看下面这篇就够了:
https://github.com/fxsjy/jieba
跟着这篇文章做一遍,jieba分词就懂得应用了。
当你学会后:
分词、统计词频、文本比对、标签云等功能你都能轻松实现
步骤3:编程思路 及 核心部分代码(伪代码)
当上面的步骤你都学一遍了,那么可以开始编写自己的工具了,下面着重讲解一下两套工具的编程思路。
首先声明:如果下面的内容、名称听不懂,那可以明确上面的你没学明白,一定要先学好基础哈。
1:词向量文本分类,这套程序的核心思路是:
a: 两两比对词库里的关键词
b: 比对时计算两者之间的余弦值
c: 根据返回的余弦值选择是否归为一类(修改该关键词所处顺序)
d: 输出排序后的结果放在文档里
计算余弦值时每次都要对两个目标词做分词,考虑到重复计算,为节省计算时间,要先对所有词做分词预处理,也就是先把所有词都分词一遍,保存下来,需要使用的时候再拿出来。

计算两个长尾词之间余弦值的伪代码:
def 合并文本词根(长尾词a词频,长尾词b词频):
return list(set(长尾词a词频).union(set(长尾词b词频)))
def 生成词根向量(长尾词a词频,长尾词b词频,a词频+b词频):
长尾词a向量,长尾词b向量 = [],[]
for 词频 in a词频+b词频:
长尾词a向量.append(len(re.findall(词频,长尾词a词频)))
长尾词b向量.append(len(re.findall(词频,长尾词b词频)))
return 长尾词a向量,长尾词b向量
def 向量互乘求和(长尾词a向量,长尾词b向量):
return sum(map(lambda (a,b):a*b,zip(长尾词a向量,长尾词b向量)))
def 向量平方求和(长尾词向量):
和 = 0
for i in list_ve:
和 += i * i
return 和
def 返回余弦值(向量互乘和,向量平方和a,向量平方和b):
return 向量互乘和 / (math.sqrt(向量平方和a) * math.sqrt(向量平方和b))
至于为什么这样计算,其实是用计算余弦值的公式转化过来而已:

对公式很嫌弃的可以不看,反正也不高考了。
2:关键词根提取法,这套程序的核心思路是:
a: 统计top词根N个
b: 提取包含词根的对应关键词子集
c: 利用xmind模块,在循环中插入对应节点
这套程序思路很简单,甚至没必要画图,但是有几个细节点:
21:top词根不一定是合适的 同时 已经被作为节点的词根不应该重复计算
因此需要一个库,记录已经被作为节点的词根
同时,类似”可是“这样的词不具有研究意义,不应该被作为节点,所以需要一个库,事先导入非法词根表
22:几百万的关键词,当需要打印的层级较多时,提取各级词频对应词库的交集很耗时,而且分词操作在遍历的过程中可以预计是会重复执行的,因此还是一样要做分词预处理,只不过这个预处理会更复杂一点,需要建立几个词典库:
库1:{id:[长尾词,对应词根集合]}
如:记录id”1“,对应值是一个列表,里面有长尾词”QQ邮箱格式怎么写“,和这个长尾词对应的所有词根集合(set([“QQ”,”邮箱”,”格式”,”怎么”,”写”]))
库2:{长尾词:id}
如:记录”QQ邮箱格式怎么写“,它对应在库1的记录id是”1“
库3:{词根:对应词频}
如:记录”QQ“,它的词频是5,说明它出现在5个关键词里
库4:{词根:对应ID集合}
如:记录”QQ“,它的对应ID集合是set([1,2,3,4,5]),表示有包含它的关键词的对应ID是哪几个

如果对搜索引擎的正排和倒排有了解的话,可以理解这里就是运用了类似的思路,用id对应文档,文档对应词根集合,词根对应文档id集合。
如此一来,无论是提取还是做对比,都可以第一时间返回需要的子集,方便我们计算对比。
我们在百度搜索”QQ邮箱格式怎么写“,你觉得它是怎么工作的呢?
简单粗暴的描述就是分词,然后把包含“QQ”的文章拿出来,包含“邮箱”的文章拿出来,其他同理,然后求文章id的交集,再根据id返回对应的文章,这些文章一定都包含你检索的关键词,当然了,实际上有太多复杂的问题要考虑和处理,简单的理解就是这样。
遍历插入节点的伪代码:
for 词根 in top词根列表:
# 获取词根所有id
id集合 = 库4[词根]
# 新建一个画布
sheet = workbook.createSheet()
sheet.setTitle(词根.decode('utf-8'))
# 新建一个主题
root_topic = sheet.getRootTopic()
root_topic.setTitle(词根.decode('utf-8'))
# 提取词根所有长尾词
lw = [ikw[ids][0] for ids in id集合]
# 统计子top词根列表
子top词根列表 = get_top(lw,set_top=set_top)
for 子词根 in 子top词根列表:
子id集合 = 库4[子词根]
# 插入子主题
sub_topic = root_topic.addSubTopic()
sub_topic.setTitle(子词根.decode('utf-8'))
长尾词集合 = id集合 & 子id集合
长尾词列表 = []
# 打印主题对应的长尾词
for id in 长尾词集合:
长尾词列表.append(库1[id][0])
sub_topic_s_kw = sub_topic_s.addSubTopic()
sub_topic_s_kw.setTitle('\n'.join(长尾词列表[:50]).decode('utf-8'))
这是这套程序核心的代码,可以打印出一份两个层级的思维导图,里面省略了一些细节,需要你去完善它。
如果要打印多层级,需要更多for循环,但显然这不是好的处理方式,由于这是早期写的代码,我会在得空时重新写一套更灵活的代码,你也可以自己研究看看。
综上:两套工具所需要学习的资料、渠道、步骤我们已经了解了,并且核心的代码思路也知道了,剩下的就是自己实现它,并拿来应用。
全部学习时间大概要多久?
周一五晚上两个小时,周末两天火力全开,搞定!
接下来,是给不会代码的朋友的福利,既然不愿意学习代码,那我们“勉强”借用现成的工具也是可以的,虽然它不是很灵活。
第三方工具实现关键词根提取法:
工具1:
5118-需求图谱
用户需求画像_词频统计_自媒体运营策划 – 5118营销大数据
当我们使用这个工具搜索目标关键词的时候,可以看到下面有一个词频放射图:

有没有感觉很熟悉?
其实我就是看到了这个功能后,结合自己的思路,做出来的“关键词根提取法”!
它同样的是由一个核心词,按照词频不断拓展出各层级的词根,通过这个工具一眼就可以看到某个行业的内容结构。
将鼠标放置在某个词根上,左边会显示对于的词频关系介绍。
不同的是他只有节点,没有在节点的最后显示代表性的长尾词,光看词频不太能理解具体的需求是什么。
工具2:
5118-需求图谱-高频需求
用户需求画像_词频统计_自媒体运营策划 – 5118营销大数据
同样是这个链接,有一个“高频需求”的选项卡:

搜索目标词后返回来的结果:

从左到右:
第一列:最高词频的词根
第二列:点击第一列某个词根会显示对应的长尾词
第三列:会从这些长尾词里统计出代表需求的二级词根
第四列:点击每个需求词根又会显示其对应长尾词
因此:
工具1适合我们宏观的了解整个行业脉络
工具2适合我们具体分析微观上的需求
工具很傻瓜化,并没有太多需要讲解的地方。
虽然在直观上思维导图的结构更有利于观察和分类,不过5118给的展示方式也还算可以,至少不影响分析。
当然了,5118毕竟是商业工具,会有数量上的限制。
至于做出“xmind”这样的思维导图,除非一个个去录入,否则没有办法,大量的数据只能是交给程序执行。
小结:
之所以没有直接给代码,是我个人始终坚持“授人以鱼不如授人以渔”,其次如果你直接伸手拿,我相信拿回去的东西你也不会认真看,可能甚至连看下去的毅力都欠缺。
另外最近有在知乎上看一些网赚类、分享项目的文章,诸如那种论坛抄过来的、自己没有验证的、一大堆几年前的项目集合的,感觉很多人写出来的文(gou)章(shi)都蛮受欢迎的,让我感觉浮躁的人挺多,大家都希望别人能直接把钱送过来,看多了月入10万的项目分享,他甚至可能会嫌弃月入5K的项目分享,而能静下心来学习点方法的人很少,或许对于愿意付出的你来说也是个机会。
这篇文章花了三天左右的时间整理出来,自己仔细的梳理了一遍,如果你发现什么不明白的问题,请在评论里提出来。
当你能够使用工具了,建议再回去看一遍那两篇文章。
对了,大概的介绍一下我自己吧:
我是搜索引擎优化出身,包括seo、sem,后面全面转型为付费广告投放,包括信息流(feed),在公司的从业时间将近10年。
目前除了跟朋友运营几个固定的小项目之外,也在业余时间做点价值输出,暂时没有什么盈利的想法或手段,但是我看好互联网内容时代。
依然还是重申一遍:我不直接提供项目,也不做培训,请勿针对这点私信我,当然欢迎沟通交流。
如果本文对你有帮助,啪啪啪的帮我赞一下。