自然语言处理是一门用于理解人类语言、情感和思想的技术,被称为是人工智能皇冠上的明珠。

随着深度学习发展,自然语言处理技术近年来发展迅速,在技术上表现为BERT、GPT等表现极佳的模型;在应用中表现为chatbot、知识图谱、舆情监控等基于NLP技术的产品在市场上的大规模出现。

基于此,各类公司开始出现NLP算法工程师的需求,待遇在软件工程师岗位中处于相当上游的水平。

基于此,不少同学和工程师有学习NLP的愿望,本文对首先NLP做一个简单的介绍;然后,作为一个过来人,为初学NLP的同学提供一些必要的建议。

文末有我们的公众号的二维码,扫描关注,可以领取系统的NLP资料。

作者&编辑 | 小Dream哥

1  NLP简介

每次与行外之人谈起自然语言处理(Natural Language Process,NLP),对方往往都是一片茫然。因此,常常感到很苦恼,如何跟一个从未接触过NLP的人,解释NLP到底是什么?毕竟这是一门这么重要的技术(学科),它的发展与应用,会极大的影响这个世界上的每一个行业,每一个人。

那么,到底什么是NLP呢?所谓自然语言处理,就是用计算机(或者其他计算单元,以下类似)来处理人类的自然语言。那么要理解NLP,首先要理解什么是自然语言。所谓“自然语言”,是相对于计算机语言(计算机能够理解的语言,如汇编、C语言等)而言的,人类日常使用的语言,例如我们都讲的中文,国际语言英文,各地的方言。那么为什么会有NLP这样一个专门的学科(在各大高校都有专门的学科)来研究如何用计算机来处理自然语言呢?

因为计算机设计之初主要是用于计算,或者完成某一项有明确规则任务。所以计算机语言与人类日常使用的语言存在很大的差异,计算机不能直接理解人类语言的含义,即不能直接同人类进行沟通。长期以来,计算机都不能很好的理解人类的语言,通常是程序员写一些规则去笼统的对语句进行一些判断和处理。如何让计算机听懂人话,同人交谈,甚至理解人的情感和文化,这就是NLP要做的事情。

人类语言承载了人的思考、文化等,也是每个人对外交互和表达的最主要手段。NLP就是为了解决这样一个问题而出现的技术。他希望能够使得计算机理解人类的语言,甚至是语言背后的文化、意图与情感。例如说,当你说“我饿了”,计算机能够明白你肚子饿了,并且提出帮你定外卖;当一个女孩子说“我想要苹果”的时候,计算机能够结合当时的情境,明白女孩子说的苹果,到底是水果,还是手机。

2 NLP算法工程师必备技能 

自然语言处理(NLP)是一门复杂而且艰难的学科,之前提过NLP要做的事情,就是让计算机听懂人话,同人交谈,甚至理解人的情感和文化。因此,NLP是一门交叉学科,它涉及语言学、计算机科学以及人工智能等学科。

那么,该如何从一个小白,入门成为一名合格的NLP算法工程师需要哪些技能呢?

笔者总结了一下,成为一名合格的NLP算法工程师,需要掌握如下的基本技能:

1)掌握必要的数学基础及熟练的编程能力;

2)熟练使用python进行数据处理;

3)了解深度学习的理论基础;

4)熟悉NLP中常用的深度学习模型;

5)熟练掌握至少一种深度学习平台框架,如tensorflow、pytorch或keras等;

6)熟悉朴素贝叶斯、HMM、CRF等NLP中常用的机器学习算法;

7)熟练掌握NLP中分词、NER,情感分析、语义匹配等几种基本任务常用的模型及方法。

有的同学看到如此多的内容和技能或许会退缩,但是正是这些都颇具难度的内容,构筑了这个行业的壁垒,一个一个啃下去,胜利就属于你。

4 入门指引

1)从深度学习理论开始,迅速切入

