加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

跨专业自学NLP,这个90后撸出了开源类库HanLP,已在GitHub收获1.5W星

发布时间:2019-11-05 02:18:10 所属栏目:移动互联 来源:刘燕
导读:截止 2019 年 10 月底,一款名为 HanLP 的自然语言处理类库在 GitHub Star 数达到了 15.5 K,超过了宾夕法尼亚大学的 NLTK、斯坦福大学的 CoreNLP、哈尔滨工业大学的 LTP。这是一款由一系列模型与算法组成的自然语言处理(NLP)开发工具包。 你或许想象不
副标题[/!--empirenews.page--]

截止 2019 年 10 月底,一款名为 HanLP 的自然语言处理类库在 GitHub Star 数达到了 15.5 K,超过了宾夕法尼亚大学的 NLTK、斯坦福大学的 CoreNLP、哈尔滨工业大学的 LTP。这是一款由一系列模型与算法组成的自然语言处理(NLP)开发工具包。
你或许想象不到,这款 NLP 工具包被开发出来时,它的作者何晗,还是一位日语专业的大二学生。如今,在攻读博士期间,何晗又创作了一本《自然语言处理入门》,希望解决小白们的 NLP 入门难题。该书得到了周明、刘群、王斌等业内顶级 NLP 专家的推荐。

“理论是根,项目是树“,如果说 HanLP 是树,那么这本《自然语言处理入门》便是树的根基。在该书问世之际,AI 前线与何晗展开对话,了解这位极具天赋的学生“种植树”,“培育根”的故事。

痴迷游戏走上编程之路

和很多90后一样,何晗爱好动漫和游戏。这两个爱好后来也深深影响了他最为关键的两次重大人生抉择。

高中时,何晗就读于黄冈中学理科“状元班”,班上学霸云集,但何晗觉得自己和那些学霸同学比差远了。“我肯定不是学霸,我属于那种均值 80 分,方差特别大的类型”。

他笑称自小不喜欢听讲,要不就自己看书做题,要不就坐在座位上神游。有几次考试,他超常发挥进入了“状元班”。不过,最为关键的高考,他却考得并不理想。

这次高考失利让何晗决定“放飞自我”,选一个自己喜欢的专业。因为喜欢动漫,在志愿填报时他选了日语专业。2011 年,何晗成为上海外国语大学日语系的一名学生。他的业余时间也几乎都被追新番、背单词、宅着打游戏填满。

打游戏是何晗走上编程之路的原始动力,他挺想自己做一个游戏出来。曾经有一段时间,何晗痴迷打“仙剑四”,他想把剑四的“mod”给做出来。

也是从那时候起,何晗开始尝试学习各种编程知识:C++、Windows 编程、3D 编程、汇编逆向、PHP、JavaScript、Linux。对于一个非科班出身的人来说,自学之路免不了遇到困难。何晗坦言,最大的困难是没有机会系统性学习操作系统、编译原理等专业课程。他倒是有一个很实用的学习方法 — debug。

何晗的 debug 能力很强,“不管是什么算法谁的代码,我都能一行行 debug 下来。每次我写的算法不对的时候,我都会创造相同的输入数据,开两个 debugger 窗口,一个跑我的,一个跑别人的。我的知识大部分来源于调试别人的代码,可以说是‘偷师’自所有人”。

最令何晗印象深刻的是,他自学编程途中达成的一个小成就。当时上外的校园网仅支持网页版登录,打开较慢、登录时也无法记住密码,很不方便。为了解决这个问题,何晗花了一个劳动节假期做出了一个自动登录软件。现在回想起来,何晗坦言这个软件还有很多不足,但同学们用的很开心。

这个小成就还让何晗收获了一个意外之喜。学校网络技术中心的张老师听说了这事后对他很是赞赏,便赠送给他一个校园网 VIP,还给他介绍了一家外包公司——林原科技的兼职。

大二开发出 NLP 类库

也正是这份兼职工作,让何晗与自然语言处理(NLP)结下了不解之缘,后者也是他目前攻读博士期间的研究方向。

一日,林原科技立项做一个 “智能检索系统”。中文搜索引擎的第一步是分词,老板分配给何晗一个任务——做一个分词器,并给了他几本厚厚的学习资料。

老实说,这是何晗第一次接触 NLP,显然做出这个分词器得需要“现学现卖”了。他倒颇有几分自信,“我应该能拿下”,“要么不做,要做就要做最好的“。

经过调研,何晗发现,市面上的开源工具 Jieba、Ansj、IK 等分词效果都不太理想,很多人名、机构名别称分不出来,新词隔三差五就更新却收录不进去,分词速度也很慢.... 他当即决定,一定要做出一个体验效果好的分词器。

紧接着,何晗开始了一边“泡”在专业书和论文里自学一边开发的过程。张华平、刘群等 NLP 领域专家的论文几乎都被他翻了个遍,被一些深奥概念绕的云里雾里那自是家常便饭。对何晗影响最大的是吕震宇开源的 C# 版的 ICTCLAS 分词系统,他边学 C# 边对照着吕震宇的博文研读这才搞懂了 ICTCLAS 分词原理。何晗尝试着在 ICTCLAS 的基础上做了一些改进,并且实现了 Java 版,这个版本运行速度很慢,好在输出的结果跟 ICTCLAS 是一致的。

弄懂了 ICTCLAS 之后,何晗又开始学习单步 Ansj,Ansj 的数据结构——双数组字典树速度之快对他来说像打开了新世界的大门。于是他便饶有兴趣地开始研究数据结构,最后他自己创造出了一个“基于双数组字典树的 AC 自动机”的数据结构。

功夫不负有心人,花了半年时间,何晗最终还是将这个分词器做了出来,并取名“HanLP”。这对于一个大二日语专业学生来说,是极为难得的。何晗用上了自研的基于双数组字典树的 AC 自动机,这大大提升了 HanLP 的运行速度。

第一版本的 HanLP 功能比较简单,后续经过几年的迭代,其功能越来越完善,性能更高效。HanLP 能提供词法分析、句法分析、文本分类、情感分析等功能。此外,HanLP 还具有精度高、速度快、内存省的特点。

截止目前,HanLP 的 GitHub Star 数已达 15.5 K,超过了宾夕法尼亚大学的 NLTK、斯坦福大学的 CoreNLP、哈尔滨工业大学的 LTP。

对于这个成绩,何晗很开心,他感激广大用户的认可。“从开发者的角度讲,我肯定是不及教授们的万分之一,无论是水平上还是人数上”,何晗表示,相对于上述面向教学和学术用途的项目,HanLP 是个人项目,主要面向生产环境开发,由于目的用途不同,HanLP 取胜的“法宝”在于良好的用户体验,在接口设计、代码风格等“软实力”方面比较人性化。

博士出书

HanLP 的意外成功让何晗对 NLP 有了更深入的了解,在开发这个项目的过程中,通过对领域内专业知识的学习,他领略到了 NLP 这门学科的魅力,在随后的学习生涯中,他便锁定 NLP 为主要的研究方向。目前何晗在埃默里大学读计算机博士,主要的研究方向是句法分析、语义分析与问答系统。 

跨专业自学NLP,这个90后撸出了开源类库HanLP,已在GitHub收获1.5W星

从 v1.3 版本起,HanLP 由大快搜索主导开发,并完全开源(GitHub 开源地址:https://github.com/hankcs/HanLP)。2018 年 11 月,HanLP 更新到了 1.7 版本,新增文本聚类,流水线分词等功能,这时 HanLP 的中文词法分析已比较成熟,达到了工业使用的水准。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读