你是如何了解或者进入NLP这个领域的?

每个NLPer都有自己的故事,每个故事都很精彩!

前两天在AINLP公众号上做了一期赠书活动:8本NLP书籍任你选,发起了一个话题留言活动:你是如何了解或者进入NLP这个领域的?没想到,活动发布后,大家参与的热情极高,收到了200多条留言,但是限于微信公众号留言只能精选100条放出,所以有些遗憾,很多后来的同学的留言虽然写得很好,但是没有办法放出来了。今天是周末,我又认真的从前到后读了一遍,感慨每个人都有自己的NLP故事,这里做一次汇总,尽量把留言都放出来,就不一一回复了,感谢大家的支持与参与。

从留言来看,很多同学是读书或者在实验室的时候“偶然”入了NLP这行,和很多同学一样,我也是读书时误打误撞进入了这个领域,我本身读得是数学系,研究生读得是自动化系模式识别与智能系统专业,实验室有好几个方向,刚好一个方向是统计机器翻译,老师觉得数学系的背景适合这个,就安排我做这个方向了,所以很感谢老师当年的安排,让我和NLP结缘。最后再留一个话题,感兴趣的同学可以参与:你做的第一个NLP任务或者课题是什么?

另外这次赠书活动原计划从留言中选择4名同学赠书,但是大家参与活动的积极性太高,让人感动的留言不少,所以综合大家的留言内容、关注的时间、互动的频率等各个因素,我额外再赠送6本书给参与活动的同学,但是依然僧多肉少,请没有获奖的同学见谅,以后还有机会,大家先混个脸熟。请以下10名的同学直接添加微信AINLP2选择书籍和留收件信息:

C.S. , 意犹未尽, 迷糊s啦, 锐, 少女情怀总是诗, 璐璐, 黄金金, Mr.NLP, 瓜子, 川上月

其中瓜子同学作为20考研党代表和求赞第一名,这里送个祝福;川上月同学是博客、微博以及公众号的老读者,也投过稿,这里作为老读者代表,送个感谢。另外赠书活动昨晚已经抽奖完毕,大家可查看中奖结果,请以下4名同学也请一并添加微信AINLP2,留相关信息:

Emotion. , 发局, Null, cf

另外我们还在微博举行了同样的抽奖活动,感兴趣的同学依然可以移步参与,活动到下周四结束。

https://weibo.com/2104931705/HlW4Q2XNK

以下选自各位NLPer的留言,再次感谢大家。
继续阅读

为了夸夸聊天机器人,爬了一份夸夸语料库

上周为了娱乐,写了一篇《一行Python代码实现夸夸聊天机器人》,虽然只有几十条人工整理的通用夸夸语料,但是貌似也能应付一些简单需求。不过这篇文章在微博、AINLP微信公众号、知乎专栏推送后,还是有很多同学强烈建议丰富语料库。这个建议其实是很不错的,所以周末认真调研了一番,决定从豆瓣上的夸夸小组入手,这里面有很多现成的语料,至于混进微信、QQ夸夸群,收集语料,我觉得不太现实。

豆瓣上有很多夸夸小组,貌似最大的莫过于“相互表扬小组”,最近因为这股夸夸风,据说这个小组已经开始限制加入新人了,我针对这个小组写了一个小爬虫,爬了一份夸夸语料,总计2万6千多个帖子,采集了标题、内容和回复的相关信息,保存为json格式,1个帖子1条,大概是这样的:

