一、The Tagging Problem

典型的标签问题有两种:POS(Part Of Speech)和NER(Named Entity Recognition),两者基本一致,POS是给句子的单词打上词性的标签,NER是给句子的单词打上类别的标签(实体或者非实体?实体的话是什么实体等等)

二、生成模型

在Tagging Problem中,我们目标是给定一个句子,能够得到相应的标签序列。因此我们需要训练一个函数f,能够将输入x,映射到输出标签y上。

假设有训练样本x(i), y(i) for i = 1 . . . m. 要找到一个函数f(x)映射到标签,

其中:

但是P(y|x)不好求,因此我们进行一系列数学推到:

首先从有乘法公式P(x,y) = P(x|y)*P(y) = P(y|x)*P(x)

可得 :

原来的f(x)转为求解使上面这个式子最大值的y。再经过观察发现P(x)与y无关,于是式子进一步简化:

至此我们有了函数f(x)了。它主要由两项构成:P(y)和P(x|y)。

先看P(y),如果抛开句子,只看标签序列,那么问题就和上讲的language Modeling 问题很类似了。就是一个算序列y的概率问题。

根据上讲,假设标签只与前两个标签有关,那么P(y)值就是:

接下来看P(x|y),在这里我们再次进行了一个大胆的假设,即:x的标签只与本身有关,与其他单词无关,因此P(x|y)值如下:

由此得:

我们的目标就是找到使上式最大的y序列。这个式子也叫做Trigram HMM,Trigram是因为对于式子前半部分我们用了Trigram模型,HMM是因为y序列是隐藏的,我们观察不到,我们只能看到x序列,同时我们又对y进行了马尔科夫假设,因此叫做HMM。

对于上式前半部分,我们可以用Language Modeling中的线性插值法求解q(yi|yi-2,yi-1)。

对于后半部分,最简单粗暴的方法是c(xi,yi)/c(yi),c表示数量。即用yi标签中是单词xi的次数除以yi标签的次数。

这样做有一个非常严重的问题,即:对于训练集中未出现的x,那么它的这一项将始终为0,由此它的p(x,y)将始终为0。概率一直未0还怎么给它标签???所以我们需要改进做法。

改进方法有很多,课程中提到的方法就是,将词分为高频和低频词两类。对于低频词(譬如出现次数小于5的词),将它们映射到一些有限的词类中,然后以词类代表这个词。一个例子如下:

至此模型是差不多了。

三、Viterbi算法

由模型可知,我们的核心问题是给定x1...xn求y序列:

一种最简单的方法当然就是蛮力法,算出所有可能的y序列对应的p(x,y)。可能的y序列将有|S|^n个,代价太大。

因此我们使用Viterbi算法,这个算法的精髓在于递归。

π可以递归定义:

直观理解就是当前位置k最可能的结果是k-1最可能的结果的基础上当前位置各个标签的概率的最大值。

有了递归定义,意味着可以节省很多计算了,只要找到k-1的最大值,那么k的最大值在k-1基础上做就行。

但是,别忘了我们可不是单纯为了求最大值,我们的目标是为了求出y序列,因此,我们还需要一个反向指针记录路径

完整的Viterbi算法如下:

Viterbi的时间复杂度:第一个for循环n,第二个for循环找u、v是|S|^2,for循环里w又是|S|,因此时间复杂度O(n*|S|^3)

四、优缺点

模型简单、表现优良,但是对于e(xi|yi),如果单词复杂,则处理也很复杂,有时可能需要人工干预。