深入了解感知器与神经网络的基本理论,包括正向传播,反向传播,误差,损失函数,梯度等概念。这是深度学习理论最基础也是最重要的部分。通过这部分内容的学习,你可以检验你是否适合进一步深入AI领域;深入了解之后,也可以迅速建立起学习的信息,如果你有一种“原来所谓的人工智能,深度学习也不过如此”的感觉,学习的目标就达到了。

其中,可能有的同学需要补充学习一些数学微分方面的知识。

2)熟练掌握python

熟练掌握python,基本任务是能够用python自己实现一个简单的全连接前馈神经网络,实现正向传播,反向传播等。

如果没有编程基础,务必要好好学习基本的数据结构和算法

3)熟悉深度学习中,几种常用的特征抽取器,机器在深度学习框架的使用

深入理解CNN,RNN,LSTM等NLP中常用的特征抽取器的原理及实现。

熟悉一种深度学习框架,并熟练掌握上述模型在该框架上的使用,推荐tensorflow。

4)了解几个较为基本的NLP任务的理论及实现

在NLP中,分词,词向量,NER,文本分类是最基本的几个概念和任务。熟练掌握这几个任务,就基本能够系统理解NLP的大部分概念和玩法。

分词对于中文自然语言处理来说,是最基本的步骤。需了解基本的分词理论及熟练掌握现在常用的分词工具用法

稠密式词向量出现是NLP发展过程中非常重要的事件,需要深入理解词向量的理论,深入理解word2vec训练词向量的原理。熟悉gensim等制备词向量的工具。

NER及文本分类是非常重要的NLP基本任务,需要非常熟练的掌握一种常用的方法。以NER为例,如今比较流行的基于CNN或者LSTM的模型,是必须要熟练掌握的。

这期间,会涉及数据预处理等繁杂的事项,需要你能够熟练掌握用python进行数据处理。

5)查漏补缺,学习基本的机器学习算法

当你对整个NLP有一个基本的认识之后,这个时候再来看一些基本的机器学习算法,会更有效率,也更能看出门道,知轻重。面试常问的机器学习算法有HMM,CRF,SVM,朴素贝叶斯等。

6)掌握一种更复杂的NLP任务

更复杂的NLP任务包括对话机器人,机器翻译,知识图谱等,他们往往是多种NLP任务和软件系统的综合。通过掌握一种复杂的任务,你能够更能实际了解NLP这门技术的边界和实际应用场景。

通过这些复杂的任务,你可以了解到一些比较新的NLP技术,例如attention,seq2seq,transformer等。

7)逐渐了解现在NLP中最火爆的预训练模型

GPT,BERT,XLNET是现在NLP从业者必须要了解的东西,他们很可能是NLP的未来。甚至,BERT已经在产业界有了很多的实际应用。

必须要深入了解他们的历史,原理,实现以及实际应用

8)选定你的研究方向,不断跟进,不断补充自己的不足

到这里,你基本掌握了作为一名NLP工程师应该掌握的东西,你可以根据你的实际情况,选择你要研究和跟进的方向。可以是最基础的NER,语义匹配等;也可以是复杂的聊天机器人,知识图谱等。

NLP是一门快速持续发展的学科和技术,你必须不断学习,才能跟上脚步。

还有一个建议,注重你的工程能力的提升,多刷一刷leetcode。

总结

自然语言处理是一门非常复杂的学科和技术,要掌握他不是一件轻松的事情,需要相当长一段时间的投入和努力。同时,他也是极具意义和前景的技术,相信在学习过程中,你能获得很多的成长和乐趣

最后,想要学习的同学,可以扫描如下二维码,关注公众号“科学扬声器”,输入“NLP学习资料”获取系统的学习资料。

知识星球推荐

扫描上面的二维码,就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师。

知识星球主要有以下内容:

(1) 聊天机器人

(2) 知识图谱

(3) NLP预训练模型

转载文章请后台联系

侵权必究

