借助概率模型做自然语言处理

欢迎来到由 DeepLearning.ai提供的自然语言处理专项的第二门课程。这门课由Younes Bensouda Mourri,Łukasz Kaiser和Eddy Shyu讲授。

目录

  • 借助概率模型做自然语言处理

    • 目录
    • 课程简介
    • 自修正和动态规划算法
      • 自修正
      • 建立模型
      • 最小编辑距离
      • 最小编辑距离算法
    • 词性标注和隐马尔可夫模型
      • 词性标注
      • 马尔可夫链
      • 马尔可夫链和词性
      • 隐马尔可夫模型
      • 转移矩阵
      • 发射矩阵
      • 维特比算法
        • 初始化
        • 前向传播
        • 反向传播
    • 自修正和语言模型
      • N-Grams
      • N-grams和概率
      • 序列概率
      • 句子开始和结束的符号
      • N-gram语言模型
      • 语言模型的评估
      • 处理词汇表外的单词
      • 平滑处理
    • 神经网络中的词嵌入
      • 单词表示的基本方法
      • 词嵌入
      • 词嵌入方法
      • CBOW模型
      • 文本预处理
      • 将单词转化为向量
      • CBOW模型的结构
      • CBOW模型的维度
      • 激活函数
      • 损失函数
      • 前向传播
        • 反向传播和梯度下降
        • 词嵌入向量的特征提取
      • 词嵌入模型的评估
        • 内在评估
        • 外在评估

课程简介

第二门课程的内容简介

In Course 2 of the Natural Language Processing Specialization, offered by deeplearning.ai, you will:

Create a simple auto-correct algorithm using minimum edit distance and dynamic programming,
Apply the Viterbi Algorithm for part-of-speech (POS) tagging, which is important for computational linguistics,
Write a better auto-complete algorithm using an N-gram language model, and
Write your own Word2Vec model that uses a neural network to compute word embeddings using a continuous bag-of-words model.

Please make sure that you’re comfortable programming in Python and have a basic knowledge of machine learning, matrix multiplications, and conditional probability.

By the end of this Specialization, you will have designed NLP applications that perform question-answering and sentiment analysis, created tools to translate languages and summarize text, and even built a chatbot!

This Specialization is designed and taught by two experts in NLP, machine learning, and deep learning. Younes Bensouda Mourri is an Instructor of AI at Stanford University who also helped build the Deep Learning Specialization. Łukasz Kaiser is a Staff Research Scientist at Google Brain and the co-author of Tensorflow, the Tensor2Tensor and Trax libraries, and the Transformer paper.

自修正和动态规划算法

自修正

  • 自修正指一种将拼写错误的单词纠正为正确形式的应用。

    • 例如:Happy birthday deah friend! ==> dear
  • 工作流程:
    1. 确定错误拼写的单词
    2. 编辑距离算法:计算单词111转化为单词222的最小编辑距离
    3. 筛选编辑候选列表
    4. 计算单词的概率

建立模型

  • 确定错误拼写的单词

    • 如果该单词未被存储在词汇表VVV中即视为错误拼写
  • 计算单词111转化为单词222的最小编辑距离

    • 编辑距离

      • 计算字符串aaa转换为字符串bbb的最少单字符编辑次数

        • 插入 (增加一个字母)

          • 在当前单词任意部分增加一个字母: to ==> top,two,…
        • 删除 (删除一个字母)
          • 在当前单词任意部分删除一个字母 : hat ==> ha, at, ht
        • 交换 (交换两个邻近的字母)
          • 例如: eta=> eat,tea
        • 替换 (将一个字母转换为另外一个任意的字母)
          • 例如: jaw ==> jar,paw,saw,…
  • 通过组合这444种编辑操作,我们获得了所有可能的编辑列表

  • 筛选编辑候选列表:

    • 从编辑列表中,仅考虑真实和正确拼写的单词
    • 如果编辑列表中的单词不存在于词汇表VVV中==>将其从候选编辑列表中删除
  • 计算单词概率:候选单词是概率最高的单词

    • 语料库中的单词概率为:单词出现的次数除以单词总数。