{"title": "因为没有男朋友,求夸", "url": "https://www.douban.com/group/topic/135844056/", "author": "71277500", "last_reply_time": "03-17 16:40", "content": "笨人原本一个人好好的,都单了两三年了,一直觉得挺开心的。最近不知道抽了什么风,突然特别想找个男朋友。但是但是,偏偏找不到靠谱的男朋友!现在一个人睡不着,没想明白这事,求夸。\n", "replies_num": "14", "replies": [{"content": "你这么可爱肯定会有一个很好很好的人在等你!", "post_id": "135844056", "comment_id": "1834208628", "user_id": "189783421", "pub_time": "2019-03-16 01:08:38"}, {"content": "最好的肯定要晚点出现哦", "post_id": "135844056", "comment_id": "1834208775", "user_id": "189783421", "pub_time": "2019-03-16 01:08:52"}, {"content": "“笨人”,刚看到开头就笑了", "post_id": "135844056", "comment_id": "1834282396", "user_id": "192799520", "pub_time": "2019-03-16 07:50:50"}, {"content": "一个好可耐的宝宝", "post_id": "135844056", "comment_id": "1834282931", "user_id": "192799520", "pub_time": "2019-03-16 07:52:24"}, {"content": "也许明天就出现了", "post_id": "135844056", "comment_id": "1834290527", "user_id": "185989534", "pub_time": "2019-03-16 08:11:38"}, {"content": "你知道有一个适合你的那个在等你吧", "post_id": "135844056", "comment_id": "1834308924", "user_id": "192597621", "pub_time": "2019-03-16 08:46:23"}, {"content": "如果没有男朋友,肯定是你太优秀", "post_id": "135844056", "comment_id": "1834313229", "user_id": "171520899", "pub_time": "2019-03-16 08:53:19"}, {"content": "没有男朋友多好,省钱", "post_id": "135844056", "comment_id": "1834320533", "user_id": "130379006", "pub_time": "2019-03-16 09:03:42"}, {"content": "哈哈,谢谢好可爱的你呀!", "post_id": "135844056", "comment_id": "1835717925", "user_id": "71277500", "pub_time": "2019-03-17 16:16:58"}, {"content": "有道理", "post_id": "135844056", "comment_id": "1835718260", "user_id": "71277500", "pub_time": "2019-03-17 16:17:22"}, {"content": "也许吧,哈哈哈", "post_id": "135844056", "comment_id": "1835718395", "user_id": "71277500", "pub_time": "2019-03-17 16:17:32"}, {"content": "原本想写本人,一不小心错别字,看样子还是很符合的", "post_id": "135844056", "comment_id": "1835719069", "user_id": "71277500", "pub_time": "2019-03-17 16:18:17"}, {"content": "没有,只是单纯地觉得很可爱,很符合你写一段话的文风😄ཽ……退一步讲,古人讲究谦辞,称呼自己要自谦,本人要说鄙人,你用“笨人”活泼可爱,也能称得上是一种自谦,还是你自创的,有趣", "post_id": "135844056", "comment_id": "1835734308", "user_id": "192799520", "pub_time": "2019-03-17 16:35:21"}, {"content": "哈哈,有道理,我懂了", "post_id": "135844056", "comment_id": "1835738373", "user_id": "71277500", "pub_time": "2019-03-17 16:40:00"}]}

写到这里,估计还是会有同学准备留言索要数据了,因为即使上次区区几十条语料,随便google一下就可以得到的“夸夸语料”都有同学留言索取,所以这里准备多说几句,关于夸夸聊天机器人,关于夸夸语料库。

上个周,在看到清华刘知远老师的评论后,我是用娱乐的心态写了上周的那篇文章:《一行Python代码实现夸夸聊天机器人》,没想到,反响还不错,甚至有一些同学提了很好的建议。所以当周末认真思考这件事的可行性时,突然觉得,夸夸聊天机器人是一个绝好的机器学习实践项目:仅从一个idea出发,怎样做一个不错的夸夸聊天机器人?

作为自然语言处理四大难题之一的自动问答,个人觉得目前还远远不够“智能”,虽然市面上有很多聊天机器人,但是观察来看,以娱乐的心态来对话是可以的,或者完成一些简单的任务是没有问题的,例如询问天气,但是如果抱着很高的期望,很多轮对话下来,基本可以认为这个聊天机器人“不靠谱”, “答非所问”,甚至是个“智障”。虽然通用领域的智能问答或者聊天机器人还有很长的路要走,但是如果把这个问题限定在垂直领域或者很小的需求范围,那么问题可能就有解了,例如夸夸聊天机器人,需求就很简单:做啥都夸。简单的就是随便夸,复杂一点或者个性化的就是夸某个点、某件事、某个人,前者吗,就是上次《一行Python代码实现夸夸聊天机器人》做得事情,准备一些通用夸奖的语料,然后随机夸;后者,需要准备一些夸夸规则和夸夸语料库。

开个玩笑,二十一世纪什么最贵?当然是数据了,确切的说,是面向特定任务的特定数据。现在不缺机器学习框架,不缺算法,不缺机器,甚至不缺“人”,缺什么,就缺数据。这段时间,因为夸夸群的兴起,很多人看到了商机,说不定哪一天你的老板把你找来,直接给扔给你一个任务:做一个夸夸聊天机器人?怎么办,当然要调研啦。花了大半天时间,你了解了聊天机器人的前世今生,发现了人工智能标记语言AIML,知道了Chatbot的种种玩法,基于规则的、基于机器学习模型的、基于知识图谱的等等等等,甚至还有很多智能问答开源框架可以直接套用,最后,当你兴高采烈的准备动手实践的时候,你突然发现,还没有数据,你需要数据,需要夸夸语料库。
继续阅读

