【新闻源监控系统】具备了自然语言处理特性

新闻源监控系统】发布了0.3.1版本,作为技术探索性项目,本次更新在0.2.0的基础上,增加如下新特性:

  • 爬虫与 API 部署到 docker 容器中
  • 系统具有了人工智能 NLP 特性,包括关键字提取、新闻分类、情感评价。模型都采用 NLP 工具现成的,在情感评价和新闻分类上的准确率还有待提高。
  • 关键字提取使用 HanLP
  • 新闻分类使用 THUCTC
  • 情感评价使用 SnowNLP
  • 移植爬虫到 python scrapy 框架下

顺着新闻分类的开发,看了一下朴素贝叶斯算法,不过还需要先复习复习线性代数。

文章《我是如何用机器学习技术帮助 HR 省时间的》中,提到的三种机器学习的文本分类算法: TextGrocery,fastText,Naive Bayes都值得一一细看一下。

我为什么从媒体转行做Web开发

兴趣爱好

接着【我的工作为什么失败】系列上一篇记述的,从腾讯大楚网离职前的“愚人节项目”中,唯一外包的工作是移动端小游戏页面。创意工作是为每位参与者提供一个自由发挥的机会,所以外包这种更适合完成某项具体固定需求的合作,产出差强人意的结果,成为我圆满“这份工作的夙愿”中的遗憾,不过它另我重拾对网页制作与计算机语言许久以前的兴趣。

回到2002年,从玩文曲星(80后应该都熟悉这些电子词典)的GVBasic,结缘了编程语言,到跟随个人站长热,结缘了网页制作。那时候我在的小城市宜昌似乎互联网还未普及,也或者是我没条件接触到,根本无法找到Basic的教材,因为我甚至不知道自己要找的是什么,只有不断翻看文曲星上的帮助,然后把语句记下来打进去看效果。后来读书和工作中也持续保持关注这些领域,为自己、朋友做一些小项目。

回到原点

转行做Web开发,只是终于又回到原点。毕业后我找的第一份工作就是“网页制作”,2010年那时候我还没听说过“前端开发”这个职业。只是这份工作仅做了两个星期就根本没算作职业经历。内容是给武汉一私立家幼儿园做网站。那段时间媒体上一窝蜂“报复社会者进幼儿园行凶”的新闻,于是园长说给我做个袖章,叫我上学放学时候站门口当保安,可笑之余我正好得到搜房网的offer,离开Web开发领域,回到宜昌开启一段媒体生涯。

务实、进步

再者我越来越意识到,技术开发类工作中少有务虚成分,每一分努力都是为让设想中的产品更加展现出它应该有的样子。交互流程不合理、界面设计令人畏惧、代码逻辑有误都是无法回避的问题,做开发的人起初只有硬着头皮接受错误,逼迫自己正视错误、拥抱错误,然后用优雅的方法来解决之,这才是工作的价值所在。当然最后还要反思和采取措施来杜绝类似问题再次发生。

这样的工作循环会将人的思想或能力不足暴露无遗,同样也更能推动个人与团队的成长。我爱这样的循环,那么转做Web开发也是我选择的必然了。

返回【我的工作为什么失败】系列目录

【新闻源监控系统】——一位网络新闻编辑的Web全栈开发实践

在大楚网做新闻编辑的时候,我一直梦寐以求有个工具,让新闻监控和部分转载工作自动化,这样我就能更优雅的编辑标题和写Tips了,所以我开始尝试做这么个工具。

新闻源监控系统(Auto News System)

项目名暂定——新闻源监控系统(Auto News System)

现在还只是个雏形,已实现监控、记录、查询【湖报系】【长报系】【大楚网】的新闻更新。

送给所有在编辑岗位辛勤工作的编辑们。


现状

当前监控爬虫运行在自己的电脑上,偶尔会离线,应用界面右下角有标示当前监控服务器在线、离线状态。

Bug与需求请在文末留言,我会尽快反馈、处理。


动机

