arirl艺术字体在线生成英文有专利吗?

这个问题蛮适合我这种老爬虫来回答。&br&&br&&b&0、IT桔子和36Kr&/b&&br&在专栏文章中(&a href=&http://zhuanlan.zhihu.com/p/& class=&internal&&&span class=&invisible&&http://&/span&&span class=&visible&&zhuanlan.zhihu.com/p/20&/span&&span class=&invisible&&714713&/span&&span class=&ellipsis&&&/span&&/a&),抓取IT橘子和36Kr的各公司的投融资数据,试图分析中国各家基金之间的互动关系。&br&&figure&&img src=&https://pic2.zhimg.com/50/a9f1d74191bccddedc4a94_b.jpg& class=&content_image&&&/figure&&br&&figure&&img src=&https://pic1.zhimg.com/50/a2deb2bcd1dc7e30857ca_b.jpg& class=&content_image&&&/figure&&br&&b&1、知乎&/b&&br&&a href=&http://zhuanlan.zhihu.com/hemingke/& class=&internal&&沧海横流,看行业起伏(2015年) - 数据冰山 - 知乎专栏&/a&,抓取并汇总所有的答案,方便大家阅读,找出2015年最热门和最衰落的行业&br&&figure&&img src=&https://pic3.zhimg.com/50/4cd39c827e666b84cbd24c79f7ace246_b.jpg& data-rawwidth=&734& data-rawheight=&378& class=&origin_image zh-lightbox-thumb& width=&734& data-original=&https://pic3.zhimg.com/50/4cd39c827e666b84cbd24c79f7ace246_r.jpg&&&/figure&有空的时候,准备写爬虫分析知乎的关系链。&br&&br&&b&2、汽车之家&/b&&br&&a href=&http://zhuanlan.zhihu.com/hemingke/& class=&internal&&大数据画像:宝马车主究竟有多任性? - 数据冰山 - 知乎专栏&/a&,利用论坛发言的抓取以及NLP,对各种车型的车主做画像。&br&&figure&&img src=&https://pic4.zhimg.com/50/a09c6f0de7e41e9b2c549450_b.jpg& data-rawwidth=&786& data-rawheight=&295& class=&origin_image zh-lightbox-thumb& width=&786& data-original=&https://pic4.zhimg.com/50/a09c6f0de7e41e9b2c549450_r.jpg&&&/figure&&br&&b&3、天猫、京东、淘宝等电商网站&/b&&br&&a href=&http://zhuanlan.zhihu.com/hemingke/& class=&internal&&超越咨询顾问的算力,在用户理解和维护:大数据改变管理咨询(三) - 数据冰山 - 知乎专栏&/a&,抓取各大电商的评论及销量数据,对各种商品(颗粒度可到款式)沿时间序列的销量以及用户的消费场景进行分析。&br&&figure&&img src=&https://pic2.zhimg.com/50/dec67f28a5d23521acc2_b.jpg& data-rawwidth=&907& data-rawheight=&227& class=&origin_image zh-lightbox-thumb& width=&907& data-original=&https://pic2.zhimg.com/50/dec67f28a5d23521acc2_r.jpg&&&/figure&&br&甚至还可以根据用户评价做情感分析,实时监控产品在消费者心目中的形象,对新发布的产品及时监控,以便调整策略。&br&&figure&&img src=&https://pic4.zhimg.com/50/23ac5cfac6ecf034fa62b79_b.jpg& data-rawwidth=&897& data-rawheight=&235& class=&origin_image zh-lightbox-thumb& width=&897& data-original=&https://pic4.zhimg.com/50/23ac5cfac6ecf034fa62b79_r.jpg&&&/figure&&br&&b&4、58同城的房产、安居客、Q房网、搜房等房产网站&/b&&br&&a href=&http://zhuanlan.zhihu.com/hemingke/& class=&internal&&下半年深圳房价将如何发展 - 数据冰山 - 知乎专栏&/a&,抓取房产买卖及租售信息,对热热闹闹的房价问题进行分析。&br&&figure&&img src=&https://pic2.zhimg.com/50/1bc654e9bb342d4eb641ffbbefd8ff5c_b.jpg& data-rawwidth=&966& data-rawheight=&280& class=&origin_image zh-lightbox-thumb& width=&966& data-original=&https://pic2.zhimg.com/50/1bc654e9bb342d4eb641ffbbefd8ff5c_r.jpg&&&/figure&&br&&b&5、大众点评、美团网等餐饮及消费类网站&/b&&br&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&黄焖鸡米饭是怎么火起来的? - 何明科的回答&/a&,抓取各种店面的开业情况以及用户消费和评价,了解周边变化的口味,所谓是“舌尖上的爬虫”。&br&&figure&&img src=&https://pic2.zhimg.com/50/f33c64adb95db5c74d333b6b3dd9d943_b.jpg& data-rawwidth=&915& data-rawheight=&312& class=&origin_image zh-lightbox-thumb& width=&915& data-original=&https://pic2.zhimg.com/50/f33c64adb95db5c74d333b6b3dd9d943_r.jpg&&&/figure&&br&以及各种变化的口味,比如:啤酒在衰退,重庆小面在崛起。&br&&figure&&img src=&https://pic3.zhimg.com/50/aa87e8b9b7c6_b.jpg& data-rawwidth=&789& data-rawheight=&239& class=&origin_image zh-lightbox-thumb& width=&789& data-original=&https://pic3.zhimg.com/50/aa87e8b9b7c6_r.jpg&&&/figure&&br&&b&6、58同城等分类信息网站&/b&&br&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&花10万买贡茶配方,贵不贵? - 何明科的回答&/a&,抓取招商加盟的数据,对定价进行分析,帮助网友解惑。&br&&figure&&img src=&https://pic2.zhimg.com/50/a27ef823eba15810a13ca_b.jpg& data-rawwidth=&600& data-rawheight=&423& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/50/a27ef823eba15810a13ca_r.jpg&&&/figure&&br&&b&7、拉勾网、中华英才网等招聘网站&/b&&br&&a href=&http://zhuanlan.zhihu.com/hemingke/& class=&internal&&互联网行业哪个职位比较有前途? - 数据冰山 - 知乎专栏&/a&,抓取各类职位信息,分析最热门的职位以及薪水。&br&&figure&&img src=&https://pic1.zhimg.com/50/da726f27c345b2ebeee7b_b.jpg& data-rawwidth=&828& data-rawheight=&250& class=&origin_image zh-lightbox-thumb& width=&828& data-original=&https://pic1.zhimg.com/50/da726f27c345b2ebeee7b_r.jpg&&&/figure&&br&&b&8、挂号网等医疗信息网站&/b&&br&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&如何评价挂号网? - 何明科的回答&/a&,抓取医生信息并于宏观情况进行交叉对比。&br&&figure&&img src=&https://pic3.zhimg.com/50/c0f56f7a0b24ea7948fb_b.jpg& data-rawwidth=&907& data-rawheight=&273& class=&origin_image zh-lightbox-thumb& width=&907& data-original=&https://pic3.zhimg.com/50/c0f56f7a0b24ea7948fb_r.jpg&&&/figure&&br&&b&9、应用宝等App市场&/b&&br&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&你用 Python 做过什么有趣的数据挖掘/分析项目? - 何明科的回答&/a&,对各个App的发展情况进行跟踪及预测。(顺便吹一下牛,我们这个榜单很早就发现小红书App的快速增长趋势以及在年轻人中的极佳口碑)&br&&figure&&img src=&https://pic3.zhimg.com/50/8bd72ca1d34a859c8e373b_b.jpg& data-rawwidth=&705& data-rawheight=&227& class=&origin_image zh-lightbox-thumb& width=&705& data-original=&https://pic3.zhimg.com/50/8bd72ca1d34a859c8e373b_r.jpg&&&/figure&&br&&b&10、携程、去哪儿及12306等交通出行类网站&/b&&br&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&你用 Python 做过什么有趣的数据挖掘/分析项目? - 何明科的回答&/a&,对航班及高铁等信息进行抓取,能从一个侧面反映经济是否正在走入下行通道。&br&&figure&&img src=&https://pic4.zhimg.com/50/096b0c76a3bbe71fe600_b.jpg& data-rawwidth=&600& data-rawheight=&375& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/50/096b0c76a3bbe71fe600_r.jpg&&&/figure&&br&&b&11、雪球等财经类网站&/b&&br&抓取雪球KOL或者高回报用户的行为,找出推荐股票&br&&figure&&img src=&https://pic4.zhimg.com/50/ccfa9c803c52d_b.jpg& data-rawwidth=&847& data-rawheight=&629& class=&origin_image zh-lightbox-thumb& width=&847& data-original=&https://pic4.zhimg.com/50/ccfa9c803c52d_r.jpg&&&/figure&&br&&b&12、58同城二手车、易车等汽车类网站&/b&&br&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&一年当中买车的最佳时间为何时? - 何明科的回答&/a&和&a href=&https://www.zhihu.com/question/& class=&internal&&什么品牌或者型号的二手车残值高?更保值?反之,什么类型的贬值较快? - 二手车&/a&,找出最佳的买车时间以及最保值的汽车。&br&&figure&&img src=&https://pic3.zhimg.com/50/62cae96ee4c1a71b3cba7aa_b.jpg& data-rawwidth=&767& data-rawheight=&280& class=&origin_image zh-lightbox-thumb& width=&767& data-original=&https://pic3.zhimg.com/50/62cae96ee4c1a71b3cba7aa_r.jpg&&&/figure&&br&&b&13、神州租车、一嗨租车等租车类网站&/b&&br&抓取它们列举出来的租车信息,长期跟踪租车价格及数量等信息&br&&figure&&img src=&https://pic1.zhimg.com/50/14edd8948a87_b.jpg& data-rawwidth=&1257& data-rawheight=&371& class=&origin_image zh-lightbox-thumb& width=&1257& data-original=&https://pic1.zhimg.com/50/14edd8948a87_r.jpg&&&/figure&&br&&b&14、各类信托网站&/b&&br&通过抓取信托的数据,了解信托项目的类型及规模&br&&figure&&img src=&https://pic4.zhimg.com/50/c48f749a00a522c8490dac54fa92f5a2_b.jpg& data-rawwidth=&1283& data-rawheight=&601& class=&origin_image zh-lightbox-thumb& width=&1283& data-original=&https://pic4.zhimg.com/50/c48f749a00a522c8490dac54fa92f5a2_r.jpg&&&/figure&&br&&br&其实还有很多数据,不一一列举了。只要有爱数据的心和能爬的虫子,一切且有可能。顺利安利一下,抓取数据只是很小一部分,我们更擅长的是数据分析挖掘、可视化以及个性化的推荐。&br&————————————————————&br&更多文章关注我的专栏:&a href=&http://zhuanlan.zhihu.com/hemingke& class=&internal&&数据冰山 - 知乎专栏&/a&
这个问题蛮适合我这种老爬虫来回答。 0、IT桔子和36Kr 在专栏文章中(),抓取IT橘子和36Kr的各公司的投融资数据,试图分析中国各家基金之间的互动关系。 1、知乎 ,抓取并汇总所…
&figure&&img src=&https://pic3.zhimg.com/v2-d3a93b1ee0c09cf17ceaa12_b.jpg& data-rawwidth=&1920& data-rawheight=&1148& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic3.zhimg.com/v2-d3a93b1ee0c09cf17ceaa12_r.jpg&&&/figure&&p&以前写过几个进阶指南,可能都太难,不接地气。这里重新写一个更实事求是、更便于工程落地的版本。&/p&&p&&br&&/p&&p&0级:掌握正则表达式、SQL、JSON和一门支持if-then-else的高级语言
—— 是的,这些不是知识图谱技术,但是这些可以解决问题。我们要的是解决问题,不是吗?&/p&&p&&br&&/p&&p&1级:学会ER建模(对,就是数据库里的ER建模),理解实体(Entity)和关系(Relation)的概念。这个可能比你想象得难很多。学会更复杂的SQL,能熟练掌握至少一种主流的关系数据库,至少学会一种语言的数据库操作。&/p&&p&&br&&/p&&p&2级:学会两种给实体命名的方法:数据库里的主键,Web上的URI。理解分类树。这时候可以学下RDF了,掌握Turtle和JSON-LD两种语法。会用Java或者Python操作RDF。(小白一般到这里就开始大批阵亡)&/p&&p&&br&&/p&&p&3级:如果还未阵亡,可能发现RDF数据库不是太好用,需要学会一个图数据库(如Neo4j或OrientDB)或者支持JSON的关系数据库(如PostgreSQL)。学会用这些数据库表达关系-实体,和表达分类树。这可以保证以后可以活得再久一点。&/p&&p&&br&&/p&&p&4级:这时候作为一名老兵,你可能已经学会了查询语言SPARQL、Cypher或Gremlin。然后你发现查询语言可以用来写!规!则!天啊,天堂的大门已经打开了。&/p&&p&&br&&/p&&p&5级:你会发现把智能放在数据里要远远好于放在代码里。你会开始鄙视在代码里写大量if-then-else的伪知识图谱爱好者。而且你开始不满足用查询语言客串规则(如用SPIN)。你需要一些真正的推理规则。你开始对OWL感兴趣……然后彻底被搞晕了。&/p&&p&&br&&/p&&p&6级:你发现OWL很强大但是也很难理解,它背后的描述逻辑如同三体人一样充满敌意。然后你发现其实if-then-else也蛮不错的,而且有一个更容易理解的规则语言:logic program。然后你突然发现SQL其实就是一种LP啊(Datalog)!突然一下世界豁然开朗,喜悦充满全身,圣洁的阳光从天上映下。&/p&&p&&br&&/p&&p&7级:在各种奇怪的规则语言中游弋:RIF-BLD,RIF-PRD,SWRL,RuleML,JESS,DLV,XSB,Prolog。发现世界的各种东西都可以按此建模。理解各种推理机的性能。谙熟各种知识建模套路。&/p&&p&&br&&/p&&p&8级:从头到尾设计过一个完整的语义或知识应用,经历落地过程种种工程的巨大陷阱,入坑、爬出来,再入坑、再爬出来,再再入坑……直到爬不出来。&/p&&p&&br&&/p&&p&9级:开始思考人性问题。从认知的角度、社会的角度、组织的角度、经济的角度思考什么是知识,怎么才能真正实施知识系统。&/p&&p&&br&&/p&&p&10级:综合运用正则表达式、SQL、JSON和一门支持if-then-else的高级语言 ,举重若轻解决以上1-9级中遇到的的各种问题。其实你设计出了自己的知识表现语言。&/p&&p&&br&&/p&&p&更多参考:&a href=&https://link.zhihu.com/?target=http%3A//blog.memect.cn/%3Fp%3D2796& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&知识图谱的一些基本功 - 文因互联&/a&&/p&
以前写过几个进阶指南,可能都太难,不接地气。这里重新写一个更实事求是、更便于工程落地的版本。 0级:掌握正则表达式、SQL、JSON和一门支持if-then-else的高级语言 —— 是的,这些不是知识图谱技术,但是这些可以解决问题。我们要的是解决问题,不是吗…
&figure&&img src=&https://pic2.zhimg.com/v2-0714d8ccd65eef06a2b02ba_b.jpg& data-rawwidth=&540& data-rawheight=&278& class=&origin_image zh-lightbox-thumb& width=&540& data-original=&https://pic2.zhimg.com/v2-0714d8ccd65eef06a2b02ba_r.jpg&&&/figure&&p&&b&选自Hackernoon,作者:Gautham Santhosh,机器之心编译。&/b&&/p&&blockquote&Python 是一门非常优美的语言,其简洁易用令人不得不感概人生苦短。在本文中,作者 Gautham Santhosh 带我们回顾了 17 个非常有用的 Python 技巧,例如查找、分割和合并列表等。这 17 个技巧都非常简单,但它们都很常用且能激发不一样的思路。&/blockquote&&p&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D1%26sn%3D08ab94df8d382bf0ff3aa47a042c48bc%26chksm%3D871aeac7b06d63d16eca0a824ac950a3cfe0de31d6131%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&人生苦短,为什么我要用Python?&/a&很多读者都知道 Python 是一种高级编程语言,其设计的核心理念是代码的易读性,以及允许编程者通过若干行代码轻松表达想法创意。&br&&/p&&p&实际上,很多人选择学习 Python 的首要原因是其编程的优美性,用它编码和表达想法非常自然。此外,Python 的编写使用方式有多种,数据科学、网页开发、机器学习皆可使用 Python。Quora、Pinterest 和 Spotify 都使用 Python 作为其后端开发语言。&/p&&p&&br&&/p&&p&交换变量值&/p&&figure&&img src=&https://pic4.zhimg.com/v2-43864caf62cde_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&365& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-43864caf62cde_r.jpg&&&/figure&&p&&br&&/p&&p&将列表中的所有元素组合成字符串&/p&&figure&&img src=&https://pic3.zhimg.com/v2-c5b891deba926d58abfe_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&311& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-c5b891deba926d58abfe_r.jpg&&&/figure&&p&&br&&/p&&p&查找列表中频率最高的值&/p&&figure&&img src=&https://pic1.zhimg.com/v2-be2926bab29b580f4d6f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&530& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic1.zhimg.com/v2-be2926bab29b580f4d6f_r.jpg&&&/figure&&p&&br&&/p&&p&检查两个字符串是不是由相同字母不同顺序组成&/p&&figure&&img src=&https://pic3.zhimg.com/v2-5299dbd5f240d0e4d949_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&343& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-5299dbd5f240d0e4d949_r.jpg&&&/figure&&p&&br&&/p&&p&反转字符串&/p&&figure&&img src=&https://pic3.zhimg.com/v2-719b679d5d5d56f8a67d81_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&746& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-719b679d5d5d56f8a67d81_r.jpg&&&/figure&&p&&br&&/p&&p&反转列表&/p&&figure&&img src=&https://pic3.zhimg.com/v2-11dff28af_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&439& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-11dff28af_r.jpg&&&/figure&&p&&br&&/p&&p&转置二维数组&/p&&figure&&img src=&https://pic3.zhimg.com/v2-2b615dc8b668ec9def08b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&381& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-2b615dc8b668ec9def08b_r.jpg&&&/figure&&p&&br&&/p&&p&链式比较&/p&&figure&&img src=&https://pic4.zhimg.com/v2-b36ac4f3efb32bfe7fc54f5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1075& data-rawheight=&483& class=&origin_image zh-lightbox-thumb& width=&1075& data-original=&https://pic4.zhimg.com/v2-b36ac4f3efb32bfe7fc54f5_r.jpg&&&/figure&&p&&br&&/p&&p&链式函数调用&/p&&figure&&img src=&https://pic1.zhimg.com/v2-10f9eeeb903c2c3b4e858f41f518c719_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&526& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic1.zhimg.com/v2-10f9eeeb903c2c3b4e858f41f518c719_r.jpg&&&/figure&&p&&br&&/p&&p&复制列表&/p&&figure&&img src=&https://pic3.zhimg.com/v2-7cfdb2d5b0f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&653& data-rawheight=&916& class=&origin_image zh-lightbox-thumb& width=&653& data-original=&https://pic3.zhimg.com/v2-7cfdb2d5b0f_r.jpg&&&/figure&&p&&br&&/p&&p&字典 get 方法&/p&&figure&&img src=&https://pic1.zhimg.com/v2-c7c9de4a05fcce697cccc60a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&442& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic1.zhimg.com/v2-c7c9de4a05fcce697cccc60a_r.jpg&&&/figure&&p&&br&&/p&&p&通过「键」排序字典元素&/p&&figure&&img src=&https://pic1.zhimg.com/v2-a787dd5f58f6b866ebeb9f9b233df2b0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&579& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic1.zhimg.com/v2-a787dd5f58f6b866ebeb9f9b233df2b0_r.jpg&&&/figure&&p&&br&&/p&&p&For Else&/p&&figure&&img src=&https://pic4.zhimg.com/v2-fc0e8f020ee_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&472& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-fc0e8f020ee_r.jpg&&&/figure&&p&&br&&/p&&p&转换列表为逗号分割符格式&/p&&figure&&img src=&https://pic3.zhimg.com/v2-9da17a4d0fdc_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&658& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-9da17a4d0fdc_r.jpg&&&/figure&&p&&br&&/p&&p&合并字典&/p&&figure&&img src=&https://pic4.zhimg.com/v2-ac1ffcb2ba654_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&576& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-ac1ffcb2ba654_r.jpg&&&/figure&&p&&br&&/p&&p&列表中最小和最大值的索引&/p&&figure&&img src=&https://pic4.zhimg.com/v2-be44d320ffb993ef_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&652& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-be44d320ffb993ef_r.jpg&&&/figure&&p&&br&&/p&&p&移除列表中的重复元素&/p&&figure&&img src=&https://pic4.zhimg.com/v2-234c0d4df75bb7bdb52151_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&523& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-234c0d4df75bb7bdb52151_r.jpg&&&/figure&&p&&/p&&p&&/p&&p&&/p&
选自Hackernoon,作者:Gautham Santhosh,机器之心编译。Python 是一门非常优美的语言,其简洁易用令人不得不感概人生苦短。在本文中,作者 Gautham Santhosh 带我们回顾了 17 个非常有用的 Python 技巧,例如查找、分割和合并列表等。这 17 个技巧都非常…
&figure&&img src=&https://pic4.zhimg.com/v2-3ceb18afa2fe_b.jpg& data-rawwidth=&600& data-rawheight=&232& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/v2-3ceb18afa2fe_r.jpg&&&/figure&&h2&1 前言&/h2&&p&Meta RL(Meta Reinforcement Learning)是Meta Learning应用到Reinforcement Learning的一个研究方向,核心的想法就是希望AI在学习大量的RL任务中获取足够的先验知识Prior Knowledge然后在面对新的RL任务时能够 学的更快,学的更好,能够自适应新环境!&/p&&p&本文将对近年来Meta RL的重要论文进行idea层面的解读,希望对感兴趣于Meta RL的朋友有所帮助。&/p&&h2&2 Meta RL Paper List&/h2&&p&[1] Wang, Jane X., et al. &&b&Learning to reinforcement learn&/b&.&&i&arXiv preprint arXiv:&/i&(2016).&/p&&p&[2] Wang, Jane X., et al. &&b&Prefrontal cortex as a meta-reinforcement learning system&/b&.&&i&Nature neuroscience&/i&21.6 (2018): 860.&/p&&p&[3] Duan, Yan, et al. &&b&RL2: Fast Reinforcement Learning via Slow Reinforcement Learning&/b&.&&i&arXiv preprint arXiv:&/i&(2016).&/p&&p&[4] Finn, Chelsea, Pieter Abbeel, and Sergey Levine. &&b&Model-agnostic meta-learning for fast adaptation of deep networks&/b&.&&i&arXiv preprint arXiv:&/i&(2017).&/p&&p&[5] Mishra, Nikhil, et al. &&b&A simple neural attentive meta-learner&/b&.& (2018).&/p&&p&[6] Houthooft, Rein, et al. &&b&Evolved policy gradients&/b&.&&i&arXiv preprint arXiv:&/i&(2018).&/p&&p&[7] Gupta, Abhishek, et al. &&b&Meta-Reinforcement Learning of Structured Exploration Strategies&/b&.&&i&arXiv preprint arXiv:&/i&(2018).&/p&&p&[8] Stadie, Bradly C., et al. &&b&Some considerations on learning to explore via meta-reinforcement learning&/b&.&&i&arXiv preprint arXiv:&/i&(2018).&/p&&p&[9] Xu, Tianbing, et al. &&b&Learning to Explore with Meta-Policy Gradient&/b&.&&i&arXiv preprint arXiv:&/i&(2018).&/p&&p&[10] Clavera, Ignasi, et al. &&b&Learning to Adapt: Meta-Learning for Model-Based Control&/b&.&&i&arXiv preprint arXiv:&/i&(2018).&/p&&p&[11] Xu, Zhongwen, Hado van Hasselt, and David Silver. &&b&Meta-Gradient Reinforcement Learning&/b&.&&i&arXiv preprint arXiv:&/i&(2018).&/p&&p&[12] Xu, Kelvin, et al. &&b&Learning a Prior over Intent via Meta-Inverse Reinforcement Learning&/b&.&&i&arXiv preprint arXiv:&/i&(2018).&/p&&p&[13] Gupta, Abhishek, et al. &&b&Unsupervised Meta-Learning for Reinforcement Learning&/b&.&&i&arXiv preprint arXiv:&/i&(2018).&/p&&h2&3 论文解读&/h2&&p&[1][2][3] 这三篇文章可以说是Deep Meta Reinforcement Learning的之作,其中[1][3]idea相同,几乎是同一时间出来的paper,而[2]则是在[1]基础上从神经科学的角度进行拓展。&/p&&p&那么Meta Reinforcement Learning最核心的思想是什么呢?&/p&&figure&&img src=&https://pic3.zhimg.com/v2-9e13affb207cd7095e1c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1470& data-rawheight=&848& class=&origin_image zh-lightbox-thumb& width=&1470& data-original=&https://pic3.zhimg.com/v2-9e13affb207cd7095e1c_r.jpg&&&/figure&&p&简单的说就是将上一个step的reward,action等信息也输入当前的RNN中进行决策(这里由于是recurrent的关系,可以认为是把之前的所有历史轨迹trajectory(state,action,reward)都输入到神经网络中),这样通过训练神经网络可以使得其自动学习去判断task层面的信息(也就是meta层面的信息),从而加快新task的训练过程。这也就是从RL到Meta RL最基本的变化。&/p&&p&那么,既然RNN可以,我们也可以考虑使用非RNN,比如Temporal Convolution的方法来处理历史transition,因此就有了[5] 这篇文章:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-b0c6d32b24c6ebbb5077918decb16ac9_b.jpg& data-caption=&& data-size=&small& data-rawwidth=&736& data-rawheight=&1104& class=&origin_image zh-lightbox-thumb& width=&736& data-original=&https://pic2.zhimg.com/v2-b0c6d32b24c6ebbb5077918decb16ac9_r.jpg&&&/figure&&p&[5] 采用了类似wavenet的方式来处理sequence信息,实际上就是直接把整个sequence输入到网络中进行处理,这样相比于RNN的做法消除了因为长记忆造成的信息损失问题,所以相比RNN的Meta RL算法可以取得更好的效果。&/p&&p&[4] 则从optimization的角度出发,构造了一个非常简单但很有名的算法MAML,那么MAML在RL上和前面的方法有什么不一样吗?&/p&&figure&&img src=&https://pic4.zhimg.com/v2-0f1a83f474f8a71cf11ef_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1044& data-rawheight=&852& class=&origin_image zh-lightbox-thumb& width=&1044& data-original=&https://pic4.zhimg.com/v2-0f1a83f474f8a71cf11ef_r.jpg&&&/figure&&p&思想上是一模一样的,都是要利用历史的trajectory,只是怎么利用呢?MAML的做法是先用之前的trajectory对神经网络做一次更新,然后再使用更新后的网络进一步训练,通过二次梯度更新整个网络参数。这样本质上也是充分利用历史信息来学习一个好的prior (在MAML中就是一个好的初始化)。&/p&&p&那么[1]-[5]这几篇文章可以说是对Meta RL算法奠定了基础,接下来的文章则是从各种角度出来,去探索Meta RL,那我们就细化的来单独说说每一篇文章的核心idea。&/p&&p&&b&[6] Evolved Policy Gradients &/b&&/p&&p&这篇文章也可以认为是Meta RL的一种基础算法,只是换一个角度来处理历史信息。这里再多说几句历史信息和Meta RL的关系。&b&所谓的Meta其实就是通过历史信息来获取有用的先验知识&/b&,这些先验知识可以是比如环境的状态,agent自身的状态。这里举个例子,我们人玩游戏的时候其实都是基于先验知识的。比如我们玩过帝国时代,那么我们玩星际争霸就会很容易直接上手,因为我们在玩帝国时代时我们获取了经验(历史信息),通过这些经验我们学到一个先验知识(游戏模式),从而在我们玩星际争霸(新的任务),我们可以根据我们的先验知识进行快速知识迁移,从而更快的上手游戏。&/p&&p&回到这篇文章上,这篇文章很巧妙的把历史信息编码到一个loss function上而不是一个神经网络中。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-ea195ed2a3cfe_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1090& data-rawheight=&410& class=&origin_image zh-lightbox-thumb& width=&1090& data-original=&https://pic4.zhimg.com/v2-ea195ed2a3cfe_r.jpg&&&/figure&&p&在内循环中,RL训练使用我们构造出来的Loss function来更新policy,这个更新过程我们可以得到历史trajectory,包含其中的reward。在外循环中这里使用进化算法来更新Loss使得这个loss能够使得policy学习的更快。那么通过meta training的过程,我们就可以得到一个越来越好的loss function。&/p&&p&那么实际上由于loss function是一个非常general的东西,并没有那么容易学。简单的想想监督学习上要如何才能用神经网络去拟合一个cross entropy loss呢?很难,状态空间很大。所以这个方法目前只能在一些小的实验上取得一定的效果,任务如果变得复杂训练难度将会越来越大。&/p&&p&&b&[7][8][9]&/b&三篇文章都是在learning to explore上进行研究。因为我们知道exploration是RL中很重要的一个研究问题,那么现在Meta RL既然等价于学习了一个RL算法,那么本身就等于学会了如何explore。可以说exploration的效果其实也直接决定了学习的效率,所以为什么不专门研究一下learning to explore呢?&/p&&p&[7] 这篇文章的思想其实非常简单,就是在现有policy的输入上增加了一个高斯分布的latent state:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-4c0500ec_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&456& data-rawheight=&440& class=&origin_image zh-lightbox-thumb& width=&456& data-original=&https://pic4.zhimg.com/v2-4c0500ec_r.jpg&&&/figure&&p&加上随机latent variable可以说人为的大幅度提升了exploration的效率,那么基于此采用MAML的训练方法可以自适应的学习到一个好的latent variable来正确的促进exploration,也就学到了更好的exloration能力了。&/p&&p&[8] 这篇文章则是在MAML和RL2两个算法上做考虑,给两个算法分别做一些改变,来增强算法的exploration能力。对于MAML,文章提出E-MAML,在MAML的更新公式上增加一个exploration项:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-60c31a2ed7fc104b64f9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1026& data-rawheight=&680& class=&origin_image zh-lightbox-thumb& width=&1026& data-original=&https://pic1.zhimg.com/v2-60c31a2ed7fc104b64f9_r.jpg&&&/figure&&p&这个exploration项为上面公式的后一项,使用未更新参数的policy获取的trajectory &img src=&https://www.zhihu.com/equation?tex=%5Cbar%7B%5Ctau%7D& alt=&\bar{\tau}& eeimg=&1&& 但是实验更新参数后的 &img src=&https://www.zhihu.com/equation?tex=R%28%5Ctau%29& alt=&R(\tau)& eeimg=&1&& 来作为reward,这样就希望当前policy能够更explorative来使最后的reward最大。&/p&&p&对于RL2,文章提出E-RL2,很巧妙的通过同时采样exploratory episode和non-exploratory episode,但是仅使用non-exploratory episode来进行梯度更新。这样的目的就是希望RNN能够把non-exploratory episode也当做exploratory episode来处理,只有尽可能的explore,才能获取更高的reward。&/p&&p&实验表明这两种拓展方法在exploration上都取得更好的效果。&/p&&p&&b&[9] Learning to Explore with Meta-Policy Gradient &/b&这篇出自百度research的文章比较有意思,这篇文章和前两篇在现有meta rl基础上直接加exploration项的想法完全不一样,而是真正的构造了一个exploration policy来做exploration。文章针对DDPG这个连续控制算法,以往DDPG做explore非常简单,是给输出加上noise。那么这篇文章的idea是单独构造一个stochastic exploration policy,由这个policy采集样本存到replay buffer进行训练。那么问题在于怎么训练这个exploration policy呢?那我们可以采样传统policy gradient的方法,只是需要给这个训练一个reward信号。所以,这里就构造一个meta reward,meta reward 等于更新前policy采样得到的reward和更新后policy采样得到的reward的差值,也就是看使用exploration policy采样训练得到的policy是不是效果更好作为reward指标,有了这个指标,我们就可以来训练这exploration policy了。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-bc944ceb64e4af1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&798& data-rawheight=&848& class=&origin_image zh-lightbox-thumb& width=&798& data-original=&https://pic2.zhimg.com/v2-bc944ceb64e4af1_r.jpg&&&/figure&&p&这个idea很有意思,等于构造了一个teacher-student 框架来学习,而且是teacher 和student互相学习,student就是按teacher的意思来学,而teacher则根据student的学习情况来调整教学方式。实验表明本文的方法能够有效的提升DDPG的效果,并且减少采样数量,说明exploration确实更好。&/p&&p&接下来几篇文章则是从其他思路来思考Meta Reinforcement Learning:&/p&&p&&b&[10]Learning to Adapt: Meta-Learning for Model-Based Control&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c78fa403f15e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1162& data-rawheight=&964& class=&origin_image zh-lightbox-thumb& width=&1162& data-original=&https://pic4.zhimg.com/v2-c78fa403f15e_r.jpg&&&/figure&&p&这篇文章考虑的是Model Adaptation的问题。我们前面知道,Meta RL中的Meta信息主要就是task层的信息,包括环境的信息,也就是model。那么我们就很自然想能否学习一个meta model,这样面对新的环境,我们能够根据历史信息快速adapt到一个新的model,然后我们可以使用model-based reinforcement learning的方法来获取action。有了这样的考虑,这篇文章的idea也就出来了。再简单的说就是既然Meta可以获取model信息,那么我们为何不专门学一个meta model呢?&/p&&p&具体怎么做呢?我们要学到一个meta model &img src=&https://www.zhihu.com/equation?tex=%5Ctheta_%7B%5Cvarepsilon%7D& alt=&\theta_{\varepsilon}& eeimg=&1&& 和一个更新法则 &img src=&https://www.zhihu.com/equation?tex=u_%7B%5Cpsi%7D& alt=&u_{\psi}& eeimg=&1&& 使得&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Ctheta%5E%7B%27%7D_%7B%5Cvarepsilon%7D+%3D+u_%7B%5Cpsi%7D%28%5Ctau%28t-M%2Ct-1%29%2C%5Ctheta_%7B%5Cvarepsilon%7D%29& alt=&\theta^{'}_{\varepsilon} = u_{\psi}(\tau(t-M,t-1),\theta_{\varepsilon})& eeimg=&1&&&/p&&p&这样我们只要有一段之前的trajectory,我们就可以对model进行adapt,那么这里我们的loss就是希望新的model能够更符合真实的model dynamics,也就是&/p&&figure&&img src=&https://pic3.zhimg.com/v2-9d1baf56b70c587e204c5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1878& data-rawheight=&210& class=&origin_image zh-lightbox-thumb& width=&1878& data-original=&https://pic3.zhimg.com/v2-9d1baf56b70c587e204c5_r.jpg&&&/figure&&p&有了这个meta model,接下来就可以直接使用MPC来获取action,整个meta learning过程:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-9ba9cfbd4f93abd638106_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1140& data-rawheight=&802& class=&origin_image zh-lightbox-thumb& width=&1140& data-original=&https://pic4.zhimg.com/v2-9ba9cfbd4f93abd638106_r.jpg&&&/figure&&p&核心还是在meta model的训练上,meta model和后面的MPC控制没有直接连续。&/p&&p&训练meta model可以使用RNN的方式也可以使用MAML的方式,这里就不具体分析。&/p&&p&总的来说这篇文章的工作还是比较有启发意义的,真正专门去学习一个meta model,从而能够使用model-based 方法取得更好的效果,更sample efficiency。之前的方法只能说将model信息隐含在了meta rl算法里面。&/p&&p&&b&[11] Meta-Gradient Reinforcement Learning&/b&&/p&&p&这篇文章出自DeepMind David Silver团队,文章的思路也很有意思,也就是我们能不能学一个meta return呢?我们知道整个RL的算法收到result计算的严重影响,一般result计算比如 &img src=&https://www.zhihu.com/equation?tex=TD%28%5Clambda%29& alt=&TD(\lambda)& eeimg=&1&& 是:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-4ca9fafaf49db_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1580& data-rawheight=&304& class=&origin_image zh-lightbox-thumb& width=&1580& data-original=&https://pic3.zhimg.com/v2-4ca9fafaf49db_r.jpg&&&/figure&&p&那么这里有两个meta参数,一个是discount factor &img src=&https://www.zhihu.com/equation?tex=%5Cgamma& alt=&\gamma& eeimg=&1&& ,一个的TD参数 &img src=&https://www.zhihu.com/equation?tex=%5Clambda& alt=&\lambda& eeimg=&1&& 。所以这篇文章的想法很简单,能不能meta的学这两个参数,并且在训练过程中不断调整到最优呢?那么答案是可以的,文章通过推导发现现有的RL算法不管是DQN还是A3C都可以计算这些meta参数的梯度,使得这些参数朝有利于结果的方向发展。这样这个算法就是对现有算法的一个额外的加成,类似于给汽车发动机加了一个涡轮增压。以前的算法这些参数都是人工选择的,固定,现在是自动adapt的,肯定要更好。因此,这篇文章将算法添加到IMPALA上,在ATARI实验上取得了sota的结果。&/p&&p&&b&[12] Learning a Prior over Intent via Meta-Inverse Reinforcement Learning&/b&&/p&&p&从前面两篇文章大家会发现meta learning很重要一点就是思考meta什么东西,反正基本能想到的原来固定不变的,或者人为设定的都可以变成meta项。&/p&&p&那么这篇文章的想法是:那么我们来meta reward function怎么样?我们来研究一下inverse reinforcement learning,我们通过学习很多task,那么按道理在新task上面我们可以更快速更好的利用prior得到好的reward function。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d7d152b75e0a27b4a78d72_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1522& data-rawheight=&836& class=&origin_image zh-lightbox-thumb& width=&1522& data-original=&https://pic4.zhimg.com/v2-d7d152b75e0a27b4a78d72_r.jpg&&&/figure&&p&那么这篇文章还是直接研究使用图像输入,本质上这篇文章应该叫做few shot IRL,就是我们希望能够用少量样本来学习一个reward function,这也能直接通向few shot imitation learning。采样的核心思路还是MAML,通过MAML学习到一个Prior,然后看到新的task,能够直接快速更新得到adapted reward,然后我们希望使用adapted reward能够得到好的训练结果。这篇文章只能说是常规思路,但是其实实验难度挺大的,能work很不容易。&/p&&p&&b&[13] Unsupervised Meta-Learning for Reinforcement Learning&/b&&/p&&p&最后介绍一下这篇文章,简直思路清奇。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-6ddac83f6c121f63f5b50f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2342& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&2342& data-original=&https://pic4.zhimg.com/v2-6ddac83f6c121f63f5b50f_r.jpg&&&/figure&&p&这篇文章考虑的问题很不一样,是一种unsupervised reinforcement learning的设定。也就是我们能不能先熟悉学习一个具体环境,然后对这个环境有了解后,无论环境给出什么任务,我们都要能快速的学会。&/p&&p&所以,这里的情况是在train的时候是没有reward的,只有在test的时候有。&/p&&p&问题就在于没有reward的时候怎么训练呢?&/p&&p&这里就需要这篇文章的作者之前研究:&/p&&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Learning Skills without a Reward Function&/a&&p&这篇文章基于互信息提出了一种RL算法DIAYN,能够在完全没有reward的情况下学习,当然具体还是需要reward的,只不过是基于互信息构造了一个reward function,那么通过这个学习,就能够学到很多技巧,之后再指定具体task reward,能够取到加速学习的作用。&/p&&p&那么实际上有了DIAYN这个算法,通过Meta Learning的思路也就能够进行训练,因为我们在test阶段是有真实reward的,我们就可以基于此通过MAML的方式将梯度传递到train阶段,来训练我们的无监督过程。经过训练的模型面对新的环境,也就可以实现快速的unsupervised reinforcement learning了。&/p&&p&其实这篇文章的动机倒是容易想到,因为meta learning具备这样实现无监督学习的能力,之前一篇learning unsupervised learning rules也是比较类似的思路,只是在半监督学习上研究。在reinforcement learning构造出这样的模型是比较巧妙的,是在DIAYN这个算法基础上自然提出的。&/p&&h2&4 一点小结&/h2&&p&从上面的这么多论文来看,Meta RL目前是一个非常有活力的研究问题,大家在采用各种不同的meta角度去思考问题,构造出新的meta xxx来研究。但是Meta RL相对于Meta Learning for Few Shot Learning研究门槛要高很多,实验难度大很多,也因此我们看到Meta RL的研究基本上被Sergey Levine团队给包了,而Meta Learning在Few Shot Learning上则比较百花齐放。总的来说,可以Meta的东西很多,Meta Model也好,Meta Reward也好,Meta HyperParameters也好,或者直接Meta Learning algorithm,都能有助于提升算法面对新task的适应能力,从而提升效果。相信接下来还会有更多新奇的idea出现。&/p&
1 前言Meta RL(Meta Reinforcement Learning)是Meta Learning应用到Reinforcement Learning的一个研究方向,核心的想法就是希望AI在学习大量的RL任务中获取足够的先验知识Prior Knowledge然后在面对新的RL任务时能够 学的更快,学的更好,能够自适应新环…
&figure&&img src=&https://pic3.zhimg.com/v2-b802af906f86b76650d6_b.jpg& data-rawwidth=&568& data-rawheight=&352& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&https://pic3.zhimg.com/v2-b802af906f86b76650d6_r.jpg&&&/figure&&p&&/p&&p&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-77ae6b35a10a47c2e141_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&568& data-rawheight=&352& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&https://pic1.zhimg.com/v2-77ae6b35a10a47c2e141_r.jpg&&&/figure&&p&&br&&/p&&p&咱们以《三国演义》人名和兵器谱为例,尝试读取不同结构的文本文件,并且对其中的信息进行统计分析和可视化。&/p&&p&&br&&/p&&h2&&b&入门&/b&&/h2&&p&&br&&/p&&p&如何帮助学生高效入门 Python ,一直是困扰我的问题。&/p&&p&总结经验后,我写下了《&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&如何高效学Python?&/a&》一文。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-23ebcabc781cc3f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2880& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&2880& data-original=&https://pic3.zhimg.com/v2-23ebcabc781cc3f_r.jpg&&&/figure&&p&&br&&/p&&p&文中按照&b&自律能力&/b&,我把学生分成了3个类别。&/p&&p&自律能力最高的,看书就行。文中推荐了我认为最好的 Python 书籍,有中文译本;&/p&&p&自律能力中等的,可以学各种轻量级课程组合。除了我当时推荐的课程平台外,最近我发现 Udemy 上的某些课程,也很不错;&/p&&p&自律能力较低的,可以学一门比较完整的专项课程。我推荐了经典 Python 入门课“Programming for Everybody”。&/p&&p&这篇文章很受欢迎,多个平台上阅读量都数以万计。&/p&&p&可是,有一个统计规律,我写作时,似乎没有考虑到。&/p&&p&直到后来,我收到了多名读者的留言反馈,才恍然大悟。&/p&&p&这个统计规律是:&/p&&p&&br&&/p&&blockquote& 自律能力,和英文能力,是显著&b&正相关&/b&的。&/blockquote&&p&&br&&/p&&p&仔细诼磨一下这句话,是不是能品出些滋味来?&/p&&p&如果一个学生自律能力较低,去尝试 “Programming for Everybody”,结果会发现英文听不懂,于是放弃……&/p&&p&读者的反馈,让我意识到了,找一门靠谱的、全面系统讲解 Python 基础的中文在线课程,是很重要的。&/p&&p&这样的课程,如果能够达到 “Programming for Everybody”的深度与广度,那么学过后,再进一步学数据挖掘、机器学习,乃至深度神经网络,就可以水到渠成了。&/p&&p&前几天,看到卖桃君(MacTalk,池建强老师的公众号)又重发了《人生苦短,我用 Python》的感言,我就知道又一门 Python 基础课程来了。&/p&&p&果不其然,池老师推荐的,是他们公司《极客时间》平台上的一门新 Python 课程《零基础学 Python》,主讲人是尹会生老师,金山软件西山居技术经理。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-4e62c28976fbeee7e503e1a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic1.zhimg.com/v2-4e62c28976fbeee7e503e1a_r.jpg&&&/figure&&p&&br&&/p&&p&虽然我不需要“&b&零基础&/b&”学 Python,但是我很想了解这门课,是否足够培训培训新入学的研究生,迅速掌握 Python 。&/p&&p&我很快就付费订阅了。&/p&&p&周末,我花了两个半天的时间,把目前已上线的27个视频(预计总视频数量50个),都从头到尾,完整看了一遍。&/p&&p&许多环节,我都实际跑了代码,还做了笔记。&/p&&p&我觉得,这门课对于我这个“非零基础”的学员,有不少帮助和启发。&/p&&p&如果你一直从事某一方面的工作或研究,即便是 Python 这么简单的语言,很多语法和技巧,你也不会经常用到。&/p&&p&用进废退。很多你学过的东西,也会遗忘掉。&/p&&p&系统地梳理知识体系,可以帮助自己补足漏洞,不至于经常“重新发明轮子”。&/p&&p&另外,我发现之前教程读者不断提出的一些问题,其实都跟 Python 基础命令的不熟悉有关系。&/p&&p&例如几乎每次教程,都要用到的文件操作,以读取外部数据。&/p&&p&你知道可以用 Pandas 读取与分析处理 csv 文件或者 Excel 文件。&/p&&p&但是那些非结构化的文本文件,你该如何读取与分析呢?&/p&&p&如果遇到编码问题,该怎么办?&/p&&p&尹老师在视频教程中,讲解了《三国演义》人名与兵器出现次数统计的例子,让我眼前一亮,觉得确实是很好的分析案例。&/p&&p&一个例子里面,不仅讲解了文件操作,还顺带复习了字符串、列表和字典等多项知识点。&/p&&p&而且我也是个《三国》迷,上中学的时候玩儿《三国志IV》非常上瘾。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c0f80a1b4fa116fd1ff8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&378& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic4.zhimg.com/v2-c0f80a1b4fa116fd1ff8_r.jpg&&&/figure&&p&&br&&/p&&p&为了修改武将技能和数值,还专门学会了16进制。&/p&&p&我在思考,如果换作自己授课,用同样的数据作为例子,给学生讲文件读取、字符串拆分、列表循环、字典生成……我会怎么讲呢?&/p&&p&作为行动派,我立刻就做了个视频教程出来。&/p&&p&&br&&/p&&h2&&b&视频教程&/b&&/h2&&p&&br&&/p&&p&我采用 Jupyter Notebook 撰写了源代码,然后调用 mybinder ,把教程的运行环境扔到了云上。&/p&&p&请点击&a href=&https://link.zhihu.com/?target=http%3A//t.cn/R1TLtxq& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这个链接&/a&(&a href=&https://link.zhihu.com/?target=http%3A//t.cn/R1TLtxq& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&t.cn/R1TLtxq&/span&&span class=&invisible&&&/span&&/a&),直接进入咱们的实验环境。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-a7b7cae9dd8d513c7dddff4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2880& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&2880& data-original=&https://pic4.zhimg.com/v2-a7b7cae9dd8d513c7dddff4_r.jpg&&&/figure&&p&&br&&/p&&p&你&b&不需要&/b&在本地计算机安装任何软件包。只要有一个现代化浏览器(包括Google Chrome, Firefox, Safari和Microsoft Edge等)就可以了。全部的依赖软件,我&b&都已经为你准备好&/b&了。&/p&&p&如果你对这个代码运行环境的构建过程感兴趣,欢迎阅读我的《&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&如何用iPad运行Python代码?&/a&》一文。&/p&&p&浏览器中开启了咱们的环境后,请你观看我给你录制的视频教程。&/p&&p&视频教程的链接在&a href=&https://link.zhihu.com/?target=http%3A//v.qq.com/x/page/p0675mfar27.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这里&/a&。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-adcdd6c0baa5e3c9e153467_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2880& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&2880& data-original=&https://pic2.zhimg.com/v2-adcdd6c0baa5e3c9e153467_r.jpg&&&/figure&&p&&br&&/p&&p&希望你能跟着教程,实际操作一遍。这样收获会比较大。&/p&&p&教程的末尾,我给你留了一道练习题。说明了练习题的要求,还给出了辅助框架代码。&/p&&p&请你自行尝试解决该练习题,以巩固所学知识。&/p&&p&如果你解完了练习题,或者在解题过程中遇到了问题,欢迎参考我做的练习解答视频,核对参考答案。&/p&&p&这段视频的链接在&a href=&https://link.zhihu.com/?target=http%3A//v.qq.com/x/page/j0675juqpek.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这里&/a&。&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/528896& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic3.zhimg.com/80/v2-64d44d1e42ba_b.jpg& data-lens-id=&528896&&
&img class=&thumbnail& src=&https://pic3.zhimg.com/80/v2-64d44d1e42ba_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/528896&/span&
&p&&br&&/p&&p&通过本教程,希望你已经掌握了以下知识:&/p&&p&&br&&/p&&ul&&li&如何读取文本文件;&/li&&/ul&&p&&br&&/p&&ul&&li&如何把字符串分割成列表;&/li&&/ul&&p&&br&&/p&&ul&&li&如何依据顺序,找出列表中的某一项内容;&/li&&/ul&&p&&br&&/p&&ul&&li&如何遍历列表;&/li&&/ul&&p&&br&&/p&&ul&&li&如何统计字符串a中,字符串b出现的次数;&/li&&/ul&&p&&br&&/p&&ul&&li&如何新建,并用遍历方法,填充字典;&/li&&/ul&&p&&br&&/p&&ul&&li&如何读入外部帮助函数模块,并调用其功能函数;&/li&&/ul&&p&&br&&/p&&p&&br&&/p&&p&如果你希望在本地,而非云端运行本教程中的样例,请使用&a href=&https://link.zhihu.com/?target=http%3A//t.cn/R1T4400& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这个链接&/a&(&a href=&https://link.zhihu.com/?target=http%3A//t.cn/R1T4400& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&t.cn/R1T4400&/span&&span class=&invisible&&&/span&&/a&)下载本文用到的全部源代码和运行环境配置文件(Pipenv)压缩包。&/p&&p&然后,请你参考《&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&如何用 pipenv 克隆 Python 教程代码运行环境?&/a&》一文的说明,利用 Pipenv ,在本地构建代码运行环境。&/p&&p&如果你知道&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&如何使用github&/a&,也欢迎用&a href=&https://link.zhihu.com/?target=http%3A//t.cn/R1T4iL5& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这个链接&/a&(&a href=&https://link.zhihu.com/?target=http%3A//t.cn/R1T4iL5& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&t.cn/R1T4iL5&/span&&span class=&invisible&&&/span&&/a&)访问对应的github repo,进行clone或者fork等操作。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-6cd442a868ebc1b6b8d68b5a2337de41_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2880& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&2880& data-original=&https://pic4.zhimg.com/v2-6cd442a868ebc1b6b8d68b5a2337de41_r.jpg&&&/figure&&p&&br&&/p&&p&当然,要是能给我的repo加一颗星,就更好了。&/p&&p&&br&&/p&&h2&&b&建议&/b&&/h2&&p&&br&&/p&&p&录完视频,我做个对比分析:&/p&&p&我俩的讲法,到底有哪些不同?&/p&&p&细节的差别,可能有很多。但是大多都不重要。&/p&&p&我只想给尹老师提一个建议——把握&b&节奏&/b&。&/p&&p&这里的节奏,主要是为了学生和老师分别获得&b&即时反馈&/b&用的。&/p&&p&编程不是一门看了,甚至听了,就能懂的课。&/p&&p&这就是为什么,得到App至今也没有上线编程课程。&/p&&p&编程必须要强调训练,注重实践。&/p&&p&训练该在什么时候做?&/p&&p&来自 Coursera, Udacity, 和 DataCamp 等平台的经验是:&/p&&p&&br&&/p&&blockquote& 间隔必须足够短。&/blockquote&&p&&br&&/p&&p&老师得盯住学生在学完知识点后,旋即练习。&/p&&p&通过练习,把握知识和技能,提升应用能力。&/p&&p&学生在练习中遇到了疑惑,及时提问,加以解决,可以避免疑问的非线性积攒。&/p&&p&如果你不理解“疑问的非线性积攒”,可以回忆你学微积分或随机过程的遭遇。&/p&&p&学生不断积攒疑问,对老师也会有很大的不利影响。因为老师同样得不到有效反馈,还以为学生那边一切顺利呢。&/p&&p&在文件操作这一部分,尹老师确实也留了练习。&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&# 练习一 文件的创建和使用
1. 创建一个文件,并写入当前日期
2. 再次打开这个文件,读取文件的前4个字符后退出
&/code&&/pre&&/div&&p&&br&&/p&&p&问题在于,有多少学生会主动去 GitHub 上面找到这个练习,而且不但做了,还反馈给老师呢?&/p&&p&他们会&b&拖延&/b&,甚至&b&忽略&/b&这些练习。&/p&&p&然后一味继续播放下一集。&/p&&p&看似懂了内容,实际上没有真正掌握。&/p&&p&一旦中途遇到了比较困难的题目,或者是最后来个“期末考试”(例如项目作业),学生刚刚建立起来的学习兴趣和信心,可能会彻底崩盘。&/p&&p&还是回到一开始那个问题——如果学生&b&自律能力&/b&足够强,他也就&b&不需要&/b&这门 MOOC 了。&/p&&p&我的视频教程,就是把尹老师原先直接讲解的内容(武器文件读取与统计)先作为练习题,布置给了学生。&/p&&p&刚学完知识后,大部分人,还是愿意在&b&操作成本足够低&/b&的情况下,去尝试一下的。&/p&&p&什么叫“操作成本足够低”?&/p&&p&看看我采取的这些方法,你就能理解了:&/p&&p&&br&&/p&&p&&br&&/p&&ol&&li&不需要学生自行安装任何编程环境,有浏览器和网络就行;&/li&&/ol&&p&&br&&/p&&ol&&li&不用离开 Jupyter Lab 界面,直接打开另外一个 ipynb 就行;&/li&&/ol&&p&&br&&/p&&ol&&li&不需要面对空的文档,只需要在辅助代码基础上,做填空就行;&/li&&/ol&&p&&br&&/p&&ol&&li&不需要猜测代码长度,已经给出了建议行数;&/li&&/ol&&p&&br&&/p&&ol&&li&不需要接触过多新的知识点,例如数据框转化、排序和绘图等,只需要调用已封装的帮助函数即可。&/li&&/ol&&p&&br&&/p&&p&&br&&/p&&p&而且,视频教程末尾,明确说明了,下一个视频就是讲解练习的。&/p&&p&这就指明了,本练习的截止日期,就是你播放下一个视频的时候。&/p&&p&对于自律能力差的学生,很多时候,只能靠这种前面铺路、后面推一把的方法。&/p&&p&尹老师的教程介绍里面,类似《三国》武将和兵器谱统计这样的有趣例子还有不少。&/p&&p&例如查找星座和属相,用机器学习分类鸢尾花,用爬虫爬图片等。&/p&&p&因此,我对后续即将上线的20几个视频,还是很期待的。&/p&&p&《零基础学 Python》课程对应的 github 项目链接在&a href=&https://link.zhihu.com/?target=https%3A//github.com/wilsonyin123/geekbangpython& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这里&/a&(&a href=&https://link.zhihu.com/?target=http%3A//t.cn/R1TGsnK& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&t.cn/R1TGsnK&/span&&span class=&invisible&&&/span&&/a&)。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-cffca3414c24bffa199e5fa6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic2.zhimg.com/v2-cffca3414c24bffa199e5fa6_r.jpg&&&/figure&&p&&br&&/p&&p&里面不仅包括课程已发布视频的全部对应代码,还包含了配套的练习和讲义等。你可以在订阅课程之前,先浏览一下。&/p&&p&如果你对这门课程感兴趣,可以点击 &a href=&https://link.zhihu.com/?target=http%3A//oejqwrqkh.bkt.clouddn.com/-15-57-42-567570.png& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这个链接&/a& ,扫码订阅。&/p&&p&&br&&/p&&h2&&b&讨论&/b&&/h2&&p&&br&&/p&&p&你是通过什么课程或书籍,入门 Python 的?它有什么特色?还有哪些值得改进的地方?欢迎留言,把你的经验和思考分享给大家,我们一起交流讨论。&/p&&p&如果你对我的文章感兴趣,欢迎点赞,并且微信关注和置顶我的公众号&a href=&https://link.zhihu.com/?target=http%3A//oejqwrqkh.bkt.clouddn.com/-22-26-16.jpg& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&“玉树芝兰”(nkwangshuyi)&/a&。&/p&&p&如果本文可能对你身边的亲友有帮助,也欢迎你把本文通过微博或朋友圈分享给他们。让他们一起参与到我们的讨论中来。&/p&&p&&br&&/p&&h2&&b&延伸阅读&/b&&/h2&&p&&br&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&如何高效学Python?&/a&&br&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&如何高效入门数据科学?&/a&&/p&
咱们以《三国演义》人名和兵器谱为例,尝试读取不同结构的文本文件,并且对其中的信息进行统计分析和可视化。 入门 如何帮助学生高效入门 Python ,一直是困扰我的问题。总结经验后,我写下了《》一文。 文中按照自律能力,我把学生分成…
&figure&&img src=&https://pic3.zhimg.com/v2-d6added1ce9c72c9f05e2bc_b.jpg& data-rawwidth=&1085& data-rawheight=&798& class=&origin_image zh-lightbox-thumb& width=&1085& data-original=&https://pic3.zhimg.com/v2-d6added1ce9c72c9f05e2bc_r.jpg&&&/figure&&p&今天早上翻笔记的时候,发现了一份3个月前写的代码,当时是觉得好玩写的,现在就分享出来给大家。&b&代码的github地址我已经放在了文章尾部&/b&,需要的童鞋可以自取。其实代码逻辑相当简单,当然,如果初学的童鞋看代码可能有不明白的地方,&b&我也专门录制了一段半小时的视频对代码进行讲解。&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-0ecb0886_b.jpg& data-size=&normal& data-rawwidth=&323& data-rawheight=&125& class=&content_image& width=&323&&&figcaption&写于3个月前的代码&/figcaption&&/figure&&p&&b&看完本文,你可以了解到:&/b&&/p&&ol&&li&一些可视化工具的使用(pyecharts)&/li&&li&python图片工具PIL库的使用&/li&&li&自然语言处理工具包结巴分词的使用&/li&&li&爬虫的基础知识&/li&&li&微信网页api工具itchat的使用&/li&&/ol&&p&好了,废话不多说,直入正题:&/p&&p&&b&先告诉大家这份代码能干嘛——&/b&&/p&&ol&&li&统计好友的性别&/li&&li&统计好友的地域分布,并且可视化在地图上展示&/li&&li&将好友的昵称做成词云&/li&&li&统计好友个性签名中的高频词汇&/li&&li&将所有好友的头像合并成一张大图&/li&&li&微信自动发送与回复消息&/li&&li&扩展功能&/li&&/ol&&figure&&img src=&https://pic4.zhimg.com/v2-694cda51a5be28f32c39d277b058e53b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&762& data-rawheight=&98& class=&origin_image zh-lightbox-thumb& width=&762& data-original=&https://pic4.zhimg.com/v2-694cda51a5be28f32c39d277b058e53b_r.jpg&&&/figure&&p&&b&1.统计好友性别&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d089ef34dd4ff_b.jpg& data-size=&normal& data-rawwidth=&773& data-rawheight=&571& class=&origin_image zh-lightbox-thumb& width=&773& data-original=&https://pic4.zhimg.com/v2-d089ef34dd4ff_r.jpg&&&figcaption&微信好友性别统计&/figcaption&&/figure&&p&以上就是二胖的微信好友啦,一共有306人,嗯,二胖的好友不多哈。其中男性占据60%,没办法,理工科学校的男生就是这样,其他这一类人表示的是并未填写性别信息的好友。&/p&&p&&b&2.统计好友地域分布&/b&&/p&&p&第二个功能是统计你的微信好友在信息中填写的个人位置信息,下图是二胖的好友的位置分布:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-d4b6772cdb9d677d32d1c6_b.jpg& data-size=&normal& data-rawwidth=&983& data-rawheight=&673& class=&origin_image zh-lightbox-thumb& width=&983& data-original=&https://pic3.zhimg.com/v2-d4b6772cdb9d677d32d1c6_r.jpg&&&figcaption&条形图&/figcaption&&/figure&&p&可以看到,二胖的好友中有很大一部分人在北京,是因为二胖大学在北京念书,现在也在北京工作。&/p&&p&当然,条形图能形象地展示各个地区之间的人数差别,但是展示的信息并不全面,也不那么直观,所以二胖又做了一个地图的可视化,如下图所示,颜色越暖代表这个地方的好友越多:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-9c01edb05f68fff8c1fd7c6e4b3adb93_b.jpg& data-size=&normal& data-rawwidth=&1085& data-rawheight=&798& class=&origin_image zh-lightbox-thumb& width=&1085& data-original=&https://pic4.zhimg.com/v2-9c01edb05f68fff8c1fd7c6e4b3adb93_r.jpg&&&figcaption&地图可视化&/figcaption&&/figure&&p&&b&3.将好友的昵称做成词云&/b&&/p&&p&我们和微信好友聊天的时候,看见的基本都是我们对他们的备注名,很好有人去关心他们的昵称,说实在的,这么一统计才知道,其实好友的昵称还真的挺有意思,各位要是感兴趣可以跑一下试试。&/p&&p&由于这个词云中含有较多的个人信息,所以我就不放在这里了。&/p&&p&&b&4.统计好友个性签名中的高频词汇&/b&&/p&&p&这个功能的原理就是对每个好友的个性签名利用自然语言处理技术提取关键词,然后按照词频来生成词云,下面词云中的关键词个头越大表示越多人使用,看来二胖的好友们说得最多是“自己”,“我们”。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-bd08ebb8cd314ba79bcdf_b.jpg& data-size=&normal& data-rawwidth=&962& data-rawheight=&722& class=&origin_image zh-lightbox-thumb& width=&962& data-original=&https://pic4.zhimg.com/v2-bd08ebb8cd314ba79bcdf_r.jpg&&&figcaption&个性签名关键词词频统计&/figcaption&&/figure&&p&&b&5.将所有好友的头像合并成一张大图&/b&&/p&&p&这其实就是用程序将好友的头像们下载下来,然后用PIL工具合成一张大图,看起来比较有趣,如下图就是二胖用部分好友的头像做的一张头像图:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-485ccca37d203ec9e4fe0b9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&850& data-rawheight=&850& class=&origin_image zh-lightbox-thumb& width=&850& data-original=&https://pic2.zhimg.com/v2-485ccca37d203ec9e4fe0b9_r.jpg&&&/figure&&p&&b&6.微信自动发送与回复消息&/b&&/p&&p&这里的自动接收消息,二胖只做了一个简单的demo,可以先给大家看看:&/p&&p&其中“机器人”,就是当前程序运行的微信号,一段简单的聊天:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-3db5c9adbcddf139f9d3e_b.jpg& data-size=&normal& data-rawwidth=&1080& data-rawheight=&1920& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-3db5c9adbcddf139f9d3e_r.jpg&&&figcaption&自动回复消息&/figcaption&&/figure&&p&我们可以在程序中设定好关键词,然后当发送消息命中关键词的时候就可以回复相应的语句。当然这只是简单的示范,大家可以根据自己的需求发送相应的消息。&/p&&p&比如逢年过节可以用程序群发祝福消息,那和用微信本身群发有什么区别呢,区别就在于,程序可以个性化发送消息。&/p&&p&举个例子:比如新年来了,你要给大家发送新年祝贺。&/p&&p&如果你直接发送“&b&年年都有今日,岁岁都有今朝,祝你新年快乐&/b&。”对面接收人肯定会想到你是群发的。&/p&&p&那用程序有什么不同呢,程序在遍历你的微信好友时,可以获取他的昵称、备注等信息。在发送祝福的时候,程序可以加上昵称、姓名等信息,还可以随机发送词库中的祝福语。&/p&&p&以上祝福可以变成:“hi,铁柱,年年都有今日,岁岁都有今朝,祝你新年快乐”。当然这都是后话了。&/p&&p&除此之外,对于一些做销售相关工作的童鞋,这个功能相对更有用。因为不同的客户可能会问到很多相似的问题,那么把这些高频的问题回答写进程序就可以实现自动回答了。&/p&&p&目前网络上也有这样的服务,不过二胖认为它们存在问题,1是服务需要付费,2是把微信运行在别人的平台上不安全。&/p&&p&&b&7.扩展&/b&&/p&&p&所谓扩展,就是将个人微信做成一个服务,通过在程序中请求其他服务的api而获得相应的信息,比如获取一些实时消息。&/p&&p&举个小例子:二胖前段时间在玩一款叫莱茨狗的游戏,很简单,就是用户通过一定虚拟积分在一个平台上买卖虚拟宠物“莱茨狗”,那么当有低价狗出现的时候怎么第一时间知道呢?&/p&&p&答案就是写个程序进行监控,没错,只要有卖家抛狗,那么只要价格和等级符合自己定的策略,就可以通过计算机筛选出这只狗,然后把交易链接发出来。可是二胖也不能一直坐在电脑面前等啊,所以二胖选择让程序将信息直接发送到微信,这样二胖只要带着手机就能实时接收交易数据了,可以看看下面的小视频:&/p&&a class=&video-box& href=&http://link.zhihu.com/?target=https%3A//www.zhihu.com/video/379776& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic4.zhimg.com/80/v2-3a0a200e5f18e577e433_b.jpg& data-lens-id=&379776&&
&img class=&thumbnail& src=&https://pic4.zhimg.com/80/v2-3a0a200e5f18e577e433_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/379776&/span&
&p&左边是二胖的手机,右边是电脑屏幕,显示的是实时交易数据。只要右边的交易数据符合我的策略,交易链接就会通过微信发送给我,当然二胖现在早已不玩这个游戏啦。&/p&&p&玩股票的朋友也可以用这个方法监控股票哦。&/p&&p&放一张之前的截图:5月10日,获取到的符合策略的狗狗。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-953bc460df9c03c527d7a18bdd87f5c3_b.jpg& data-size=&normal& data-rawwidth=&1080& data-rawheight=&1920& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-953bc460df9c03c527d7a18bdd87f5c3_r.jpg&&&figcaption&5月万游戏的推送消息&/figcaption&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-da0eca57a5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&790& data-rawheight=&114& class=&origin_image zh-lightbox-thumb& width=&790& data-original=&https://pic2.zhimg.com/v2-da0eca57a5_r.jpg&&&/figure&&p&其实原理很简单,利用的就是微信web端的api,来实现微信好友信息的获取、信息的收发以及拿到微信好友信息之后的一些分析操作。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-0f650c10b03ac710b67a14f671ebdadc_b.jpg& data-size=&normal& data-rawwidth=&2880& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&2880& data-original=&https://pic1.zhimg.com/v2-0f650c10b03ac710b67a14f671ebdadc_r.jpg&&&figcaption&微信网页版&/figcaption&&/figure&&p&流程为:&/p&&ol&&li&获取好友信息&/li&&li&分析好友信息&/li&&li&通过api收发好友信息&/li&&/ol&&p&&b&由于文本阐述不清,所以就看视频吧,如果你有时间,请现在用电脑打开观看,我相信你点了收藏之后再次打开的概率就很低了,高清视频可以在公众号后台回复:微信好友&/b& &/p&&p&即可获取。&/p&&p&&b&视频地址:&/b&&a href=&http://link.zhihu.com/?target=https%3A//v.qq.com/x/page/b0674dcd3hn.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&用python分析微信好友信息和自动回复消息_腾讯视频&/a&&/p&&p&相信看完视频的小伙伴已经了解了程序的实现过程,&b&代码我已上传github了&/b&,需要的童鞋请自取,别忘了给我点个star哦。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-aa377f57f4beb_b.jpg& data-size=&normal& data-rawwidth=&1982& data-rawheight=&1118& class=&origin_image zh-lightbox-thumb& width=&1982& data-original=&https://pic4.zhimg.com/v2-aa377f57f4beb_r.jpg&&&figcaption&github代码&/figcaption&&/figure&&p&&b&github地址&/b&:&a href=&http://link.zhihu.com/?target=https%3A//github.com/yangxuanxc/wechat_friends& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/yangxuanxc/w&/span&&span class=&invisible&&echat_friends&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&如果大家觉得&b&视频不清晰或者想保存视频,没问题,二胖已经把视频上传百度云了&/b&。&/p&&p&可以关注微信公众号:&b&大数据前沿&/b&&/p&&p&在消息窗口回复:&b&微信好友&/b&&/p&&p&即可获得相关视频&/p&&p&&b&如果有朋友现在暂时不会使用github,&/b&没问题,二胖把代码也上传到百度云了,和获取视频的方式一样,公众号回复微信好友 即可。&/p&&p&&b&如果你觉得本文对你有帮助,请直接赞赏支持,谢谢。&/b&&/p&&p&另外:如果你正在学编程,二胖推荐你看一下我另外一篇文章&b&《这可能是我见过最好的编程指南》&/b&,截至目前此文在&b&知乎有近8k的赞同数,上万的收藏,在微信公众号有6000阅读量&/b&,我相信能对你有一点点帮助的。&/p&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-6c8b4efa461b01aed752a739fx120.jpg& data-image-width=&550& data-image-height=&386& class=&internal&&二胖:这可能是我见过最好的编程指南了!&/a&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-f645cdf8dcb329d0.jpg& data-image-width=&1018& data-image-height=&626& class=&internal&&二胖:用python挖一挖知乎上宅男们最喜欢的1000个妹子&/a&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-959b7bda8be9dc83abd2_180x120.jpg& data-image-width=&1126& data-image-height=&630& class=&internal&&二胖:用 python 挖一挖成都房价&/a&&figure&&img src=&https://pic1.zhimg.com/v2-fd30aa68d7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&720& data-rawheight=&466& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&https://pic1.zhimg.com/v2-fd30aa68d7_r.jpg&&&/figure&&p&&/p&
今天早上翻笔记的时候,发现了一份3个月前写的代码,当时是觉得好玩写的,现在就分享出来给大家。代码的github地址我已经放在了文章尾部,需要的童鞋可以自取。其实代码逻辑相当简单,当然,如果初学的童鞋看代码可能有不明白的地方,我也专门录制了一段半…
&figure&&img src=&https://pic1.zhimg.com/v2-2aa24bacaab52169dafcd87_b.jpg& data-rawwidth=&3505& data-rawheight=&1826& class=&origin_image zh-lightbox-thumb& width=&3505& data-original=&https://pic1.zhimg.com/v2-2aa24bacaab52169dafcd87_r.jpg&&&/figure&&p&&b&导读:&/b&&/p&&blockquote&本文分两部分:&br&1.&b&描述分析部分&/b&,着重进行数据的可视化分析,图片使用Python绘图包(matplotlib、seaborn、pandas)生成,使用ppt制作为图文形式方便阅读,图片生成代码在第二部分呈现;&br&&br&2.&b&具体操作部分&/b&,呈现完整的数据分析流程和全部代码。&/blockquote&&hr&&h2&一、描述分析报告&/h2&&figure&&img src=&https://pic1.zhimg.com/v2-1dba2f372cf08a79bcf0_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-1dba2f372cf08a79bcf0_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-08a0221dedd0ff0dfeaf04a_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic3.zhimg.com/v2-08a0221dedd0ff0dfeaf04a_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-e6cdabae54be071de6ff43c8b899b5d8_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-e6cdabae54be071de6ff43c8b899b5d8_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-d1b1eef15db57e20a37044_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-d1b1eef15db57e20a37044_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-db95cd701e7fc4b1522e_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic3.zhimg.com/v2-db95cd701e7fc4b1522e_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-5a62d14fedb593d2687f8_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-5a62d14fedb593d2687f8_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-405fd1b1f6ebabff4410_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-405fd1b1f6ebabff4410_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-6ffa185bc0e450b4dbc26a_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-6ffa185bc0e450b4dbc26a_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-17b9d93b2a6a803b06ea_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic3.zhimg.com/v2-17b9d93b2a6a803b06ea_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-e8eb2d5c23eacbff22378_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-e8eb2d5c23eacbff22378_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-9bb76abad01d783a70d53b4b_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic4.zhimg.com/v2-9bb76abad01d783a70d53b4b_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-7e7a97f1f0d4b0c3cc7fc1fd_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic2.zhimg.com/v2-7e7a97f1f0d4b0c3cc7fc1fd_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-1f5ed0ed48d473b1a5f089_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic2.zhimg.com/v2-1f5ed0ed48d473b1a5f089_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-16f0fbf76ddda_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic3.zhimg.com/v2-16f0fbf76ddda_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-27dcdf8c5d9dc056cc6c58_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-27dcdf8c5d9dc056cc6c58_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-4ae4ce3a0f8b4_b.jpg& data-rawwidth=&1280& data-rawheight=&720& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic1.zhimg.com/v2-4ae

我要回帖

更多关于 艺术字体在线生成 的文章

 

随机推荐