2019斯坦福CS224n深度学习自然语言处理课程视频和相关资料分享

斯坦福大学2019年新一季的CS224n深度学习自然语言处理课程(CS224n: Natural Language Processing with Deep Learning-Stanford/Winter 2019)1月份已经开课,不过视频资源一直没有对外放出,直到前几天官方在油管上更新了前5节视频:CS224n: Natural Language Processing with Deep Learning | Winter 2019

这门自然语言处理课程是值得每个NLPer学习的NLP课程,由 Christopher Manning 大神坐镇主讲,面向斯坦福大学的学生,在斯坦福大学已经讲授很多年。此次2019年新课,有很多更新,除了增加一些新内容外,最大的一点大概是代码由Tensorflow迁移到PyTorch:

这几年,由于深度学习、人工智能的概念的普及和推广,NLP作为AI领域的一颗明珠也逐渐广为人知,很多同学由此进入这个领域或者转行进入这个领域。Manning大神在第一堂课的视频开头之处给学生找位子(大概还有很多同学站着),同时开玩笑的说他在斯坦福大学讲授自然语言处理课程的第一个十年,平均每次选课的学生大约只有45个。

这门课程的主要目标是希望学生:能学到现代深度学习相关知识,特别是和NLP相关的一些知识点;能从宏观上了解人类语言以及理解和产生人类语言的难度;能理解和用代码(PyTorch)实习NLP中的一些主要问题和人物,例如词义理解、依存句法分析、机器翻译、问答系统等。

关于课程视频,目前官方只放出了前5节课程视频,我下载了一份放到了百度网盘里,感兴趣的同学可以关注AINLP,回复"cs224n"获取,这份视频会持续更新,直到完整版,欢迎关注:


继续阅读

一行Python代码实现夸夸聊天机器人

来,做个标题党,娱乐一下。

前两天通过国内NLP才俊清华刘知远老师的朋友圈了解到有个清华夸夸群:

然后今天在知乎又看到他在这个帖子下的评论:如何评价清华夸夸群

实测疗效颇佳!都有种冲动要开发个夸夸聊天机器人,个性化夸人,终生陪伴左右。

我想这个功能AINLP双语聊天机器人无名可以有啊,虽然还做不到高级的个性化,但是最简单的起码是可以做到的,所以说干就干,用一行Python代码实现了这个功能:

print(random.choice(zan_list))

来,看看效果,其中 zan_list 是我随手整理得“中文夸夸语料库”:

In [1]: import random
 
In [2]: from util import zan_list
 
In [3]: print(random.choice(zan_list))
您目光深邃,一看您就是一位有思想的人。
 
In [4]: print(random.choice(zan_list))
从您的言谈中可以看出,我今天遇到的是很有修养的人。
 
In [5]: print(random.choice(zan_list))
别开玩笑了,看您的容貌,肯定不到二十岁。
 
In [6]: print(random.choice(zan_list))
这么魁梧的身材,潇洒的外表,不是大老板才怪了呢!
 
In [7]: print(random.choice(zan_list))
您一看就是大富大贵的人
 
In [8]: print(random.choice(zan_list))
我真佩服您的头脑,多少别人办不成的事,您一到便迎刃而解。
 
In [9]: print(random.choice(zan_list))
您的语调独特,言谈话语中充满了感染力。
 
In [10]: print(random.choice(zan_list))
听君一席话,胜读十年书,今天与您交谈,我受益匪浅。
 
In [11]: print(random.choice(zan_list))
您一看就是大富大贵的人
 
In [12]: print(random.choice(zan_list))
您真幽默,话从您口中说出来就是不一样。
 
In [13]: print(random.choice(zan_list))
这么魁梧的身材,潇洒的外表,不是大老板才怪了呢!

“科学研究”表明,经常被夸奖小朋友学习更好,年轻人更帅更漂亮,老年人更健康,所以大家赶紧关注AINLP公众号,后台对话试试聊天机器人无名的夸夸聊天功能:


关注AINLP后可后台直接对话聊天机器人无名,提供中英双语聊天,可以直接使用中英机器翻译,可以调戏对联机器人,也可以查询相似词,欢迎来撩,欢迎关注:

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:一行Python代码实现夸夸聊天机器人 http://www.52nlp.cn/?p=11276

那些值得推荐和收藏的线性代数学习资源

关于线性代数的重要性,很多做机器学习的同学可能会感同身受,这里引用“牛人林达华推荐有关机器学习的数学书籍”这篇文章中关于线性代数的一段话:

线性代数 (Linear Algebra):

我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要。这门学科对于Learning是必备的基础,对它的透彻掌握是必不可少的。我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是