最小编辑距离

  • 评估两个单词之间的相似度

  • 计算一个字符转换为另一个字符所需的最少编辑次数

  • 该算法最小化编辑成本

  • 应用:

    • 拼写校正
    • 文本相似度
    • 机器翻译
    • DNA测序

最小编辑距离算法

  • 源单词位于矩阵的列

  • 目标单词位于矩阵的行

  • 每个单词开头的空字符设为000

  • D[i,j]D [i,j]D[i,j]是指源单词空字符到iii与目标单词空字符到jjj之间的最小编辑距离

  • 要填写表格的其余部分,我们可以使用以下公式化的方法:

词性标注和隐马尔可夫模型

词性标注

  • 词性标注指的是单词或词汇术语的类别

    • 标签: 名次, 动词, 形容词, 介词, 副词,…
    • 例句示例: why not learn something ?
  • 应用:

    • 命名实体识别
    • 指代消歧
    • 语音识别

马尔可夫链

  • 马尔可夫链可以被描述为有向图

    • 图形是一种数据结构,由一组由线连接的圆可视化表示
  • 图的圆圈代表模型的状态
  • 从状态s1s1s1s2s2s2的箭头表示转移概率,即从s1到s2的可能性

马尔代夫链和词性

  • 想象这样一个句子,由一组单词序列组成,并且标注有词性

    • 我们可以用图来表示这样一个序列
    • 其中某个词性定义为一个事件,可以通过模型图的状态来判断事件发生的可能性
    • 状态之间箭头上的权重定义了从一个状态到另一状态的概率
    • 即词性转化的概率由下图可以得知

  • 下一个事件的概率仅取决于当前事件
  • 模型图可以定义为形状为(n+1×n)(n + 1 \times n)(n+1×n)的转移矩阵
    • 当没有先前状态时,我们引入初始状态π\piπ
    • 一个状态的所有转移概率的总和应始终为111

隐马尔可夫模型

  • 隐马尔可夫模型意味着状态是隐藏的或无法直接观察到的
  • 隐马尔可夫模型具有维度(N+1,N)(N + 1,N)(N+1,N)转移概率矩阵A,其中N是隐藏状态的数量
  • 隐马尔可夫模型具有发射概率矩阵BBB,描述了从隐藏状态到可观察值的转换(语料库的单词)
    • 隐藏状态的发射概率行总和为1

转移矩阵

  • 转移矩阵是存储隐马尔可夫模型状态之间的所有转移概率

  • C(ti−1,ti)C(t_{i-1},t_i)C(ti1,ti)是计算训练语料库中所有词性的出现次数

  • C(ti−1,tj)C(t_{i-1},t_j)C(ti1,tj)是计算词性ti−1t_{i-1}ti1的出现次数

  • 为了避免被零除并且转换矩阵中的很多实例为000,我们对概率公式应用平滑

发射矩阵

  • 计算特定单词和它对应的词性的次数

维特比算法

  • 维特比算法实际上是图算法

  • 目的是找到隐藏单元的序列或词性标注中最高概率的序列

  • 该算法可以分为三个主要步骤:初始化,前向传播和反向传播

  • 辅助矩阵CCCDDD

    • 矩阵CCC拥有中间最优概率
    • matrixDDD holds the indices of the visited states as we are traversing the model graph to find the most likely sequence of parts of speech tags for the given sequence of words, W1W_1W1all the way to WkW_kWk
    • CCCDDD矩阵有nnn行(词性标注的数量)和kkk个列(序列中的单词数量)

初始化

  • 矩阵CCC的初始化表明每个单词属于某个词性的概率

  • in D matrix, we store the labels that represent the different states we are traversing when finding the most likely sequence of parts of speech tags for the given sequence of words W1 all the way to Wk.

  • 在矩阵DDD中,我们存储能够代表不同单元

前向传播

  • 对于矩阵CCC,每个单元通过以下公式计算:

  • 对于矩阵DDD,保存kkk,这将最大化ci,jc_{i,j}ci,j中的单元

