作者 | 兰红云
责编 | 何永灿
自然语言处理和大部分的机器学习或者人工智能领域的技术一样,是一个涉及到多个技能、技术和领域的综合体。
所以自然语言处理工程师会有各种各样的背景,大部分都是在工作中自学或者是跟着项目一起学习的,这其中也不乏很多有科班背景的专业人才,因为技术的发展实在是日新月异,所以时刻要保持着一种强烈的学习欲望,让自己跟上时代和技术发展的步伐。本文作者从个人学习经历出发,介绍相关经验。
一些研究者将自然语言处理(NLP,Natural Language Processing)和自然语言理解(NLU,Natural Language Understanding)区分开,在文章中我们说的NLP是包含两者的,并没有将两者严格分开。
图1 自然语言处理工程师技能树
自然语言处理学习路线
数学基础
数学对于自然语言处理的重要性不言而喻。当然数学的各个分支在自然语言处理的不同阶段也会扮演不同的角色,这里介绍几个重要的分支。
- 代数
代数作为计算数学里面很重要的一个分支,在自然语言处理中也有举足轻重的作用。这一部分需要重点关注矩阵处理相关的一些知识,比如矩阵的SVD、QR分解,矩阵逆的求解,正定矩阵、稀疏矩阵等特殊矩阵的一些处理方法和性质等等。
对于这一部分的学习,既可以跟着大学的代数书一起学习,也可以跟着网上的各种公开课一起学习,这里既可以从国内的一些开放学习平台上学,也可以从国外的一些开放学习平台上学。这里放一个学习的链接,网易公开课的链接:https://c.open.163.com/search/search.htm?query=线性代数#/search/all。(其他的资料或者平台也都OK)。
- 概率论
在很多的自然语言处理场景中,我们都是算一个事件发生的概率。这其中既有特定场景的原因,比如要推断一个拼音可能的汉字,因为同音字的存在,我们能计算的只能是这个拼音到各个相同发音的汉字的条件概率。也有对问题的抽象处理,比如词性标注的问题,这个是因为我们没有很好的工具或者说能力去精准地判断各个词的词性,所以就构造了一个概率解决的办法。
对于概率论的学习,既要学习经典的概率统计理论,也要学习贝叶斯概率统计。相对来说,贝叶斯概率统计可能更重要一些,这个和贝叶斯统计的特性是相关的,因其提供了一种描述先验知识的方法。使得历史的经验使用成为了可能,而历史在现实生活中,也确实是很有用的。比如朴素贝叶斯模型、隐马尔卡模型、最大熵模型,这些我们在自然语言处理中耳熟能详的一些算法,都是贝叶斯模型的一种延伸和实例。
这一部分的学习资料,也非常丰富,这里也照例对两种概率学习各放一个链接,统计学导论