自然语言处理#

自然语言处理任务概览草图

在本节中,我们将重点使用神经网络处理与自然语言处理(NLP)相关的任务。我们希望计算机能够解决许多NLP问题:

  • 文本分类是一个典型的关于文本序列的分类问题。例子包括将电子邮件消息分类为垃圾邮件或非垃圾邮件,或将文章分类为体育、商业、政治等。同时,在开发聊天机器人时,我们常常需要理解用户的意图——这时我们处理的是意图分类。意图分类中通常需要处理很多类别。

情感分析是一个典型的回归问题,我们需要给句子含义的正负程度赋予一个数值(情绪值)。情感分析的更高级版本是基于方面的情感分析(ABSA),我们不是对整个句子赋予情感,而是对句子的不同部分(方面)赋予情感,例如 这家餐厅,我喜欢它的菜肴,但氛围很糟糕*。 命名实体识别(NER)指的是从文本中提取特定实体的问题。例如,我们需要理解短语 我明天需要飞往巴黎 中,明天 指的是日期,巴黎* 是位置。

  • 关键词提取与NER类似,但我们需要自动提取对句子意义重要的词汇,而无需针对特定实体类型进行预训练。
  • 文本聚类在我们希望将相似句子归为一组时非常有用,例如,在技术支持对话中相似的请求。
  • 问答系统指模型回答具体问题的能力。模型输入一段文本和一个问题,需要在文本中找出包含问题答案的位置(或者有时直接生成答案文本)。

文本生成是模型生成新文本的能力。它可以被视为一个基于某个文本提示*预测下一个字母或单词的分类任务。先进的文本生成模型,如GPT-3,能够使用称为提示编程提示工程的技术解决其他NLP任务如分类。

  • 文本摘要是一种技术,我们希望计算机“阅读”长文本并将其总结成几句话。
  • 机器翻译可以视为一种在一种语言上理解文本,在另一种语言上生成文本的结合。

最初,大多数NLP任务是用传统方法如文法来解决的。例如,在机器翻译中,解析器用于将初始句子转换为语法树,然后提取更高层次的语义结构来表示句子的含义,基于这个含义和目标语言的文法生成结果。如今,许多NLP任务更有效的解决方法是使用神经网络。

许多经典的NLP方法在自然语言处理工具包(NLTK) Python库中实现。网上有一本很棒的NLTK书籍,介绍了如何使用NLTK解决不同的NLP任务。

在我们的课程中,我们将主要关注使用神经网络处理NLP,并在需要时使用NLTK。

我们已经学习过如何使用神经网络处理表格数据和图像。这些数据与文本的主要区别在于,文本是可变长度的序列,而图像的输入大小是预先已知的。虽然卷积网络可从输入数据中提取模式,但文本中的模式更为复杂。例如,否定词与主语之间可以隔开任意多个词(如 我不喜欢橙子,和 我不喜欢那些又大又好吃的彩色橙子),但仍然应被视为一个模式。因此,为了处理语言,我们需要引入新的神经网络类型,如循环网络transformer

安装库#

如果你在本地Python环境中运行本课程,可能需要使用以下命令安装所有NLP所需的库:

对于PyTorch

pip install -r requirements-pytorch.txt

对于TensorFlow

pip install -r requirements-tf.txt

你可以在Microsoft Learn上尝试使用TensorFlow进行NLP

GPU 注意事项#

本节中,在一些示例里我们将训练相当大型的模型。

  • 使用支持GPU的电脑:建议在支持GPU的计算机上运行笔记本,以减少使用大型模型时等待的时间。
  • GPU内存限制:使用GPU时,训练大型模型可能会导致GPU内存不足。
  • GPU内存消耗:训练时消耗的GPU内存量取决于多个因素,包括小批量大小。
  • 尽可能减小小批量大小:遇到GPU内存问题时,可以尝试通过减小代码中的小批量大小来解决。
  • TensorFlow GPU内存释放:较旧版本的TensorFlow在同一Python内核中训练多个模型时可能无法正确释放GPU内存。为有效管理GPU内存,你可以配置TensorFlow按需分配GPU内存。
  • 代码示例:要设置TensorFlow仅按需增长GPU内存分配,可在笔记本中加入以下代码:
physical_devices = tf.config.list_physical_devices('GPU') 
if len(physical_devices)>0:
    tf.config.experimental.set_memory_growth(physical_devices[0], True) 

如果你对从经典机器学习的角度学习NLP感兴趣,请访问这套课程

本节内容#

本节我们将学习:


免责声明: 本文件由 AI 翻译服务 Co-op Translator 翻译完成。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原始语言版文件应视为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。