AI 研习社获得官方授权,汉化翻译卡耐基梅隆大学的11-747神经网络自然语言处理(2019春季),今天上线第二讲!...我们先来一睹为快—— 第二讲 简单练习 :预测句子中的下一个单词 上手视频约 4 分钟 视频内容 翻译 | 孙稚昊 曹云 翻译 | 王和春 孙振维 黄伟聪 看完是不是不够过瘾!
在此示例中,我们将创建一个基本的词袋分类器,以对给定句子的语言进行分类。 设置分类器 在此示例中,我们将选择西班牙语和英语的句子: 首先,我们将每个句子拆分成一个单词列表,并将每个句子的语言作为标签。...解决上下文单词的一种方法可能是,就像一样简单,使用句子中目标单词之前的单词来预测目标单词,而更复杂的模型可以在目标单词之前和之后使用多个单词。...尝试捕获句子中单词顺序的一种简单方法是使用 N 元组。...如果我们认为一种语言是由较小的单词对(二元图)的一部分而不是单个单词代表的,则可以开始将语言建模为概率模型,其中单词出现在句子中的概率取决于它之前出现的单词。...分词 接下来,我们将学习 NLP 的分词化,这是一种预处理文本的方式,可以输入到模型中。 分词将我们的句子分成较小的部分。 这可能涉及将一个句子拆分成单个单词,或者将整个文档分解成单个句子。
我们可以假设,英语中每个句子都表达了一种独立的意思或者想法。编写程序来理解单个句子,可比理解整个段落要容易多了。 为句子切分模型编码就像你看到标点符号时对句子进行断句一样,都不是难事。...NLP工作流中的下一步就是将这个句子切分成单独的单词或标记。这就是所谓的“标记”(Tokenization)。...在NLP中,我们将发现这一过程叫“词形还原”(Lemmatization),就是找出句子中每个单词的最基本的形式或引理。 这同样也适用于动词。...在我们的NER标记模型中运行每个标记之后,这条句子看起来如下图所示: ? 但是,NER系统并非只是简单地进行字典查找。相反,它们使用单词如何出现在句子中的上下文和统计模型来猜测单词所代表的名词类型。...Google对“London”的自动填充建议 但是要做到这一点,我们需要一个可能完成的列表来为用户提供建议。可以使用NLP来快速生成这些数据。 要怎么生成这些数据呢?
在 NLP 中,我们把这个过程称为词形还原——找出句子中每个单词的最基本的形式或词条。 同样也适用于动词。我们也可以通过找到它们的词根,通过词形还原来将动词转换成非结合格式。...下面是我们将停止词变成灰色后的句子: ? 停止词通常通过检查已知的停止词的硬编码列表来识别。但是没有适用于所有应用程序的停止词的标准列表。要忽略的单词列表可以根据应用程序而变化。...但随着时间的推移,我们的 NLP 模型将继续以更好的方式解析文本。 步骤 6b:寻找名词短语 到目前为止,我们把句子中的每个词都看作是独立的实体。...相反,他们使用的是一个单词如何出现在句子中的上下文和一个统计模型来猜测单词代表的是哪种类型的名词。...谷歌对「London」的自我完善的建议 但是要做到这一点,我们需要一个可能的完善建议的列表来向用户提出建议。我们可以使用 NLP 来快速生成这些数据。
Doc2Vec 是一种无监督算法,可从可变长度的文本片段(例如句子、段落和文档)中学习嵌入。...Word2Vec 通过使用上下文中的其他单词预测句子中的单词来学习单词向量。在这个框架中,每个词都映射到一个唯一的向量,由矩阵 W 中的一列表示。向量的串联或总和被用作预测句子中下一个词的特征。...还有一种称为 Skip-gram Word2Vec 的架构,其中通过从单个单词预测上下文来学习单词向量。...在Doc2Vec中,训练集中的每个段落都映射到一个唯一的向量,用矩阵D中的一列表示,每个词也映射到一个唯一的向量,用矩阵W中的一列表示。段落向量和词向量分别为平均或连接以预测上下文中的下一个单词。...说明:最近在参加kaggle的NLP比赛,但是NLP的经验还不多,所以准备了这一系列作为知识的补充,如果你想一起比赛或者还有什么好的建议,请直接联系我们。
但是,如果我们不仅希望做出单个预测,还希望做出整个句子,该怎么办? 在本章中,我们将构建一个序列到序列模型,该模型将一种语言的句子作为输入,并输出另一种语言的句子翻译。...然后,我们的模型旨在根据给定的当前隐藏状态预测句子中的下一个单词,然后预测句子中的前一个单词。...由于我们对目标句子中单词的预测不是彼此独立的,因此,如果我们错误地预测目标句子中的第一个单词,则输出句子中的后续单词也不太可能是正确的。 为了帮助完成此过程,我们可以使用一种称为教师强制的技术。...在上一章中,我们研究了如何构建序列到序列模型以将句子从一种语言翻译成另一种语言。 能够进行基本交互的对话型聊天机器人的工作方式几乎相同。 当我们与聊天机器人交谈时,我们的句子将成为模型的输入。...假设我们正在训练一种模型来预测句子中的下一个单词。 我们可以先输入句子的开头: The capital city of France is _____.
一个以数字矩阵表示的笑脸 我们的数据集是一个句子的列表,所以为了让我们的算法从数据中提取模式,我们首先需要找到一种方法来使得以我们的算法能够理解的方式来表示它,也就是一个数字列表。...例如,我们可以在我们的数据集中建立一个所有的单词的词汇表,并将一个唯一的索引与词汇表中的每个单词联系起来。每个句子被表示为一个列表,只要我们的词汇表中有不同单词的数量。...在这个列表中的每个索引中,我们标记出在我们的句子中出现了多少次给定的单词。这被称为词袋模型,因为它是一种完全无视我们句子中词语顺序的表现形式,如下图所示: ? 将句子表示为词袋。...左边为句子,右边为对应的表示,向量中的每个数字(索引)代表一个特定的单词。...一种常见的方法是使用Word2Vec或更类似的方法,如GloVe或CoVe,将句子看作一个单词向量的序列,这就是我们接下来要做的。 ?
BERT 能够明显地让 NLP 任务轻易地实现迁移学习,同时在此过程中能够以最小化适应的方式在 11 个句子级和词级的 NLP 任务上,产生当前最好的结果。...原始的 BERT 模型并不轻巧,这在计算资源不足的地方(如移动手机)是一个问题。 请注意这份 BERT 论文清单很可能是不完整的。...每一个注意力头通常捕捉单词之间的一种特殊关系(带有一些冗余)。这些关系中的一部分是可以直观地解释的(比如主客体关系,或者跟踪相邻的词),而有些是相当难以理解的。...这项任务鼓励模型同时以单词级别和句子级别学习语言的良好表示。简单地说,一个句子中 15% 的单词是随机选择并用标记隐藏(或「掩蔽」)。...为鼓励模型学习句子间的关系,我们添加了下一句预测任务,在该任务中,模型必须预测一对句子是否相关,即一个句子是否可能继续连接着另一个句子。
我们可以假设这里的每个句子都表示一种独立的思想或想法,比起理解整个段落,编写程序来理解单个句子确实会容易得多。 至于构建语句分割模型,这不是一件难事,我们可以根据标点符号确定每个句子。...要实现这一点,我们可以事先训练一个词性分类模型,然后把每个单词输入其中预测词性: ? 这个模型最初是在数百万个英语句子上训练的,数据集中已经标明每个单词的词性,因此它可以学会这个“定义”的过程。...在NLP中,我们把这种将一个任何形式的语言词汇还原为一般形式的过程称为词形还原,它能找出句子中每个单词的最基本形式。 同样的,这也适用于英语动词。...下图把各个词例输入NER模型后,示例句子的变化情况: ? 虽然直观上看不出,但NER绝不是简单地查词典、打标签,它包含一个单词在上下文中位置的统计模型,可以预测不同单词分别代表哪种类型的名词。...谷歌对“London”一词的文本查询自动补全 若要做到这点,我们需要一个列表来为用户提供建议。可以使用NLP快速生成这些数据。
以数字矩阵表示的笑脸 我们的数据集是句子的列表,为了让我们的算法从数据中提取模式,我们首先需要找到一种方法以算法能够理解的方式来表示它,也就是一个数字列表。...例如,我们可以在我们的数据集中建立一个包含所有单词的词汇表,并为词汇表中的每个单词创建一个唯一索引。每个句子都被表示成一个列表,这个列表的长度取决于不同单词的数量。...在这个列表中的每个索引中,我们标记出给定词语在句子中出现的次数。这被称为词袋模型,因为它是一种完全无视句子中词语顺序的表现形式。以下是插图说明: 把句子表示为词袋。左边是句子,右边是数字表示。...然而,有些词出现频率非常高,而且只会对我们的预测造成干扰。接下来,我们将尝试用一种方法来表示能够解释单词频率的句子,看看是否能从数据中获得更多的信号。...一种常见的方法是使用Word2Vec或其他方法,如GloVe或CoVe,将句子作为一个单词向量的序列。 高效的端到端架构 卷积神经网络的句子分类训练非常快,并且适用于作为入门级的深度学习架构。
我们的数据集是一个句子列表,所以为了让我们的算法从数据中提取模式,我们首先需要找到一种方法来表示我们的算法可以理解的方式,即作为数字列表。...例如,我们可以在数据集中构建所有唯一单词的词汇表,并将唯一索引与词汇表中的每个单词相关联。然后将每个句子表示为与我们词汇表中不同单词的数量一样长的列表。...在此列表中的每个索引处,我们标记给定单词在句子中出现的次数。这被称为Bag of Words模型,因为它是一种完全忽略句子中单词顺序的表示。这如下图所示。 ?...接下来,我们将尝试一种方法来表示可以解释单词频率的句子,看看我们是否可以从我们的数据中获取更多信号。...使用预先训练过的单词 Word2Vec是一种查找单词连续嵌入的技术。它通过阅读大量文本并记住哪些词语倾向于出现在类似的语境中来学习。
这个网络结构其实在NLP中是很常用的。使用这个网络结构利用大量语料做语言模型任务就能预先训练好这个网络,如果训练好这个网络后,输入一个新句子 ?...如果预训练时候不把单词的下文嵌入到Word Embedding中,是很吃亏的,白白丢掉了很多信息。 这里强行插入一段简单提下Transformer,尽管上面提到了,但是说的还不完整,补充两句。...,建议先从这篇看起;然后可以参考哈佛大学NLP研究组写的“The Annotated Transformer. ”,代码原理双管齐下,讲得非常清楚。...通常而言,绝大部分NLP问题可以归入上图所示的四类任务中:一类是序列标注,这是最典型的NLP任务,比如中文分词,词性标注,命名实体识别,语义角色标注等都可以归入这一类问题,它的特点是句子中每个单词要求模型根据上下文都要给出一个分类类别...至于说“Next Sentence Prediction”,指的是做语言模型预训练的时候,分两种情况选择两个句子,一种是选择语料中真正顺序相连的两个句子;另外一种是第二个句子从语料库中抛色子,随机选择一个拼到第一个句子后面
项目 1:自动完成功能 ---- 传统上,自动完成是通过键值查找来实现的,在键值查找中,将用户输入的不完整单词与字典进行比较,并给出潜在单词。 然而,使用机器学习,自动完成可以更进一步。...与引用静态的单词或短语词典不同,模型可以根据真实世界的用户输入进行训练,以预测最有可能出现的下一个短语。 一个常见的例子是 Gmail 的智能回复,它对你收到的电子邮件的回复提出建议: ?...RoBERTa 是 Facebook 开发的一个 NLP 模型。...在我关于将 fastText 部署为 API 的教程中,我简要解释了使 fastText 如此特殊的原因: 单词嵌入将单词表示为浮点数的 n 维向量,其中每个数字表示单词含义的一个维度。...使用单词向量,你可以根据单词的语义来「映射」单词——例如,如果你从「king」的向量中减去「man」的向量,再加上「woman」,你将得到「queen」的向量。
如何生成LM LM的评估 介绍 NLP中的语言模型是计算句子(单词序列)的概率或序列中下一个单词的概率的模型。...即 句子的概率: 下一个单词的概率: 语言模型 v/s 字嵌入 语言模型常常与单词嵌入混淆。...假设,我们的LM给出了一个单词列表,以及它们成为下一个单词的概率,现在,我们可以抽样从给定列表中选择一个单词。 可以看出,对于一个N-gram,下一个单词总是取决于句子的最后N-1个单词。...语言模型的评估 我们需要对模型进行评估,以改进它或将其与其他模型进行比较。困惑度被用来评估语言模型。它是一种测量概率模型预测测试数据的能力。...从数学上讲,困惑度是测试集的反概率,由单词数规范化。 LM的困惑度: 结论 语言模型是NLP的重要组成部分,可以用于许多NLP任务。我们看到了如何创建自己的语言模型,以及每种方法都会出现什么问题。
本文给你的帮助 结合每年带领数百个项目组的经验,以及全美国最顶尖团队的建议,我们完成了这篇文章,它将解释如何利用机器学习方案来解决上述 NLP 问题。...One-hot encoding(词袋模型) 表示文本的一种常见方法是将每个字符单独编码为一个数字(例如 ASCII)。...例如,我们可以为数据集中的所有单词建立一个词汇表,每个单词对应一个不同的数字(索引)。那句子就可以表示成长度为词汇表中不同单词的一个列表。在列表的每个索引处,标记该单词在句子中出现的次数。...这就是词袋模型(Bag of Words),这种表示完全忽略了句子中单词的顺序。如下所示。 ? 将句子表示为词袋。左边为句子,右边为对应的表示,向量中的每个数字(索引)代表一个特定的单词。...句子的表示 快速得到分类器的 sentence embedding 的一个方法是平均对句子中的所有单词的 Word2Vec 评估。
在此示例中,有两个句子,并且两个句子都包含单词"bank": ? 如果我们仅通过选择左侧或右侧上下文来预测"bank"一词的意义,那么在两个给定示例中至少有一个会出错。...网络有效地从第一层本身一直到最后一层捕获来自目标词的左右上下文的信息。 传统上,我们要么训练语言模型预测句子中的下一个单词(GPT中使用的从右到左的上下文),要么训练语言模型预测从左到右的上下文。...这是表示被屏蔽的单词。然后,我们将以这样一种方式训练该模型,使它能够预测“分析”这个词语,所以句子变为:“我喜欢阅读关于[MASK]数据科学的博客” 这是掩蔽语言模型的关键所在。...对于50%的对来说,第二个句子实际上是第一个句子的下一个句子 对于剩下的50%,第二句是语料库中的一个随机句子 第一种情况的标签是“IsNext”,而第二种情况的标签是“NotNext” 这就是为什么BERT...每次我们将一个句子列表发送给它时,它将发送所有句子的Embedding。 我们可以通过pip安装服务器和客户机。
这些系统还给我们一种个性化的内容和服务的感觉。 ? 词嵌入是指单词在低维空间中的分布式表示。词嵌入使机器更容易理解文本。...所有这些算法都提供了多种单词矢量表示形式,但可以将它们直接输入到NLP模型中。...他们将每个列表转换成词嵌入向量,然后根据其点击会话最终向用户显示最相似的列表。为了将列表转换为向量,他们将用户的每次点击会话都视为句子和skipgram(在Word2Vec的两个变体中)。...每个用户的这些点击会话均视为句子。然后,进行正负采样。只要用户没有点击推荐的列表,就会被视为否定样本。为了进一步改善模型的性能,它们将最终预订的用户列表作为该用户单击的其他所有列表的肯定示例。...针对其用户创建和收听的播放列表进行Spotify的skipgram。他们还考虑了用户跳过的歌曲,用户在歌曲上花费的时间以及整个用户的收听历史。他们从这些活动中构建正样本和负样本,然后运行单词嵌入算法。
之后我们用C任务的训练数据来训练网络,此时有两种做法,一种是浅层加载的参数在训练C任务过程中不动,这种方法被称为“Frozen”;另外一种是底层网络参数尽管被初始化了,在C任务训练过程中仍然随着训练的进程不断改变...使用这个网络结构利用大量语料做语言模型任务就能预先训练好这个网络,如果训练好这个网络后,输入一个新句子Snew ,句子中每个单词都能得到对应的三个Embedding:最底层是单词的Word Embedding...,建议先从这篇看起;然后可以参考哈佛大学NLP研究组写的“The Annotated Transformer. ”,代码原理双管齐下,讲得非常清楚。...通常而言,绝大部分NLP问题可以归入上图所示的四类任务中:一类是序列标注,这是最典型的NLP任务,比如中文分词,词性标注,命名实体识别,语义角色标注等都可以归入这一类问题,它的特点是句子中每个单词要求模型根据上下文都要给出一个分类类别...至于说“Next Sentence Prediction”,指的是做语言模型预训练的时候,分两种情况选择两个句子,一种是选择语料中真正顺序相连的两个句子;另外一种是第二个句子从语料库中抛骰子,随机选择一个拼到第一个句子后面
领取专属 10元无门槛券
手把手带您无忧上云