首页 / 资料库 / 微软 · AI 入门

资料库14 分钟读完MIT自然语言处理神经网络课程导览

自然语言处理(章节导览)

译自《Natural Language Processing》 · 查看英文原文

原文出处Natural Language Processing 原作者:Microsoft · 许可证:MIT License 中文译本由诸葛AI学院整理,仅供学习参考,版权归原作者与微软所有。

自然语言处理

这一节我们专注讲怎么用神经网络(Neural Network)来处理自然语言处理(Natural Language Processing,NLP)相关的任务。希望计算机能解决的 NLP 问题有很多:

  • 文本分类(Text classification):针对文本序列的典型分类问题。例子包括把邮件分成垃圾邮件和非垃圾邮件,或者把文章归到体育、商业、政治等类别。开发聊天机器人时,我们经常需要弄清用户想说什么,这种情况处理的是意图分类(intent classification)。意图分类往往要面对很多个类别。
  • 情感分析(Sentiment analysis):一个典型的回归问题,需要给句子配上一个数字(情感值),对应这句话的意思有多正面、多负面。情感分析的进阶版本是基于方面的情感分析(aspect-based sentiment analysis,ABSA):情感值不打在整句话上,而是打在句子的不同部分(方面)上。例如「这家餐馆的菜我喜欢,但环境很差」,菜是正面,环境是负面。
  • 命名实体识别(Named Entity Recognition,NER):从文本里抽取特定实体的问题。比如要能看出「我明天要飞巴黎」这句话里,明天指的是日期(DATE),巴黎是一个地点(LOCATION)。
  • 关键词抽取(Keyword extraction):和 NER 类似,但要求自动抽出对句意重要的词,不用针对特定实体类型做预训练。
  • 文本聚类(Text clustering):想把相似的句子归到一组时有用,例如把技术支持对话里相似的诉求归堆。
  • 问答(Question answering):指模型回答具体问题的能力。模型输入一段文本和一个问题,要给出文本中包含答案的位置(有时也要直接生成答案文本)。
  • 文本生成(Text Generation):模型生成新文本的能力。可以把它看成一个分类任务,依据某个提示文本(text prompt)预测下一个字母或下一个词。GPT-3 这类先进的文本生成模型,还能靠提示编程(prompt programming)提示工程(prompt engineering)这类技术,去完成分类等其他 NLP 任务。
  • 文本摘要(Text summarization):让计算机"读"完一篇长文本,再用几句话概括出来的技术。
  • 机器翻译(Machine translation):可以看成"理解一种语言的文本"加"生成另一种语言的文本"的组合。

起初,多数 NLP 任务靠的是语法(grammar)这类传统方法。比如机器翻译里,用解析器(parser)把原句转成句法树(syntax tree),再抽取更高层的语义结构来表示句子意思,然后依据这个意思和目标语言的语法生成结果。如今,许多 NLP 任务用神经网络解决起来效率更高。

许多经典 NLP 方法在 Natural Language Processing Toolkit(NLTK,自然语言处理工具包)这个 Python 库里有实现。网上还有一本很好的 NLTK Book,讲的就是各类 NLP 任务怎么用 NLTK 来做。

我们的课程主要用神经网络做 NLP,需要时会用上 NLTK。

前面已经学过用神经网络处理表格数据和图像。这类数据和文本的主要区别在于:文本是长度可变的序列,而图像的输入尺寸事先就知道。卷积网络(convolutional network)能从输入数据里抽取模式,但文本里的模式更复杂。举例说,否定词和被否定的对象之间可以隔着任意多个词(比如「我不喜欢橙子」,对比「我不喜欢那些又大又艳又好吃的橙子」),而这仍然要被理解成同一个模式。所以处理语言得引入新的神经网络类型,比如循环网络(recurrent networks)Transformer

安装库

如果你在本地 Python 环境跑这门课,需要用下面的命令装上 NLP 所需的全部库:

PyTorch 版 bash pip install -r requirements-pytorch.txt TensorFlow 版 bash pip install -r requirements-tf.txt

你也可以在 Microsoft Learn 上用 TensorFlow 试做 NLP。

GPU 提醒

这一节的有些例子要训练相当大的模型。 * 用带 GPU 的电脑:在大模型上省等待时间,建议把 notebook 跑在有 GPU 的机器上。 * GPU 显存受限:在 GPU 上跑会遇到显存用完的情况,训练大模型时尤其如此。 * 显存消耗:训练过程吃掉多少显存取决于多个因素,包括小批量(minibatch)的大小。 * 把小批量调小:碰上显存问题,可以考虑改小代码里的 minibatch 大小。 * TensorFlow 的显存释放:老版本 TensorFlow 在同一个 Python kernel 里训练多个模型时,可能不会正确释放显存。要管好显存,可以配置 TensorFlow,让它按需分配。 * 在 notebook 里加上这段代码:让 TensorFlow 只在需要时增长显存分配:

python physical_devices = tf.config.list_physical_devices('GPU') if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True)

如果想从经典机器学习的角度了解 NLP,可以看这套课

本节内容

这一节我们会学到:

这篇在讲什么,跟咱们的课怎么对?

资料库是大厂公开教材的中文译本,偏原理和工程做法。想看面向中小企业的白话版本,去入门课场景课