友情提示:本篇文章可能读起来有点晦涩难懂,但读完一定会让你明白NLP是做什么的以及它的使用场景,甚至还能让你走上NLP的道路,且听我来聊聊。
NLP,是英文Natural Language Processing的缩写,翻译过来叫自然语言处理,是人工智能和语言学领域的分支学科。
人们自古以来都在和文字打交道,无论是外国的英文还是我们的中文。我们使用文字挺简单的,那么到了计算机时代能不能让计算机也能够理解人所用的文字呢?这便是NLP的由来。
只说概念可能比较模糊,最好理解NLP的方式就是看它使用的场景,由于NLP覆盖的场景太多了,我这里挑十大任务模式来说下。
1、分词
凡做NLP的必然会用到分词,将一句话进行一个完美的分词是之后任务的基础,而中文分词比英文分词要困难,英文词汇有空格符分割词的边界,但中文中,却没有类似的方式来区分。目前中文分词做的比较好的比如Jieba、HanLp等。
2、摘要生成
这个任务主要就是通过建立一个模型来生成关于一段话的摘要。过去常用的是抽取式摘要。把一篇文档看作是许多句子的组成的序列,模型需要从中找出最能熔炼文章大意的句子提取出来作为输出。它相当于是对每个句子做一个二分类,来决定它要不要放入摘要中。但仅仅把每个句子分开来考虑是不够的。我们需要模型输入整篇文章后,再决定哪个句子更重要。这个序列的基本单位是一个句子的表征。而最近更流行的是生成式摘要,模型的输入是一段长文本,输出是短文本。输出的短文本往往会与输入的长文本有很多共用的词汇。这就需要模型在生成的过程中把文章中重要词汇拷贝出来,放到输出中的复制的能力,比如 Pointer Network。
3、翻译
这个应该很好理解吧,就是把一种语言自动翻译为另一种语言。比如把中文翻译成英文,再把英文翻译成中文。
4、语法改错
这个任务就是通过搭建一个模型,根据上下文的情境来检测这篇文章中是否有错别字或者语法错误。比如我们在有些平台编辑文章完成后就会出现提示有哪些错别字,就是利用的这种模型。
5、文本分类
文本分类可以说是NLP非常典型的任务了,文本分类下面又可以衍生出很多任务场景。比如情感分类,就是判断一篇文章是积极向上的还是恶意低俗的,一篇文章会包括正面的词汇和负面的词汇,模型需要根据上下文学到语境中更侧重正面还是负面。再比如事实验证分类,模型需要看一篇新闻文章,判断该文章内容是真的还是假的。
6、自然语言推断
输入给模型的是一个陈述前提,和一个假设,输出是能否通过前提推出假设,它包含三个类别,分别是矛盾,蕴含和中性。比如前提是,一个人骑在马上跳过一架破旧的飞机,假设是这个人正在吃午餐。这显然是矛盾的。因为前提推不出假设。如果假设是,这个人在户外,在一匹马上。则可以推理出蕴含。再如果假设是这个人正在一个比赛中训练他的马。则推理不能确定,所以是中性的。
7、搜索引擎
模型的输入是一个关键词或一个问句和一堆文章,输出是每篇文章与该问句的相关性。谷歌有把 BERT 用在搜素引擎上在语义理解上得到了提升。比如搜帮你做美容的人是否经常站着工作。没有 BERT 之前,模型会利用关键词 estheticians 和 stand-alone 做合并结果输出。但有了 BERT 之后,搜出的结果会更倾向于文章语义的理解而非单纯的关键字匹配。
8、对话机器人
对话机器人可以分成两种,闲聊和任务导向型。闲聊机器人基本上都是在尬聊,有一堆问题待解决,比如角色一致性,多轮会话,对上下文保有记忆等。任务导向的对话机器人能够协助人完成某件事,比如订机票,调闹钟,问天气等。我们需要一个模型把过去已经有的历史对话,统统都输入到一个模型中,这个模型可以输出一个序列当作现在机器的回复。
9、知识图谱
知识图谱的构建简化地去理解可以看作是实体提取和关系抽取。实体可以是人可以是物,也可以是组织机构,非常灵活。关系可以是人与人的关系,可以是谓语动作,也可以是企业之间的资本流动。信息抽取任务希望从海量文本中自动挖掘出实体关系三元组。这个问题其实非常地复杂。这里只是简单地讲。
10、实体命名识别
这类任务的主要目的就是从一段文本中提取实体。那什么是实体呢?可以是人名、地名、产品名、公司名等等很多很多。具体提取什么实体需要根据我们的实际业务场景来进行。
听完上面关于NLP的十大任务场景是不是对NLP就有了一个大概的了解了呢。如果只是了解那就足够,但是如果你想从事NLP工作的话,那只了解是不够的。首先你在学NLP之前还得先学会机器学习和深度学习,而想要学会必须得有线性代数和概率论的基础,所以说大学学好高数很重要啊!
另外我之前写了个关于NLP入门任务的教程放在github上了,该项目主要是为了完成复旦大学邱锡鹏老师的NLP入门练习以及给想要入门NLP的同学一个教程,看目前获得的star数量还是不旺我的一番心血呀!该项目地址为:https://github.com/Alic-yuan/nlp-beginner-finish
码字不易,点个赞再走吧!