Micheal Collins nlp课程笔记(二)Tagging Problems and Hidden Markov Models相关推荐

  1. 西湖大学张岳老师NLP课程笔记1 Introduction

    西湖大学张岳老师NLP课程笔记1 Introduction 参考资料 B站链接 课程主页 <Natural Language Processing: A Machine Learning Per ...

  2. 《数字电子技术课程设计》课程笔记(二)————multisim仿真模拟

    仿真源文件:链接:百度网盘 请输入提取码 提取码:1234 一.前言 对于一个完整的设计过程而言,仿真是一个必不可少的过程,因为仿真给了你一个重要的数据参考,信心来源,在之后的硬件设计过程中,心中的引 ...

  3. 《模拟电子技术基础》课程笔记(二)——课程概要

    1.课程内容: 利用半导体器件和外围器件构成的对模拟信号实施处理的电路. 包括信号的滤波.放大.产生.变换. 2.课程特点 (1)工程性强 ①在分析模拟电路时常常需要从工程角度分析问题和解决问题. ② ...

  4. NLP课程-笔记-04

    文章目录 Lesson-04 Edit Distance NLP的涉及方向: NLP遇到的问题 Word2Vec Edit Distance 词向量表示方法: categorical: PCA SVD ...

  5. cs224n斯坦福深度学习NLP课程笔记

    1,同义词,相似语义的,不能改变其语义程度,我是行业专家和我精通这个行业,两个的程度不一样 2,独热编码表示其中信息,问题无法表示近义词之间的语义信息, 3,建立两个词表表之间的相似性,建立词汇之间一 ...

  6. MATLAB课程笔记(二)——MATLAB基础知识

    MATLAB系统环境 MATLAB操作界面的组成 采用与office 2010相同风格的操作界面. >>:命令提示符表示MATLAB处于准备状态. ...:续行符 MATLAB的搜索路径 ...

  7. 经验似然课程笔记二: 参数似然

    1.2参数似然 参数似然方法假设总体分布F具有某种参数分布形式(比如正态分布完全由其均值和方差决定),即除了含有有限个参数未知以外,F完全已知,然后利用似然函数进行推断. 具体来讲,假设 X 1 , ...

  8. 吴恩达deeplearning.ai系列课程笔记+编程作业(14)序列模型(Sequence Models)-第二周 自然语言处理与词嵌入

    第五门课 序列模型(Sequence Models) 第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings) 文章目录 第五门课 ...

  9. 吴恩达deeplearning.ai系列课程笔记+编程作业(13)序列模型(Sequence Models)-第一周 循环序列模型(Recurrent Neural Networks)

    第五门课 序列模型(Sequence Models) 第一周 循环序列模型(Recurrent Neural Networks) 文章目录 第五门课 序列模型(Sequence Models) 第一周 ...

最新文章

  1. 用hosting.json配置ASP.NET Core站点的Hosting环境
  2. Linux(Ubuntu14.04)下安装Anaconda和Spyder
  3. 在批处理脚本所在目录下打开cmd
  4. 【Mac】setremotelogin: Turning Remote Login on or off requires Full Disk Access privileges.
  5. docker hub mysql主从_使用 Docker Compose 搭建 MySQL 数据库主从复制实例
  6. VulnHub的安全漏洞测试(1)
  7. 数据分析数据挖掘(三)
  8. 学生管理系统----当然封装类型
  9. Hive几种导出数据方式
  10. Vue源码:抽象语法树
  11. C代码:清理一行字串前后的无效字符
  12. Java硬核福利,实战虚拟机+Springboot+缓存,java电子书教材下载
  13. 远程清卡失败服务器内部错误,​航天信息远程清卡失败怎么处理
  14. ffmpeg之libx264编译安装方法及一键shell脚本
  15. Linux权限设置方法
  16. r52500u学计算机,AMD锐龙R5 2500U性能评测 性能提升幅度让Intel八代酷睿汗颜
  17. Vue输入框快速调出数字键盘
  18. jQuery下载和使用
  19. 【基础入门题031】三色球问题
  20. 安装火绒的情况下怎么关闭防火墙

热门文章

  1. C++:identifier “string“ is undefined
  2. python如何画三角形的外接圆_用python画三角形外接圆和内切圆
  3. 双线macd指标参数最佳设置_MACD指标参数设置成多少最好和使用技巧?
  4. 青海电大随学随考计算机,[青海电大]17秋随学随考中国现当代文学名著导读(1)作业4资料...
  5. oracle sparc 服务器系统,oracle sparc服务器基础及管理.pdf
  6. LeetCode 55. 跳跃游戏
  7. 截图工具(窗体永远前置)
  8. python订单管理系统功能_后台系统:订单管理
  9. 【WeNews】三胞债务重组方案出炉 650亿元金融债务如何化解
  10. ppm调制matlab程序,求助:谁能帮我编写一个4ppm的解调程序 谢谢了