加过一个群,名叫”苦逼的网编停不下来”的群,是6年前我在一房产网站做编辑的时候,群里都是全国各地站点的编辑们。大家在群里讨论工作、发闹骚,最热闹时每天群里会有上千条消息。

断断续续做记者、编辑约6年时间,觉得网络编辑还算件有乐趣的工作。每天早上打开电脑,从各处搜集信息,然后筛选、编辑、归类、比较、分析、排序、制作封面配图、发布,最后得到有序的新闻条目、房产行业信息和漂亮的页面,心里有大大的满足感。

但编辑中有大量枯燥重复的工作,汇总零散信息、人工值守新闻更新、复制粘贴。3年前有过用自动采集方案来代替的想法,简单弄过一段时间”按键精灵””火车头采集”,但技术实力不过关,实际工作中并没起到什么作用。

现在虽然不做编辑工作,但作为一个 Code for a Better World 的 Web Developer,我觉得这会是一项有意义、有挑战的工作。

计算机简直是做这些辛苦工作的最佳”人选”,所以可爱的小编们就能解放生产力,将更多精力投入到思考、学习、设计、撰写等方面,将编辑工作更提高一个层次。

“苦逼的小编”也可以停下来,有更多时间优雅的喝咖啡。感觉生活都变更美好了呢:)


实践意义及技术实现

2000年接触Web页结缘Javascript,到如今NPM成为世界上最大包管理器NPMNodeJS的软件包管理器),让我发现,我能利用现有能力去解决很多以前难以解决的问题,顺便收获一些现在没有的能力。

当前的技术实现包含:

未来开发自动新闻分类的时候,还能接触些中文自然语言处理

武汉Web前端开发工程化实践观察与感受

这是一篇在博文“前端工程——基础篇”中的回复。如下是回复正文:

我在武汉,这里做Web开发不少企业依照几乎是10年前的方式进行:操作DOM节点、纯服务器端渲染、form表单提交、表情拽拽的把AJAX挂在嘴边说……这正是我身边每天发生的,而我所在的单位推进前端工程化则遇到很多奇怪因素的阻碍。

我最近待的2家企业,一个做自有电商平台,在使用react+redux+webpack短短一个季度后,退回了jQuery+纯服务器端模板引擎时代,原因有两个:新上任领导不会、员工培训跟不上(这两个原因好像是同一个事)。

另外一家单位外包做电商平台二次开发,据称为国内电商系统市场占有率第一,搞了近半年后我已经失望的提辞职。这一回的原因除了前家企业相同的两个原因外,还有个更有意思的:服务器端开发人员怕前端抢了他们的地盘。我最终选择离开是不愿再同整个团队通宵鏖战处理那些静态资源依赖关系,反复迭代内联样式直到! important都用上,最后将糟糕的产品连骗带哄交给客户。

有天周一旁边同事抱怨修改别人的样式和模板好难受,第二天我问他有没有想过如何改变这个问题,他沉默了。

这些事情每天在我眼前重复发生,实在忍受不了,心痛又无语的曾提交一个commit:

d8e4109 Berlin Chan on 16/5/24 at 下午6:07
我已经经过了绝望而变的无可奈何,想要呐喊却又无言。大家都很努力依次处理bug,就像对待每件日常平凡无奇的工作,他们并不着急避免这种事,而是冷静在处理问题中留下更多问题,这种冷静让我感到绝望。
In 5 branches: HEAD, master, develop, origin/master, origin/develop

阮一峰博客里面看到一句话,类似是这样:

在中国你不想骗人不想做坏事,那你就只能去编码了

我是从传统媒体转行做前端开发,之所以转行正是对这句话的充分实践。可是没想到在我这个Web开发圈子的人,让我再同样的失望一回。

近期参加的一些面试,偶尔会碰到有的企业意识到要做前后端分离与前端工程化,而已经深入实践的多为小型创业团队。曾经面试一创业公司,对方问我有没有写过“单元测试”“自动化测试”。后来我没去这家企业,现在想来很后悔。因为如果一个团队会用上这些工具,可见他们对代码质量(至少已经意识到)是如何的重视。

