什么是标注?

在自然语言处理中有一个常见的任务,即标注。常见的有:1)词性标注(Part-Of-Speech Tagging),将句子中的每一个词标注词性,比如名词、动词等;2)实体标注(Name Entity Tagging),将句子中的特殊词标注,比如地址、日期、人物姓名等。

下图所看到的的是词性标注的案例,当输入一个句子时,计算机自己主动标注出每一个词的词性。



下图所看到的的是实体标注的案例,当输入一个句子时,计算机自己主动标注出特殊词的实体类别。


粗略看来。这并非一个简单问题。首先每一个词都可能有多个含义,不同情况表达不同含义。其次,一个词的含义或者词性也受到前后多个词的影响。

标注问题的数学表达

在找到解决方式之前,我们最好先用数学的语言来描写叙述一下这个问题。

当我们得到一个句子时,我们能够把它看做一个向量。令句子s有共计n个单词,第i个单词用xi来表示,显然s = x1, x2, ... xn。因此问题能够描写叙述成。对于每一个单词xi,我们须要分别给定一个标注yi,因而获得句子的标注y = y1, y2, ... yn。


综上所述,训练模型时我们期望对于不论什么一个句子s,我们须要得到全部可能出现的标注的概率p(y | s),当中概率最大的y即是我们须要的结果。终于的表达式为tagging(s)= arg max(p(y|s))。


接下来。我们须要考虑怎样建立训练集并从中学习出上述的模型。首先,我须要获得一个已经标注好的语料库。语料库中有若干句子。每一个句子中的每一个词都已有标识。

然后,对于语料库中出现的全部的句子s与相应的标识y,我们能够学习出条件概率p(y, s)。即某个句子与其相应标识的出现概率。其次,因为语料库无法包括全部可能出现的句子,所以我们希望能够得到一个更加宽泛的表达式,通过贝叶斯公式,我们能够很看出p(y,
s) = p(y) * p(s | y),同一时候p(y | s) = p(y) * p(s | y) / p(s);我们须要比較的是p(y | s)中的最大值而无需获得p(y | s)。因此显然p(s)的详细取值并不重要。因此我们仅仅须要考虑tagging(s)=
arg max(p(y) * p(s | y))。


因为语料库无法保存全部客观存在的句子。我们必须找到一种方法来预计p(y)与p(s | y)的取值,而当中一种很有名的方法就是隐马尔科夫模型。

隐马尔科夫模型

我们依旧回到上述问题,给定一个句子s = x1, x2, ... xn,我们给出一个标识组合y = y1, y2, ... yn,使得y = arg max(p(y)
* p(s | y)) = arg max(p(x1,
x2, ... , xn, y1, y2, ..., yn))。


依据上一章《语言模型》所提到的。我们依旧对每一个句子做一点优化:

1)添加一个開始符号”*“。我们定义全部句子都是以”*“開始。即X-1 = X0 = *;
2)添加一个结束符号”STOP“,我们定义全部句子都是以”STOP“结束。


同一时候,隐马尔科夫模型须要我们做一些额外的如果来简化模型:
1)yk仅仅与前几个元素相关,即标识的语义相关性仅仅影响前后几个元素;
2)单词xk与相应的yk不受其它单词的影响,即p(xi | yi)相互独立.

经过简化以后。我们以三阶隐马尔科夫模型为例,表达式为 p(y1, y2, … yn |

x1, x2, … xn) =
p(y1, y2, … yn) * p(x1, x2, … xn | y1, y2, … yn) = ∏q(yj | yj-2, yj-1) * ∏ e(xi | yi)。显然,简化后的模型,单个单词在语料库中出现的频率会远远高于句子总体出现的频率。


參数估算

有了隐马尔科夫模型之后。我们须要做的就仅仅是估算參数q(yj
| yj-2, yj-1)与e(xi | yi)。q(yj
| yj-2, yj-1)在上一章《语言模型》中有具体的解释,而e(xi
| yi)通过统计每一个单词在语料库中的出现情况能够轻松获得。然而有一种特殊情况,某些单词假设在语料库中没有出现,那么e(xi | yi) = 0将导致总体句子的出现概率为0。为了解决问题,我们能够採用一个简单的解决方式:

1)首先将语料库中全部的单词分为频繁词与非频繁词(通过一个阈值来确定);
2)频繁词的e(xi
| yi)将直接从语料库中统计得出。
3)非频繁词的通过预定的规则划分到多个群组中。通过统计群组的词频来确定e(xi
| yi)。

比如,常见的分组方法例如以下图所看到的。这样的方式对于日期、姓名、缩写等特殊词的效果非常好。


算法的复杂度

如果我们已经训练得到q(yj | yj-2, yj-1)与e(xi
| yi),给定一个句子s = x1, x2, ... xn,我们应当怎样得到标注y
= y1, y2, ... yn。

方法1:
暴力方法。遍历全部可能出现的y1, y2, ... yn组合,计算概率并找出概率最大的值。显然,暴力方法的时间复杂度不会令人惬意。
方法2:动态规划,定义一个动态规划表达式m(k,
u, v),k表示句子的第k位,u,v表示前k为组成的子句的最后两个单词的标识。因此。递归方程能够表述为m(k, u, v) = max(m(k-1, w, u) * q(v | w, u) * e( x | v))。关于动态规划方法,leetcode里有不少案例能够说明。

