本周有大部分时间都在杭州参加培训。以前也参加过一些公司组织的培训,说是培训,其实更像是烧经费,除了白天集中在一起讲讲课,其余时间大多可以自由活动,最终学习的效果往往很一般,然而好处是能认识很多来自五湖四海的同事。
这次的培训却有所不同,培训的第一天,我和另外三位同省份的同事就被拆散了开来,与其他省份的同事随机组合成新的小组。培训按照小组竞争的方式展开,设置了诸多加分项和减分项,最后的成果比拼更是阶梯式加分。每天的培训从早上九点一直进行到晚上九点,中途还必须将手机放置在统一的收纳盒中,可以算我参加过的众多培训中,最严格的一次了。作为培训参与者来看,增加培训时长,能增加学习内容,还能很大程度控制培训员工的活动范围,降低意外事件的发生。而上缴手机,绝对是一记杀招,在现在这个社会,如果评出一个最能给人带来安全感的物品,手机肯定是名列前茅的。上缴手机不仅意味着和外界暂时失去联系,也意味着和一些让人分心的事情说拜拜。但是,若因为上缴手机而错过一些重要电话,是否又有点过犹不及?我相信,电信学院应该会在未来对培训方案做进一步的优化,以期提升培训效果。
这次的培训主题是“自然语言处理”,短短4天时间,学了很多内容。虽然我们组在最后拿了个第二名的好成绩,但是要说四天能速成出一位自然语言处理大师,我是半分都不信的。倘若能借此机会了解自然语言处理,并且对此萌生兴趣,大概培训的意义就达到了。四天的培训内容相当充实,可这些知识却像压进泡菜坛子里的菜一样,漫无目的地漂浮在脑海中。不如趁此机会,理一下思绪,也不枉花了这一周时间。
自然语言处理,说白了,就是让计算机能处理人类的语言,不管是文字也好、音频也好,要尽量让计算机“明白”我们的意图。如果是苹果手机的用户,对Siri一定不会陌生,直接对Siri下达一些合适的语音命令,她马上就能遵照执行。这就是自然语言处理的典型案例。还有一个常用的自然语言处理,是我们现在淘宝购物时,点进去的智能客服。当你问一些常见的问话时,可能回答你的并不是人工客服,而是一个电脑程序。另有一些看上去像自然语言处理的,却不能算是自然语言处理。比如拨打10000号台席时的语音提示,提示你按“1”键进入宽带报障,“2”键进入话费查询的这种语音反馈,就不是自然语言处理。如果哪天10000号进行了系统优化,当你拨打过去后说一句“我家宽带坏了”,或者是“我账上还有多少钱”,系统就能自动将你导向宽带报障或话费查询,那才算是实现了自然语言处理。
自然语言处理的第一步,是“分词”,意思就是把一句话进行合适的断句。这大概算东方语言中特有的处理步骤了。因为英文里一个个单词都是用空格分开的,计算机看到空格,就知道怎么划分单词。而中文则不一样。一句在人类看来很简单的话,计算机却不知道怎么断句。比如“福州大学位于福州”。我们当然知道切分方式是“福州大学/位于/福州”。可是计算机拿到这个句子就傻了,他可能切分成“福/州/大/学/位/于/福/州”,更惨不忍睹的,还可能分成“福/州大/学位/于福/州”。所以,我们需要给计算机先输入一套规则。把一些常见的词语整理成字典,让计算机看到这些词语时,能正确断句。这个字典整理早已有很多开源版本,但是我仍建议拿到字典后进行一下二次加工。因为不同的领域,可能会遇到一些专用词汇,比如“单转融”“大流量”这样的词语,这些专有词很可能是开源字典中不包含的。
当计算机能初步断句,即实现“分词”,后,就可以进行“停词”处理了。“停词”就是stop words处理,即在处理语言时,见到某些词,便停下来,跳过这些词再继续处理。最常见的停词都是一些无意义的字、词。比如“呀”“的”这样的。还有一些无意义的特殊符号,也是停词的一部分。但是在这次的培训的试题中,我发现停词也是需要再次斟酌的。我们这次培训的试题是根据用户文字评价,预测用户给的商品评分。当我们检验预测结果时,发现有一些差评总是被我们预测成中评或者好评。等我们仔细调出数据来看时,发现问题就出在停词上。因为网站的敏感词处理机制,当用户的文字评价中出现非常恶劣的词语时,网站就会自动把这些词语转化成“*”这种特殊符号,而我们的停词库中又刚好存在这个符号,即导致了我们的代码看到“*”都不进行分析处理,所以预测错了不少差评。当我们把“*”从停词库中删除后,正确率便有了明显提升。
当“分词”和“停词”都处理好后,计算机拿到的就不再是一句一句完整的话了,而是一些能准确反映这句话的重点词汇。还是用“福州大学位于福州”举例,计算机最终拿到的就极有可能是“福州大学 福州”。接下来,就是让计算机“理解”词语了。由于计算机只能处理数字运算,所以我们也必须把文字转化成数字才行。这个过程让我想到了读书时期的故事。当一位新的任课老师来班级上课时,在回答问题的环节,他常常会这样点名:“第3竖排第4位同学”,或者“最左上角那位同学”,任课老师可以记不住每一位同学的名字,但是这并不会妨碍他叫任何一位同学站起来回答问题。这种将二维坐标系与点名完美结合的方式,也正是计算机处理自然语言的策略雏形。我们可以不知道坐“第3排第3个”与坐“第2排第3个”的同学分别叫什么名字,却不难发现他们是同桌关系。计算机亦是如此,当计算机拥有一个类似的词语座次表后——这个词语座次表的维度极可能上百上千——它遇到一个词,便能用坐标的方式表示出来。而当它再遇到另一个词时,就能通过坐标运算,变成一个多维向量。向量的长度,便能快速反映这俩个词语的语义偏差,向量的方向,也能反映语义的偏差方向。就这样,一个个词语,就变成数字存在于计算机之中了。这个词语座次表便是“语料库”,是自然语言处理的精华部分。我查了一些资料,发现在语料库这部分,老师说得有所欠缺。老师说到现在的语料库都需要根据特定语境来训练生成,没有哪个语料库能同时适配多个场景。而实际上,已经有国外研究人员做出了半普适性的语料库。其原理是利用维基百科和社交软件获取大量语境,然后让机器将这么多语境和语言全部吃进,从而到达接近场景全集的效果。在使用这个语料库时,基本上只要稍微改一下配置,就可以使用了,大大降低了训练语料库的时间。如今这个时代,储存的知识跟不上现实的情况时有发生,记得读初中时,我的计算机老师就信誓旦旦地说过,计算机能横扫象棋领域是因为象棋的走棋方式完全可以通过超级运算遍历出来,而围棋因为其变数成几何式增长,稍微多算几步所需要的运算量就和天文数字一样了,所以计算机永远也不可能在围棋领域打败人脑。结果如今深度学习理论冒了出来,人类被围棋机器人Master打得落花流水。可见发展的速度之快,已经令人生畏。
当语料库也生成后,剩下的就是计算机最擅长的数字运算了。可供选择的运算模型数不胜数,随机森林,贝叶斯等,或者直接使用神经网络进行深度学习,可以说有了GitHub,模型代码反而是最容易完成的步骤了。当然,如果有着高超能力,能自己改写算法,那又是另一个层次的技术发展了。
这次培训,通过Python编写机器学习代码,也算是对自然语言处理有了个初步认识。对计算机的强大又有了新的认识。
都说机器替代简单人工劳动是必然趋势,我也相信这个趋势。但是我还是有一些疑惑,如果在短时间内,用机器大量替代人工,虽然对于生厂商来说,人工成本是下降了,但是对于整个社会来讲,真的很好吗?像前几年高速收费站无人化方案的实施。虽然那些收费站人员自己没有在工作之余进行自我提升也是个问题,但是当她们不得不面临突然袭来的失业时,她们的负面情绪爆发是否会对社会产生一些破坏?同时,现在虽有二胎政策也不见人口有多少起色,人口老龄化,年龄断层基本都是定局,但是我们不能指望所有适龄的年轻劳动力都适合做脑力劳动者,如果那些只适合做简单体力劳动的人,工作内容又被机器人抢占了,他们会如何?假设突然有一天,满街的外卖小哥全部被送货机器人取代,他们该如何面对这个世界?
未来的发展,是机器带来进化,还是机器带来灭亡。这是个问题。
网友评论