Introduction to Linear Algebra (3rd Ed.) by Gilbert Strang.

这本书是MIT的线性代数课使用的教材,也是被很多其它大学选用的经典教材。它的难度适中,讲解清晰,重要的是对许多核心的概念讨论得比较透彻。我个人觉得,学习线性代数,最重要的不是去熟练矩阵运算和解方程的方法——这些在实际工作中MATLAB可以代劳,关键的是要深入理解几个基础而又重要的概念:子空间(Subspace),正交(Orthogonality),特征值和特征向量(Eigenvalues and eigenvectors),和线性变换(Linear transform)。从我的角度看来,一本线代教科书的质量,就在于它能否给这些根本概念以足够的重视,能否把它们的联系讲清楚。Strang的这本书在这方面是做得很好的。

而且,这本书有个得天独厚的优势。书的作者长期在MIT讲授线性代数课(18.06),课程的video在MIT的Open courseware网站上有提供。有时间的朋友可以一边看着名师授课的录像,一边对照课本学习或者复习。

https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/
(注:这里我修正了一下链接,原文链接已经没有了)

那么这里首推的线性代数学习资源就是 Gilbert Strang 教授的这门线性代数课程了,除了上面链接中官方主页的英文原版外,国内网易公开课也早已引进并有同步翻译。

1. 麻省理工公开课:线性代数

http://open.163.com/special/opencourse/daishu.html

课程介绍:

“线性代数”,同微积分一样,是高等数学中两大入门课程之一,不仅是一门非常好的数学课程,也是一门非常好的工具学科,在很多领域都有广泛的用途。它的研 究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。本课程讲述了矩阵理论及线性代数的基本知识,侧重于那些与其他学科相关的内容, 包括方程组、向量空间、行列式、特征值、相似矩阵及正定矩阵。

课程主讲人:Gilbert Strang 教授

吉尔伯特-斯特朗:1934年11月27日出生,是美国享有盛誉的数学家,在有限元理论、变分法、小波分析及线性代数方面均有所建树。他对教育的贡献尤为 卓著,包括所著有的七部经典数学教材及一部专著。斯特朗自1962年至今担任麻省理工学院教授,其所授课程《线性代数导论》、《计算科学与工程》均在 MIT开放课程软件(MIT OpenCourseWare)中收录,获得广泛好评。

我大概在2013年学习过这门课程,也花了很多时间找这门课程的书籍资源,最终锁定了这本书的第四版英文版电子版:Introduction to Linear Algebra_4ED_Strang ,感兴趣的同学可以关注我们的公众号AINLP,后台回复"xiandai"获取下载链接。

2. 3Blue1Brown: Essence of linear algebra(线性代数的本质)

如果说上面 Gilbert Strang 教授的线性代数课程和书籍都是大部头,那么鼎鼎大名的3Blue1Brown出品的这个线性代数的本质系列视频就是开胃菜,总共14个小视频,视频控制在9-18分钟之间,很适合短时间快速温习。不过这套视频的评价也很高,以下是来自《3Blue1Brown:“线性代数的本质”完整笔记》的点评:

我最早系统地学习线性代数是在大二时候,当时特意选修了学校物理系开设的4学分的线代,大概也就是比我们自己专业的线代多了一章向量空间的内容,其实最后上完发现,整个课程内容还是偏向于计算,对线性代数的几何直觉少有提起,对线性代数的实际运用更是鲜有涉及。同济的那本薄薄的如同九阴真经一般的教材,把线性代数讲的云里雾里,当时一个人在自习教室度过多少不眠之夜,一点一点去思考其概念定理背后的实际意义,多半也是边猜边想,苦不堪言。直到多年以后,有幸在网上听到了MIT的Strang老师开设的线代公开课,才对一些基础概念渐渐明朗,虽然至今又过去了很多年,但是对一些本质的理解,依然清晰。
不过,仔细想想,国内的教材写的云里雾里,才促使了我自发的思考,如果一切得来太容易,也许就不会那么刻骨铭心。我很早之前就想过这个问题,国内的教科书作者简直就是在下一盘大棋,自己出版的书写的高深莫测,翻译国外的书又翻译的含糊曲折,那么留给学生的只有两条路,要么去看原版的英语书,要么就是自己一点点看云雾缭绕的国产书,边猜边想边证明,不管走哪条路,都能走向成功。

最近,在youtube上看到了3Blue1Brown的Essence of linear algebra这门课,有种如获至宝的感觉,整个课程的时间并不长,但是对线性代数的讲解却十分到位,有种浓缩版的Gilbert Strang线代课程的感觉。希望通过这个课程,重温一下Linear Algebra。