反向传播

  • 反向传播将提取出序列中的单词最有可能表达的词性
  • 首先,计算矩阵CCC中最后一列单元中最高概率Ci,kC_{i,k}Ci,k的索引
    • 表示当我们观察单词wiw_iwi时所经过的最后一个隐藏状态
  • 使用此索引回溯到矩阵DDD以重构词性标注的序列
  • 将许多非常小的数字相乘,例如概率,会导致数值溢出问题
    • 使用对数概率代替,转化成数字相加而不是相乘。

自修正和语言模型

N-Grams

  • 语言模型是一种计算句子概率的工具。
  • 语言模型可以根据给定历史的单词来估计下一个单词的概率
  • 应用语言模型对给定句子自修正后,然后输出对句子的建议
  • 应用:
    • 语音识别
    • 拼写校正

N-grams和概率

  • N-gram是一个单词序列。 N-gram也可以是字符或其他元素

  • 序列符号

    • mmm代表语料库的长度
    • WijW_i^jWij 是指文本语料库中从索引iiijjj的单词序列
  • Uni−GramUni-GramUniGram 概率

  • Bi−gramBi-gramBigram 概率

  • N−gramN-gramNgram probability

序列概率

  • giving a sentence the Teacher drinks tea, the sentence probablity can be represented as based on conditional probability and chain rule:

  • 给定一个句子[‘Teacher drinks tea’],根据条件概率和连锁规则将句子的概率表示为:

  • 这种直接的方法对序列概率有其局限性,句子的较长部分不太可能出现在训练语料库中

    • P(tea∣theteacherdrinks)P(tea|the\space teacher\space drinks)P(teatheteacherdrinks)
    • 由于它们都不可能出现在训练语料库中,因此它们的计数为0
    • 在这种情况下,整个句子的概率公式无法给出概率估计
  • 序列概率的近似

    • 马尔可夫假设:只有最后NNN个单词重要
    • BigramBigramBigram $P(w_n| w_{1}^{n-1}) ≈ P(w_n| w_{n-1}) $
    • NgramNgramNgram $ P(w_n| w_{1}^{n-1}) ≈ P(w_n| w_{n-N+1}^n-1) $
    • BigramBigramBigram建模整个句子:

句子开始和结束的符号

  • 句子开头符号:
  • 句子结尾符号:

N-gram语言模型

  • 计数矩阵存储n−gramsn-gramsngrams的出现次数

  • 计数矩阵转换为概率矩阵,存储n−gramsn-gramsngrams条件概率

  • 将概率矩阵与语言模型关联

  • 将许多概率相乘会带来数字下溢的风险,请使用乘积的对数代替将项的乘积转化为项的总和

语言模型的评估

  • 为了评估语言模型,将语料库分为训练(80%)(80%)(80),验证(10%)(10%)(10)和测试(10%)(10%)(10)集。

  • 划分方式可以是:连续文本划分或随机文本划分

  • Evaluate the language models using the perplexity metric

  • 使用困惑度指标评估语言模型

    • 困惑度越小,模型越好

    • 字符级别模型PPPPPP低于基于单词的模型PPPPPP

    • bi−grambi-grambigram模型的困惑度

    • 对数PPPPPP

词汇表外的单词

  • 未知单词是词汇表VVV中不存在的单词

    • 词汇表VVV外的单词用特殊字符UNK代替
    • 在语料库中但不在词汇表中的单词将由UNK代替

平滑处理

  • 当我们在有限的语料库上训练n−gramn-gramngram时,某些单词的概率可能会出现问题

    • 当训练语料库中缺少由已知单词组成的N−gramN-gramNgram时,会出现这种情况
    • 它们的数量不能用于概率估计
  • 拉普拉斯平滑或Add−1Add-1Add1平滑

  • Add−kAdd-kAddk平滑

神经网络中的词嵌入

单词表示的基本方法

  • 将单词转化为数字的最简单方法是给词汇表VVV中的每个单词分配一个唯一的整数

    • 尽管它是简单的表示形式,但却没有什么具体意义

  • 独热编码表示
    • 尽管它是简单的表示形式并且和顺序无关,但对于计算而言可能是巨大的,并且每个单词之间没有潜入的含义