【NLP】老司机带你入门自然语言处理的更多相关文章

  1. 老司机带你走进Core Animation

    为什么时隔这么久我又回来了呢? 回来圈粉. 开玩笑的,前段时间ipv6被拒啊,超级悲剧的,前后弄了好久,然后需求啊什么的又超多,所以写好的东西也没有时间整理.不过既然我现在回来了,那么这将是一个井喷的 ...

  2. 老司机带你开飞机 一: mssql on linux 安装指导

    通常在本机开发环境中需要搭建所有的服务,还要修改本地的hosts,实在是不胜其烦.如今有了docker,完全不用污染本地环境,且看老司机带你搭建一个asp.net core的开发环境集群.愿你走出虚拟 ...

  3. Kali Linux来袭~老司机带你进击

    Kali是BackTrackLinux完全遵循Debian开发标准彻底的完全重建.全新的目录框架,复查并打包所有工具,我们还为VCS建立了Git树. 本次推荐内容主要介绍Kali-Linux的安装,包 ...

  4. 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透

    前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...

  5. 老司机带你玩转面试(3):Redis 高可用之主从模式

    前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...

  6. 老司机带你玩转面试(4):Redis 高可用之哨兵模式

    前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...

  7. 老司机带你玩转面试(5):Redis 集群模式 Redis Cluster

    前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...

  8. 老司机带你用vagrant打造一站式python开发测试环境

      前言 作为一个学习和使用Python的老司机,好像应该经常总结一点东西的,让新司机尽快上路,少走弯路,然后大家一起愉快的玩耍. 今天,咱们就使用vagrant配合xshell打造一站式Python ...

  9. 老司机带你体验SYS库多种新玩法

    导读 如何更加愉快地利用sys库做一些监控? 快来,跟上老司机,体验sys库的多种新玩法~ MySQL5.7的新特性中,非常突出的特性之一就是sys库,不仅可以通过sys库完成MySQL信息的收集,还 ...

随机推荐

  1. ELK收集日志到mysql数据库

    场景需求 在使用ELK对日志进行收集的时候,如果需要对数据进行存档,可以考虑使用数据库的方式.为了便于查询,可以同时写一份数据到Elasticsearch 中. 环境准备 CentOS7系统: 192 ...

  2. 图论--2-SAT--poj 3678-Katu Puzzle(模板题)

    Description Katu Puzzle is presented as a directed graph G(V, E) with each edge e(a, b) labeled by a ...

  3. python selenium(定位方法)

    一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...

  4. Web 跨域请求问题的解决方案- CORS 方案

    1.什么是跨域 跨域是指跨域名的访问,以下情况都属于跨域: 跨域现象 实例 域名不相同 www.baidu.com与www.taobao 一级域名相同,但是端口不相同 www.baidu.com:80 ...

  5. B - Housewife Wind POJ - 2763 树剖+边权转化成点权

    B - Housewife Wind POJ - 2763 因为树剖+线段树只能解决点权问题,所以这种题目给了边权的一般要转化成点权. 知道这个以后这个题目就很简单了. 怎么转化呢,就把这个边权转化为 ...

  6. G - Pictures with Kittens (easy version) dp

    https://codeforces.com/problemset/problem/1077/F1 这个其实是一个比较简单的dp了 题目大意: 给你n个数,让你从n个数里选出x个数,并且每隔k个至少选 ...

  7. Coursera课程笔记----P4E.Capstone----Week 4&5

    Spidering and Modeling Email Data(week4&5) Mailing List - Gmane Crawl the archive of a mailing l ...

  8. thrift的使用

    简介 thrift 原来是facebook的rpc框架,根据数据结构和接口描述生成多种语言的接口,方便使用多种语言进行开发,详细信息这里不再赘述,下文以一个简单的代码(C++)示例来介绍使用方法. 示 ...

  9. 【Flink】使用之前,先简单了解一下Flink吧!

    目录 Flink简单介绍 概述 无边界数据流和有边界数据流 技术栈核心组成 架构体系 重要角色 Flink与Spark架构概念转换 Flink简单介绍 概述    在使用Flink之前,我们需要大概知 ...

  10. 【Spark】Spark任务调度相关知识

    文章目录 准备知识 DAG 概述 shuffle 概述 SortShuffleManager 普通机制 bypass机制 Spark任务调度 流程 准备知识 要弄清楚Spark的任务调度流程,就必须要 ...