这个视频,可以在油管上看官方原版:Essence of linear algebra
也可以在B站上观看:线性代数的本质 - 01 - 向量究竟是什么?
https://www.bilibili.com/video/av5987715/

3. Immersive Linear Algebra

用交互式可视化方法学习数学估计是很多同学梦寐以求的,前两天看到这条微博:

《英文版的线性代数电子书:Immersive Linear Algebra》该书是今天 Hacker News 首页头条。号称是全球第一个全交互式图形的线代电子书。

所以在这里收藏一下,有空的同学可以试一下这个在线学习线性代数的网站,不过看似还有最后两个章节没有完成:http://immersivemath.com/ila/index.html

4. Matrix Algebra for Engineers

http://coursegraph.com/coursera-matrix-algebra-engineers

香港科技大学的面向工程师的矩阵代数(Matrix Algebra for Engineers),该课程介绍的全部是关于矩阵的知识,涵盖了工程师应该知道的线性代数相关知识。学习这门课程的前提是高中数学知识,最好完成了单变量微积分课程之后选修该课程效果更佳。

This course is all about matrices, and concisely covers the linear algebra that an engineer should know. We define matrices and how to add and multiply them, and introduce some special types of matrices. We describe the Gaussian elimination algorithm used to solve systems of linear equations and the corresponding LU decomposition of a matrix. We explain the concept of vector spaces and define the main vocabulary of linear algebra. We develop the theory of determinants and use it to solve the eigenvalue problem. After each video, there are problems to solve and I have tried to choose problems that exemplify the main idea of the lecture. I try to give enough problems for students to solidify their understanding of the material, but not so many that students feel overwhelmed and drop out. I do encourage students to attempt the given problems, but if they get stuck, full solutions can be found in the lecture notes for the course. The mathematics in this matrix algebra course is presented at the level of an advanced high school student, but typically students would take this course after completing a university-level single variable calculus course.

这门课程有个lecture-notes可以直接下载:
http://www.math.ust.hk/~machas/matrix-algebra-for-engineers.pdf

5. Mathematics for Machine Learning: Linear Algebra

http://coursegraph.com/coursera-linear-algebra-machine-learning

伦敦帝国理工学院的 面向机器学习的数学-线性代数课程(Mathematics for Machine Learning: Linear Algebra),这个课程属于Mathematics for Machine Learning Specialization 系列,该系列包含3门子课程,涵盖线性代数,多变量微积分,以及主成分分析(PCA),这个专项系列课程的目标是弥补数学与机器学习以及数据科学鸿沟:Mathematics for Machine Learning。Learn about the prerequisite mathematics for applications in data science and machine learning

In this course on Linear Algebra we look at what linear algebra is and how it relates to vectors and matrices. Then we look through what vectors and matrices are and how to work with them, including the knotty problem of eigenvalues and eigenvectors, and how to use these to solve problems. Finally we look at how to use these to do fun things with datasets - like how to rotate images of faces and how to extract eigenvectors to look at how the Pagerank algorithm works. Since we're aiming at data-driven applications, we'll be implementing some of these ideas in code, not just on pencil and paper. Towards the end of the course, you'll write code blocks and encounter Jupyter notebooks in Python, but don't worry, these will be quite short, focussed on the concepts, and will guide you through if you’ve not coded before. At the end of this course you will have an intuitive understanding of vectors and matrices that will help you bridge the gap into linear algebra problems, and how to apply these concepts to machine learning.

6. 可汗学院公开课:线性代数

http://open.163.com/special/Khan/linearalgebra.html

网易公开课引进翻译的可汗学院线性代数公开课,总共143集,每集短小精悍:

在这个课程里面,主讲者介绍了线性代数的很多内容,包括:矩阵,线性方程组,向量及其运算,向量空间,子空间,零空间,变换,秩与维数,正交化,特征值与特征向量,等等。以上这些内容是线性代数的关键内容,它们也被广泛地应用到现代科学当中。

关于线性代数学习资源,还有很多,这里仅仅抛砖引玉,欢迎大家留言提供线索。

最后,提供一个线性代数学习资源的“大礼包”,包括Gilbert Strang 教授线性代数英文教材第四版电子版,香港科技大学的面向工程师的矩阵代数课程notes,以及从其他地方收集的线性代数网盘资源,感兴趣的同学可以关注我们的公众号AINLP,回复"xiandai"获取:

注:本文首发于课程图谱,转载请注明出处“课程图谱博客”:http://blog.coursegraph.com

本文链接地址:那些值得推荐和收藏的线性代数学习资源 http://blog.coursegraph.com/?p=1014