词嵌入

  • 词嵌入在相对较小维度中带有含义的向量

  • 为了建立词嵌入,需要语料库和嵌入的方法

词嵌入方法

  • Word2vecWord2vecWord2vec:最初普及了机器学习的使用,以生成词嵌入

    • Word2vec使用浅层神经网络来学习单词嵌入
    • 它提出了两种模型架构
      2. CBOWCBOWCBOW模型根据周围的单词预测缺失的单词
      2. skip−gramskip-gramskipgram模型和CBOWCBOWCBOW模型相反,是通过学习输入单词周围的单词
  • GloVeGloVeGloVe:涉及分解语料库单词共现矩阵的对数,类似于计数器矩阵
  • fastTextfastTextfastText:基于skip−gramskip-gramskipgram模型,并通过将单词表示为n−gramn-gramngram考虑单词的结构
  • 生成单词嵌入的高级模型的其他示例:BERT,GPT−2,ELMoBERT,GPT-2,ELMoBERT,GPT2,ELMo

CBOW模型

  • CBOWCBOWCBOW是基于机器学习的嵌入方法,根据周围的单词来预测缺失的单词
  • 两个单词出现在各种句子中时,经常都被一组相似的词所包围—>这两个词往往在语义上相关
  • 要为预测任务创建训练数据,我们需要上下文的单词和目标中心单词,示例
    • 通过滑动窗口,您可以创建下一个训练示例和目标中心词

文本预处理

  • 我们应该认为语料库的单词不区分大小写 比如:The==THE==theThe==THE==theThe==THE==the
  • 标点:? 。 ,! 和其他字符作为词汇表VVV中的一个特殊字符
  • 数字:如果数字在用例中不重要,我们可以删除或保留它们(爷可以用特殊令牌替换它们)
  • 特殊字符:数学符号/货币符号,段落符号
  • 特殊字词:表情符号,标签

将单词转化为向量

  • 通过将中心词和上下文词转换为独热向量
  • 最终准备好的训练集是:

CBOW模型的结构

  • CBOWCBOWCBOW模型基于具有输入层,隐藏层和输出层的浅层密集神经网络

CBOW模型维度

激活函数

损失函数

  • 学习过程的目标是使用交叉熵损失找到在给定训练数据集的情况下将损失最小化的参数

前向传播

反向传播和梯度下降

  • 反向传播计算权重和偏差的偏导数

  • 梯度下降更新权重和偏差

词嵌入向量的特征提取

  • 训练完神经网络后,我们可以提取出三种替代的词嵌入表示

    1. consider each column of W_1 as the column vector embedding vector of a word of the vocabulary
    2. 将W_1的每一列视为词汇表单词的列向量嵌入向量
    1. use each row of W_2 as the word embedding row vector for the corresponding word.
    2. 使用W_2的每一行作为相应单词的单词嵌入行向量。
    1. average W_1 and the transpose of W_2 to obtain W_3, a new n by v matrix.

词嵌入模型的评估

内在评估

  • 内部评估方法评估词嵌入在本质上如何捕获单词之间的语义(含义)或句法(语法)关系

  • 在语义类上测试

  • 使用聚类算法,在词向量空间中将相似的单词归为一类

外在评估

  • 即命名实体识别,词性标注
  • 使用一些选定的评估指标(例如准确性或F1分数)在测试集中评估此分类器
  • 评估将比内部评估更加耗时,并且更难以排除故障

课程课后作业代码