《黑客与画家》前言里面的一个例子:旅游网站Orbitz成功打入竞争激烈的网络订票市场,主要原因就是使用了更好的编程语言。引用这个例子不为说明语言的孰优孰虐,而是说技术选型的结果会直接影响一家企业的兴衰。

小型创业团队要在同一市场与人力财力更强大的企业竞争,技术方案是少有的可以成为优势的因素,当然何其珍贵了!

刚才我的愚蠢而善良的领导召集前后端开发人员开会,总结上一个项目的得出以下经验:

  1. PHP模版中的<{header}>中的内容一定是要公用的静态资源才能放进去
  2. 切图定义样式类只用class属性,后台开发人员只用id属性
  3. JS脚本资源引用,要按照切图静态页的顺序放进去
  4. 表单提交不要用button标签,以防有的服务器端开发人员不知道如何屏蔽submit事件
  5. 所有的JS交互直接写在HTML页中,方便服务器端开发人员定位交互代码

然后演示了服务器端开发人员,将我已经用vue写好前端渲染的页面,重新用JS渲染出来的页面后,获得了在座一致认同——下面就这么搞!服务器端开发人员玩转前端的自豪感难以掩藏挂在脸上(包括我那愚善的领导),殊不知将整个团队拖入泥潭。而我这个习得性无助的人只能淡然视之。在一个封闭的圈子里面,经验和知识是如此的难以取得。若我们失败了,一定是败给了人性的弱点。

若武汉是个稍微封闭地方,但从我面试过一些求职者来看,也许这个范围更为广泛(或是我单位很容易吸引初级开发者)。有2位从北京、上海回来的前端开发,从业4年有余,从交流中得知他们依然看到前端是做一些切图的工作。后来我跟一位优秀的实习生讨论,觉得这是一件多么可怕的事情:呆在一个地方,被蒙蔽了视野。做一个岗位,应当与整个行业同步,而不仅限于跟圈子站在一起。

互联网是如此开放的环境,又有那么多优秀而慷慨的乐于人分享他们的智慧。这是我最喜欢互联网的原因之一,这让“身在小镇,胸怀世界”成为可能,并且能始终与“巨人”们站在一起。做互联网的人是最有资源利用好这一点的人群。

我专职做前端开发的时间不长,短短1年,但从2000年初的个人站长热就开始接触网页三剑客,持续关注Web开发也有十余年时间。当我在报社、门户网站做过记者、摄影师、编辑后,又回到了Web开发领域,看到网页三剑客已衰落至死;看到ES6标准使Javascript拥有更多高级语言的特性;看到NodeJS拓展Javascript程序员的空间;看到npm成为前端开发的大宝库;看到React、Angular这些优秀的JS框架;看到Sass将老旧的CSS焕发新生;看到webpack将Web应用打包的干净优雅……最初看到这些事物的时候,每天都有新东西思考、探索和研究,就如同看到“一个全新的世界”,这也是为什么我喜欢前端开发。

而此时当我还看到有人在操作DOM节点,找“父亲的兄弟的儿子”时,心中着急如猫抓。

上个月我在infoQ的微信公众号看到一篇文章ThoughtWorks前端架构师为AngularJS2布道的文章,还听说他们参与举办了一次武汉前端开发交流会,为武汉Web前端开发圈技术革新的推广付出努力,在武汉真是难能可贵。

希望武汉的Web前端开发圈能够更好,下一份工作我能更优雅的编码。

为什么Web开发应该前后端分离

新换的工作是在一家公司做电商应用ECstore二次开发,在项目工作中发现这套应用对于用户体验和开发体验上面做的非常糟糕。在做完一个项目后,我以具体开发过程中的情形,深刻感受了Web应用开发为什么需要前后端分离,从而提高开发体验与效率。

写完这个总结我自己看了觉得很可笑——为何如反复解释此显而易见的事情。但最近接触武汉的Web开发圈子,发现Web前端工程化、前后端分离方面普遍做的不好,而且我将这些思想介绍给其他同事,还是能改善一些陈旧的思维定势,所以把这篇文章贴出来。如下是正文: 继续阅读“为什么Web开发应该前后端分离”