相似词查询:玩转腾讯 AI Lab 中文词向量

周末闲来无事,给AINLP公众号聊天机器人加了一个技能点:中文相似词查询功能,基于腾讯 AI Lab 之前公布的一个大规模的中文词向量,例如在公众号对话窗口输入"相似词 自然语言处理",会得到:自然语言理解、计算机视觉、自然语言处理技术、深度学习、机器学习、图像识别、语义理解、语音识别、自然语言识别、语义分析;输入"相似词 文本挖掘",会得到:数据挖掘、文本分析、文本数据、自然语言分析、语义分析、文本分类、信息抽取、数据挖掘算法、语义搜索、文本挖掘技术。如下图所示:

关于这份腾讯中文词向量 Tencent_AILab_ChineseEmbedding.txt ,解压后大概16G,可参考去年10月份腾讯官方的描述:腾讯AI Lab开源大规模高质量中文词向量数据,800万中文词随你用

从公开描述来看,这份词向量的质量看起来很不错:

腾讯AI Lab此次公开的中文词向量数据包含800多万中文词汇,其中每个词对应一个200维的向量。相比现有的中文词向量数据,腾讯AI Lab的中文词向量着重提升了以下3个方面,相比已有各类中文词向量大大改善了其质量和可用性:

⒈ 覆盖率(Coverage):

该词向量数据包含很多现有公开的词向量数据所欠缺的短语,比如“不念僧面念佛面”、“冰火两重天”、“煮酒论英雄”、“皇帝菜”、“喀拉喀什河”等。以“喀拉喀什河”为例,利用腾讯AI Lab词向量计算出的语义相似词如下:

墨玉河、和田河、玉龙喀什河、白玉河、喀什河、叶尔羌河、克里雅河、玛纳斯河

⒉ 新鲜度(Freshness):

该数据包含一些最近一两年出现的新词,如“恋与制作人”、“三生三世十里桃花”、“打call”、“十动然拒”、“供给侧改革”、“因吹斯汀”等。以“因吹斯汀”为例,利用腾讯AI Lab词向量计算出的语义相似词如下:

一颗赛艇、因吹斯听、城会玩、厉害了word哥、emmmmm、扎心了老铁、神吐槽、可以说是非常爆笑了

⒊ 准确性(Accuracy):

由于采用了更大规模的训练数据和更好的训练算法,所生成的词向量能够更好地表达词之间的语义关系,如下列相似词检索结果所示:

得益于覆盖率、新鲜度、准确性的提升,在内部评测中,腾讯AI Lab提供的中文词向量数据相比于现有的公开数据,在相似度和相关度指标上均达到了更高的分值。在腾讯公司内部的对话回复质量预测和医疗实体识别等业务场景中,腾讯AI Lab提供的中文词向量数据都带来了显著的性能提升。

当然官方的说法归官方,我还是遇到了一些bad case,例如输入官方例子 "相似词 兴高采烈" 和输入"相似词 腾讯",我们会发现一些"bad case":

另外这里用到的这份腾讯词向量数据的词条数总计8824330,最长的一个词条是:关于推进传统基础设施领域政府和社会资本合作(ppp)项目资产证券化相关工,查询的结果是:

很像一些文章标题,可能预处理的时候没有对词长做一些限制,感兴趣的同学可以详细统计一下这份词向量的词长分布。当然,少量的 bad case 不会降低这份难得的中文词向量的质量,也不会降低我们玩转这份词向量的兴趣,继续测试一些词或者短语。例如输入"相似词 马化腾"、"相似词 马云",会得到:

输入"相似词 深度学习"、"相似词 人工智能"会得到:

输入"相似词 AI"、"相似词 NLP"会得到:

当然,要是输入的"词条"没有在这份词库中,AINLP的聊天机器人无名也无能为力了,例如输入"词向量","AINLP",那是没有的:

需要说明的是,这里的查询功能间接借助了gensim word2vec 的相关接口,在腾讯这份词向量说明文档的主页上也有相关的用法提示:Tencent AI Lab Embedding Corpus for Chinese Words and Phrases,可能一些同学早就试验过了。不过对于那些机器资源条件有限的同学,或者不了解词向量、word2vec的同学,这个微信接口还是可以供你们随时查询相近词的,甚至可以给一些查询同义词、近义词或者反义词的同学提供一些线索,当然,从统计学意义上来看这份词向量的查询结果无法做到语言学意义上的准确,但是很有意思,需要自己去甄别。

最后感兴趣的同学可以关注我们的微信公众号AINLP,随时把玩腾讯 AI Lab 的这份词向量:

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:相似词查询:玩转腾讯 AI Lab 中文词向量 http://www.52nlp.cn/?p=11234

