文档章节

标记问题:词性标注(POS)和命名实体识别(NER)

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:27
字数 1296
阅读 42
收藏 0

该系列将描述一些自然语言处理方面的技术,完整目录请点击这里


在 NLP 问题中,有两个问题是比较重要的标记问题:词性标注和命名实体识别。


比如上图我们介绍了一个简单的词性标注问题。模型输入的是一个句子,输出是一个标记序列,模型会为每个词都产生一个标记。我们的目标是构建一个高精度的词性标注模型。词性标注问题是 NLP 中最基础的问题之一,在很多的应用中都有用。

我们假设我们有一个标记训练集,也就是每个句子都带有标记序列。比如,Penn WSJ 包含 100万字(包含 40000 句子),并且已经被标记。类似的数据集还有很多。

词性标注的一个最大的挑战是歧义。很多的英文单词可能有多种不同的划分,别的语言也同样存在这个问题。比如上图中,就有几个比较含糊的单词。比如,句子中第一个单词 “profits”,在这个上下文语境中,它是一个名词,但是在别的语境中它可能是一个动词(例如,句子 “in the company profits from its endeavors”)。单词 “topping” 在这个句子中是一个动词,但是它也可以作为一个名词,比如 “the topping on the cake” 。单词 “forecasts” 和 “results” 在这个句子中都是名词。但是在其他的语境中,这两个单词都可以表示动词。我们进一步观察,单词 “quarter” 在句子中是一个名词,但是它也可以作为一个动词,只是使用的频率很低。所以,从这句话中,我们就可以发现词性标注确实存在很多的歧义。

第二个挑战是对低频词的判断,特别是一些在训练集中没有出现的词。即使在 100 万词的训练数据中,我们在测试集中也会出现很多没有看到过的词。举个例子,词 “Mulally” 和词 “topping” 这样的词语可能是相当的稀少,可能不会出现在我们的训练数据集里面。所以,如何去解决一些没有出现在训练集中的词是一个比较迫切的问题。

在计算词性标注时,我们会考虑两种不同的信息来源。第一,从统计学来说,单词在一个句子中属于不同词性是有一定的概率的。比如,“quarter” 这个词可以是名词也可以是动词,但是从统计学来说,它作为一个名词的概率更大。第二,上下文的信息对词性标注也有很重要的作用。特别是,一些句子的序列标注比别的序列标注存在的可能性更大。比如,我们考虑一个三元组序列 (D N V) ,这个序列出现在英语中的概率非常大(比如,the/D dog/N saw/N),但是序列 (D V N) 在英文中出现的概率就小很多了。

但有时候这两种信息会产生冲突,比如这个句子:


在这个句子中,can 我们应该标注成名词。但是,can 也能被标注成动词的,而且这个被使用的更加频繁。在这个句子中,由于上下文的关系 can 被标注成动词的概率已经被覆盖了。


图1:命名实体识别例子。模型的输入是一个句子,模型的输出是一个对应公司,位置和人员对应的命名实体识别句子。

图1是另一个比较重要的标注问题——命名实体识别。在这个标注问题中,模型的输入还是一个句子,输出是一个命名实体识别标记好的句子。在这个例子中,我们假设只存在三种可能的实体类型:PERSON,LOCATION 和 COMPANY。在这个例子中,我们将 Boeing Co 识别为一个公司名,Wall Street 识别为一个地点,Alan Mulally 识别为一个任命。对人名、地点和组织机构的识别时非常重要的研究内容,而且这些研究已经被应用到了实际的 NLP 项目中。


图 2

乍一看,命名实体识别好像不是标注问题。在图 1 中,输出句子没有把每一个词都进行标注。然而,将命名实体识别认为是一个标注问题是最直接的。最基础的标注方法就如图 2 中所示,如果单词不是实体的一部分,那么就被标注为 NA,如果一个词是公司的第一个单词那么就被标注为 SC,如果是公司的后几个单词,那么就被标注为 CC。

一旦我们在训练集上面得到了这种映射关系,那么在新的测试集上面我们就可以对句子进行测试标记了。

本文转载自:http://www.jianshu.com/p/db278366d6b0

共有 人打赏支持
AllenOR灵感
粉丝 10
博文 2634
码字总数 82983
作品 0
程序员
Ansj 中文分词 1.41 发布

ansj中文分词是一个完全开源的,基于google语义模型+条件随机场模型的中文分词的java实现.具有使用简单开箱即用等特点。分词速度达到每秒钟大约100万字左右(mac air下测试),准确率能达到9...

ansj
2014/05/13
5K
4
中文词法分析解决方案 - LAC

中文词法分析(LAC) 中文分词(Word Segmentation)是将连续的自然语言文本,切分出具有语义合理性和完整性的词汇序列的过程。因为在汉语中,词是承担语义的最基本单位,切词是文本分类、情感...

匿名
07/17
0
0
ACL 2018 | 利用Lattice LSTM的最优中文命名实体识别方法

  选自arXiv   作者:Yue Zhang、Jie Yang   机器之心编译   参与:路、王淑婷      近日,来自新加坡科技设计大学的研究者在 arXiv 上发布了一篇论文,介绍了一种新型中文命名实...

机器之心
06/30
0
0
命名实体识别从数据集到算法实现

命名实体识别(Named Entity Recognition, NER)是 NLP 的基础任务,指从文本中识别出命名性指称项,为关系抽取等任务做铺垫。狭义上,是识别出人名、地名和组织机构名这三类命名实体(时间、...

技术小能手
06/29
0
0
自然语言处理全家福:纵览当前NLP中的任务、数据、模型与论文

  选自Github   作者:Sebastian Ruder   机器之心编译   参与:思源、晓坤      自然语言处理有非常多的子领域,且很多都没有达到令人满意的性能。本文的目的是追踪自然语言处理...

机器之心
06/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
40分钟前
1
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
2
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
1
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
1
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部