NLP | 自然语言处理 - 标注问题与隐马尔科夫模型(Tagging Problems, and Hidden Markov Models)的更多相关文章

  1. 机器学习中的隐马尔科夫模型(HMM)详解

    机器学习中的隐马尔科夫模型(HMM)详解 在之前介绍贝叶斯网络的博文中,我们已经讨论过概率图模型(PGM)的概念了.Russell等在文献[1]中指出:"在统计学中,图模型这个术语指包含贝叶 ...

  2. 自然语言处理(1)-HMM隐马尔科夫模型基础概念(一)

    隐马尔科夫模型HMM 序言 文本序列标注是自然语言处理中非常重要的一环,我先接触到的是CRF(条件随机场模型)用于解决相关问题,因此希望能够对CRF有一个全面的理解,但是由于在学习过程中发现一个算法像 ...

  3. 自然语言处理---用隐马尔科夫模型(HMM)实现词性标注---1998年1月份人民日报语料---learn---test---evaluation---Demo---java实现

    先放上一张Demo的测试图 测试的句子及每个分词的词性标注为:   目前/t 这/rzv 条/q 高速公路/n 之间/f 的/ude1 路段/n 已/d 紧急/a 封闭/v ./w 需要基础知识 HM ...

  4. HMM隐马尔科夫模型

    这是一个非常重要的模型,凡是学统计学.机器学习.数据挖掘的人都应该彻底搞懂. python包: hmmlearn 0.2.0 https://github.com/hmmlearn/hmmlearn ...

  5. 猪猪的机器学习笔记(十七)隐马尔科夫模型HMM

    隐马尔科夫模型HMM 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十七次课在线笔记.隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来 ...

  6. 机器学习之隐马尔科夫模型HMM(六)

    摘要 隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔科夫过程.其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步 ...

  7. 隐马尔科夫模型(HMM)与词性标注问题

    一.马尔科夫过程: 在已知目前状态(现在)的条件下,它未来的演变(将来)不依赖于它以往的演变 (过去 ).例如森林中动物头数的变化构成——马尔可夫过程.在现实世界中,有很多过程都是马尔可夫过程,如液体 ...

  8. 隐马尔科夫模型HMM

    崔晓源 翻译 我们通常都习惯寻找一个事物在一段时间里的变化规律.在很多领域我们都希望找到这个规律,比如计算机中的指令顺序,句子中的词顺序和语音中的词顺序等等.一个最适用的例子就是天气的预测. 首先,本 ...

  9. 隐马尔科夫模型 HMM(Hidden Markov Model)

    本科阶段学了三四遍的HMM,机器学习课,自然语言处理课,中文信息处理课:如今学研究生的自然语言处理,又碰见了这个老熟人: 虽多次碰到,但总觉得一知半解,对其了解不够全面,借着这次的机会,我想要直接搞定 ...

随机推荐

  1. 【转】URL和URI的区别

    [转]URL和URI的区别 译者:华科小涛:http://www.cnblogs.com/hust-ghtao/: 初学http协议,就被这两个相似的术语搞蒙了,查了很多资料,总算搞清楚了.(找资料还 ...

  2. list,map的疑问

    代码: package com.wyl; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator ...

  3. XCode 6 出现 no identity found: Command /usr/bin/codesign failed with exit code 1 解决方法汇总

    1, 解决办法,进入开发者账号重建一个 Provisioning Profiles(或配套证书) 文件,把证书添加正确就可以了 (应该是最有效的) 2, 将p12文件重新安装下 3, 在 iPhone ...

  4. 详解python2 和 python3的区别

    看到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又 ...

  5. 我的Python成长之路---第四天---Python基础(15)---2016年1月23日(寒风刺骨)

    二.装饰器     所谓装饰器decorator仅仅是一种语法糖, 可作用的对象可以是函数也可以是类, 装饰器本身是一个函数, 其主要工作方式就是将被装饰的类或者函数当作参数传递给装饰器函数.本质上, ...

  6. 我的Python成长之路---第三天---Python基础(10)---2016年1月16日(雾霾)

    二.collections collections是对Python现有的数据类型的补充,在使用collections中的对象要先导入import collections模块 1.Counter——计数 ...

  7. Ubuntu14.04 Y460闪屏问题解决方案

    我的笔记本是联想Y460,安装了Ubuntu之后发现屏幕闪烁移位,而且在使用IDE的时候出现无法输入中文等问题,其实是显卡驱动的问题,N卡官网给的驱动不好用,尝试使用大黄蜂 参考:https://wi ...

  8. UVALive 6467 Strahler Order 拓扑排序

    这题是今天下午BNU SUMMER TRAINING的C题 是队友给的解题思路,用拓扑排序然后就可以了 最后是3A 其中两次RE竟然是因为: scanf("%d",mm); ORZ ...

  9. HDOJ1232 并查集

    所谓并查集 并:Union 查:Find 定义 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.常常在使用中以森林来表示. 集就是让每个元素构成一个单 ...

  10. modelsim中的文件操作—— 大数据测试

    在modelsim中不可避免的需要进行文件操作,在窗口中查看代码的操作情况,下面是我自己M序列实验中的一段测试代码 integer i,j ,k,m; integer m_dataFILE , ind ...