凸优化及无约束最优化相关资料

很多年前,我的师兄 Jian Zhu 在这里发表过一个系列《无约束最优化》,当时我写下了一段话:

估计有些读者看到这个题目的时候会觉得很数学,和自然语言处理没什么关系,不过如果你听说过最大熵模型、条件随机场,并且知道它们在自然语言处理中被广泛应用,甚至你明白其核心的参数训练算法中有一种叫LBFGS,那么本文就是对这类用于解无约束优化算法的Quasi-Newton Method的初步介绍。

事实上,无论机器学习还是机器学习中的深度学习,数值优化算法都是核心之一,而在这方面,斯坦福大学Stephen Boyd教授等所著的《凸优化》堪称经典:Convex Optimization – Boyd and Vandenberghe ,而且该书的英文电子版在该书主页上可以直接免费下载:

http://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf

还附带了长达301页的Slides:

http://web.stanford.edu/~boyd/cvxbook/bv_cvxslides.pdf

以及额外的练习题、相关代码数据文件:

http://web.stanford.edu/~boyd/cvxbook/bv_cvxbook_extra_exercises.pdf
http://web.stanford.edu/~boyd/cvxbook/cvxbook_additional_exercises/

相当贴心,另外Stephen Boyd教授2014年还在斯坦福大学自家的MOOC平台上开过相关课程: CVX101

https://class.stanford.edu/courses/Engineering/CVX101

提示是:A MOOC on convex optimization, CVX101, was run from 1/21/14 to 3/14/14. If you register for it, you can access all the course materials.

不知道现在注册是否还可以访问课程材料,我当年竟然注册过这门课程,所以还能访问相关资料:

这本书也有中文翻译版,由清华大学出版社出版:

http://www.tup.tsinghua.edu.cn/bookscenter/book_03184902.html

最后提供上述相关材料的打包下载,包括凸优化课程视频、英文原版书籍、练习题和Slides,另外也包括《无约束最优化》的PDF文档,感兴趣的同学可以关注我们的公众号AINLP,回复"youhua"下载:

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:凸优化及无约束最优化相关资料 http://www.52nlp.cn/?p=11222

Python自然语言处理工具NLTK学习导引及相关资料

NLTK 大概是最知名的Python自然语言处理工具了,全称"Natural Language Toolkit", 诞生于宾夕法尼亚大学,以研究和教学为目的而生,因此也特别适合入门学习。NLTK虽然主要面向英文,但是它的很多NLP模型或者模块是语言无关的,因此如果某种语言有了初步的Tokenization或者分词,NLTK的很多工具包是可以复用的。

关于NLTK,网上已经有了很多介绍资料,当然首推的NLTK学习资料依然是官方出的在线书籍 NLTK Book:Natural Language Processing with Python – Analyzing Text with the Natural Language Toolkit ,目前基于Python 3 和 NLTK 3 ,可以在线免费阅读和学习。早期的时候还有一个基于Python 2 的老版本:http://www.nltk.org/book_1ed/ ,被 O'Reilly 正式出版过,2012年的时候,国内的陈涛同学无偿翻译过一个中文版,我还在这里推荐过:推荐《用Python进行自然语言处理》中文翻译-NLTK配套书 ,后来才有了基于此版本的更正式的中文翻译版:《Python自然语言处理》。不过如果英文ok的话,优先推荐看目前官方的最新版本:http://www.nltk.org/book/

几年前我尝试写英文博客,觉得可以从NLTK的入门介绍开始,所以写了一个英文系列:Dive into NLTK,基于Python 2,感兴趣的同学可以关注:

Part I: Getting Started with NLTK
Part II: Sentence Tokenize and Word Tokenize
Part III: Part-Of-Speech Tagging and POS Tagger
Part IV: Stemming and Lemmatization
Part V: Using Stanford Text Analysis Tools in Python
Part VI: Add Stanford Word Segmenter Interface for Python NLTK
Part VII: A Preliminary Study on Text Classification
Part VIII: Using External Maximum Entropy Modeling Libraries for Text Classification
Part IX: From Text Classification to Sentiment Analysis
Part X: Play With Word2Vec Models based on NLTK Corpus
Part XI: From Word2Vec to WordNet

这个过程中使用了NLTK中嵌入的斯坦福大学文本分析工具包,发现少了斯坦福中文分词器,所以当时动手加了一个:Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器