Coursera课程自然语言处理(NLP) 借助概率模型做自然语言处理 deeplearning.ai相关推荐

  1. 视频教程-从零开始自然语言处理-NLP

    从零开始自然语言处理 楚门智能创始人,昆士兰理工大学数据科学硕士,多年大数据行业经验,原联想电商大数据平台负责人,Cloudera认证架构师.管理员,主要科研方向为数据科学,在自然语言处理领域有的经验 ...

  2. 吴恩达创建deeplearning.ai讲授AI课程 ,向全世界普及深度学习知识

    吴恩达称正在做的AI项目有三个,deeplearning.ai只是其中的第一个. 昨晚,前百度首席科学家吴恩达在其Twitter上发布重磅消息称,deeplearning.ai课程正式登录Couser ...

  3. 和自然语言处理有关的英语_自然语言处理对非英语语言的重要性

    和自然语言处理有关的英语 Natural Language Processing (NLP) is growing in use and plays a vital role in many syst ...

  4. 自然语言处理文本分析_通过自然语言处理释放文本分析的力量

    自然语言处理文本分析 深度学习 , 自然语言处理 (Deep Learning, Natural Language Processing) Natural language is a language ...

  5. 学不学吴恩达deeplearning.ai课程,看完这篇你就知道了

    吴恩达的网课 deeplearning.ai 到底适不适合自己呢? 快来看看学员 Thomas 怎么说的! AI 科技评论按:本文的作者是 Thomas Treml,是一名具有社会学背景的数据科学自由 ...

  6. 资源 | Deeplearning.ai课程与笔记汇总

    从接触机器学习就了解到Andrew Ng的机器学习课程,后来发现又出来深度学习课程,就开始在网易云课堂上学习deeplearning.ai的课程,Andrew 的课真是的把深入浅出.当然学习这些课程还 ...

  7. Coursera课程自然语言处理(NLP)笔记整理(一)

    文章目录 1. 有监督学习(Supervised Machine Learning) 1.1. 情感分析(Sentiment Analysis) 1.2. 初步处理 1.2.1. 建立Vocabula ...

  8. 自然语言处理NLP课程不会选择?这篇测评或许可以解你困惑

    引言 自然语言处理(Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法. ...

  9. Coursera-吴恩达-自然语言处理(NLP)专项课-课程笔记与编程实战-汇总

    1.介绍: 本文主要基于Coursera上deeplearning.ai的课程 自然语言处理 专项课程(Natural Language Processing Specialization),将全部课 ...

  10. 视频教程-2020新版 自然语言处理NLP视频课程Word2Vec GloVe关系挖掘-NLP

    2020新版 自然语言处理NLP视频课程Word2Vec GloVe关系挖掘 6年开发经验,具有丰富的移动端.中台.后端.大数据.NLP.语音生成.图像识别开发经验,团队管理经验:擅长数据架构,NLP ...

最新文章

  1. chart.Correlation绘制相关性热图
  2. Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗?
  3. centos7删除符号链接_技术|在 Linux 中怎样移除(删除)符号链接
  4. 微软 改变 开源【几个站点】
  5. matlab安装m_map,MATLAB中安装m_map后不能用,求解
  6. 9203精英挑战赛注意事宜 一
  7. jquery 判断checkbox是否为空的三种方法
  8. 搜索关键词采集YouTube视频字幕
  9. 小米11青春版 MIUI12安装谷歌条件GMS点击登录没反应的解决办法
  10. 机器学习_高偏差(High bias)与高方差(High vars)
  11. 爬虫面试python
  12. UVALive 6959 - Judging Troubles
  13. Windows防火墙开关及入站规则
  14. RT-Thread柿饼控件(5)-- ProgressBar
  15. 音频标准AES的一点理解
  16. 每天定时采集(当前时间到月底)携程机票数据
  17. cropper封装的头像裁剪尺寸插件
  18. html网页logo属性link,html元素link标签rel=icon添加网站favicon.ico图标
  19. 拼多多分享好友砍价Java实现_拼多多怎么帮助好友砍价免费拿商品,详情介绍...
  20. saber与matlab联合仿真

热门文章

  1. 如果程序员能早知道这些该有多好!
  2. 因为高考是最相对公平的一次竞争和选拔
  3. 解决Hexo博客的Next主题中阅读全文没有auto_excerpt的问题
  4. 计算机控制d a数模转换实验,实验一 D、A数模转换实验
  5. RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you
  6. 经常喝茶、喝咖啡与喝白开水的人,身体都怎么样了?老实跟你说
  7. 计算机科学与技术学科带头人,计算机专业学科带头人—陆玉昌教授
  8. day26 SQL注入神器—— Sqlmap
  9. 新型企业最重视的评估手段:360评估
  10. 腾讯成立技术委员会,地位高于 6 大事业群