斯坦福大学自然语言处理组是世界知名的NLP研究小组,他们提供了一系列开源的Java文本分析工具,包括分词器(Word Segmenter),词性标注工具(Part-Of-Speech Tagger),命名实体识别工具(Named Entity Recognizer),句法分析器(Parser)等,可喜的事,他们还为这些工具训练了相应的中文模型,支持中文文本处理。在使用NLTK的过程中,发现当前版本的NLTK已经提供了相应的斯坦福文本处理工具接口,包括词性标注,命名实体识别和句法分析器的接口,不过可惜的是,没有提供分词器的接口。在google无果和阅读了相应的代码后,我决定照猫画虎为NLTK写一个斯坦福中文分词器接口,这样可以方便的在Python中调用斯坦福文本处理工具。

后来,这个版本在 NLTK 3.2 官方版本中被正式引入:stanford_segmenter.py ,我也可以小自豪一下为NLTK做过一点微小的贡献:

使用NLTK来处理中文是很多同学想干的事情,这方面,在NLTK中调用斯坦福大学的中文工具包刚好是一个切入点,关于NLTK中如何使用斯坦福大学工具包进行中文信息处理,推荐两篇文章:

在 NLTK 中使用 Stanford NLP 工具包http://www.zmonster.me/2016/06/08/use-stanford-nlp-package-in-nltk.html

以及白宁超同学的系列文章:

干货!详述Python NLTK下如何使用stanford NLP工具包http://www.cnblogs.com/baiboy/p/nltk1.html

关于NLTK的书籍,其实还有一本很不错:Python Text Processing with NLTK 2.0 Cookbook ,我之前看过这本,不过现在已经更新到Python 3了:Python 3 Text Processing with NLTK 3 Cookbook 。最后提供一个NLTK相关资料的打包下载,包括早期的中文翻译版和这个Cookbook,仅供个人学习使用,感兴趣的同学可以关注我们的公众号: AINLP, 回复'NLTK'获取相关下载链接:

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:Python自然语言处理工具NLTK学习导引及相关资料 http://www.52nlp.cn/?p=11190

Geoffrey Hinton 大神面向机器学习的神经网络公开课及相关视频资料

Geoffrey Hinton 大神的"面向机器学习的神经网络(Neural Networks for Machine Learning)"公开课早在2012年就在 Coursera 上开过一轮,之后一直沉寂,直到 Coursera 新课程平台上线,这门经典课程已开过多轮次,之前我们在《深度学习课程资源整理》隆重推荐过。

1月15日,Geoffrey Hinton 大神在twitter上宣布:

My Coursera MOOC "Neural Networks for Machine Learning" was prepared in 2012 and is now seriously out of date so I have asked them to discontinue the course. But the lectures are still a good introduction to many of the basic ideas and are available at https://www.cs.toronto.edu/~hinton/coursera_lectures.html

大意是这门在Coursera上的MOOC课程是在2012年准备的,现在有点过时了,所以要求他们(Coursera)停止提供这门课程。但是这门深度学习课程依然是介绍神经网络相关基础概念的好资料,所以课程视频依然保留在多伦多大学hinton大神的主页下,感兴趣的同学可以直接观看:https://www.cs.toronto.edu/~hinton/coursera_lectures.html

我试了一下Coursera,发现如果之前注册过,还能打开这门课程,但是一旦是非登录状态后,这门课程已经无法在Coursera上找到了:

https://www.coursera.org/learn/neural-networks

这样稍微有点遗憾,不能在Coursera上做相关的Quiz,感兴趣的同学可以参考课程图谱上早期关于这门课程的评论:

http://coursegraph.com/coursera_neuralnets

“宗派大师+开拓者直接讲课,秒杀一切二流子!”

“巨牛级别的人物来开课,我也不说啥了。”

“还有什么好说的呢?Deep Learning必修课程啊!”

该课程最后在Coursera上开课的时间大概在2018年11月份:

http://coursegraph.com/coursera-neural-networks

最后,如果你觉得访问多伦多Hinton教授主页那个教程页面不方便,这里提供早期从Coursera上下载的课程版本,包括视频、PPT、英文字幕等,关注AINLP公众号,回复“hinton"获取:

注:本文首发于“课程图谱博客”:http://blog.coursegraph.com

本文链接地址:Geoffrey Hinton 大神面向机器学习的神经网络公开课及相关视频资料 http://blog.coursegraph.com/?p=985

HMM学习最佳范例全文PDF文档及相关文章索引

HMM学习最佳范例系列大概翻译于10年前,是52nlp上早期访问量较高的一批文章,这里提供一个全文PDF下载,关注AINLP公众号,回复'HMM'获取网盘链接:

另外将博客上的隐马尔可夫模型相关文章做个索引,仅供参考:

HMM学习最佳范例

HMM相关文章

HMM应用