文档章节

NLTK学习笔记(二)

NateHuang
 NateHuang
发布于 2017/03/26 01:01
字数 1753
阅读 353
收藏 1

词意消歧

在词意消歧中,我们要算出特定上下文中的词被赋予的是哪个意思。

思考存在歧义的词 serve 和 dish:

(1)

a. serve: help with food or drink; hold an office; put ball into play

b. dish: plate; course of a meal; communications device

在包含短语 he served the dish 的句子中,你可以知道 serve 和 dish 都用的是它们与食 物相关的含义。在短短的 3 个词的地方,讨论的话题不太可能从体育转向陶器。这也许会迫 使你眼前产生一幅怪异的画面:一个职业网球手正把他的郁闷发泄到放在网球场边上的陶瓷 茶具上。

换句话说,自动消除歧义需要使用上下文,利用相邻词汇有相近含义这样一个简单 的事实。在另一个有关上下文影响的例子是词 by,它有几种含义,例如:the book by Che sterton(施事——Chesterton 是书的作者);the cup by the stove(位置格——炉子在杯子旁 边);submit by Friday(时间——星期五前提交)。观察(2)中斜体字的含义有助于我们解释 by 的含义。

(2) 

a. The lost children were found by the searchers (施事)

b. The lost children were found by the mountain (位置格)

c. The lost children were found by the afternoon (时间)

 

指代消解

一种更深刻的语言理解是解决“谁对谁做了什么”,即检测主语和动词的宾语。

虽然你在 小学已经学会了这些,但它比你想象的更难。在句子 the thieves stole the paintings 中,很 容易分辨出谁做了偷窃的行为。

考虑(1)中句子的三种可能,尝试确定是什么被出售、被抓 和被发现(其中一种情况是有歧义的)。

(1)

a. The thieves stole the paintings. They were subsequently sold.

b. The thieves stole the paintings. They were subsequently caught.

c. The thieves stole the paintings. They were subsequently found.

要回答这个问题涉及到寻找代词 they 的先行词 thieves 或者 paintings。处理这个问题的 计算技术包括指代消解(anaphora resolution)——确定代词或名词短语指的是什么——和 语义角色标注(semantic role labeling)——确定名词短语如何与动词相关联(如施事,受 事,工具等)。

 

自动生成语言

如果我们能够解决自动语言理解等问题,我们将能够继续那些包含自动生成语言的任 务,如自动问答和机器翻译。

在自动问答中,一台机器要能够回答用户关于特定文本集的问 题:

(1)

a. Text: ... The thieves stole the paintings. They were subsequently sold. ...

b. Human: Who or what was sold?

c. Machine: The paintings.

机器的回答表明,它已经正确的计算出 they 是指 paintings,而不是 thieves。在机器翻 译中,机器要能够把文本翻译成另一种语言文字,并准确传达原文的意思。

在把例子文本译成法文过程中,我们不得不在第二句选择代词的性别:ils(男性)如果 thieves 被出售,ell es(女性)如果 paintings 被出售。正确的翻译实际上取决于对代词的正确理解。

(2)

a. The thieves stole the paintings. They were subsequently found.

b. Les voleurs ont volé les peintures. Ils ont été trouvés plus tard. (the thieves)

c. Les voleurs ont volé les peintures. Elles ont été trouvées plus tard. (the paintings)

所有这些例子中,弄清楚词的含义、动作的主语以及代词的先行词是理解句子含义的步 骤,也是我们希望语言理解系统能够做到的事情。

 

机器翻译

长久以来,机器翻译(MT)都是语言理解的圣杯,人们希望能找到从根本上提供高品 质的符合语言习惯的任意两种语言之间的翻译。其历史可以追溯到冷战初期,当时自动翻译 的许诺带来大量的政府赞助,它也是 NLP 本身的起源。

今天,特定语言之间实用的翻译系统已经存在,有些已经集成到搜索引擎中了。但是, 这些系统有一些严重的缺点。

我们可以在 NLTK 的“babelizer”的帮助下探索它们(当你使用 from nltk.book import * 导入本章的材料时,已经自动装载了)。这个程序把提交的英 文句子翻译成指定语言,然后把结果重新翻译回英文。这样重复 12 次结束或者得到曾经产 生过的翻译时(表示一个循环)结束。

>>> babelize_shell()

NLTK Babelizer: type 'help' for a list of commands.

Babel> how long before the next flight to Alice Springs?

Babel> german

Babel> run

0> how long before the next flight to Alice Springs?

1> wie lang vor dem folgenden Flug zu Alice Springs?

2> how long before the following flight to Alice jump?

3> wie lang vor dem folgenden Flug zu Alice springen Sie?

4> how long before the following flight to Alice do you jump?

5> wie lang, bevor der folgende Flug zu Alice tun, Sie springen?

6> how long, before the following flight to Alice does, do you jump?

7> wie lang bevor der folgende Flug zu Alice tut, tun Sie springen?

8> how long before the following flight to Alice does, do you jump?

9> wie lang, bevor der folgende Flug zu Alice tut, tun Sie springen?

10> how long, before the following flight does to Alice, do do you jump?

11> wie lang bevor der folgende Flug zu Alice tut, Sie tun Sprung?

12> how long before the following flight does leap to Alice, does you?

请看,该系统正确地把 Alice Springs 从英文翻译成了德文(第 1 行),但在翻译回英文 时却以 Alice jump 结束(第 2 行)。介词 before 一开始被翻译成对应的德文介词 vor,但后 来变成了连词 bevor(第 5 行)。第 5 行以后的句子变的没有意义(但请注意以逗号指示的各 种分句,以及从 jump 到 leap 的变化)。翻译系统不能识别一个词是某个名字的一部分,并 且弄错了语法结构。语法问题在下面的例子中更加明显。是约翰发现了猪,还是猪找到约翰?

>>> babelize_shell()

Babel> The pig that John found looked happy

Babel> german

Babel> run

0> The pig that John found looked happy

1> Das Schwein, das John fand, schaute gl?cklich

2> The pig, which found John, looked happy

机器翻译是困难的,因为一个给定的词可能有几种不同的解释(取决于它的意思),也 因为必须改变词序才能与目标语言的语法结构保持一致。

今天,这些困难遇到新情况,从新 闻和政府网站发布的两种或两种以上的语言文档中可以收集到大量的相似文本。给出一个德 文和英文双语的文档或者一个双语词典,我们就可以自动配对组成句子,这个过程叫做文本 对齐。一旦我们有一百万或更多的句子对,就可以检测出相应的词和短语,并建立一个能用 来翻译新文本的模型。

(注意:这里要使用机器翻译需要下载完整的nltk包,只下载book包在run的时候是会报错的)

© 著作权归作者所有

NateHuang
粉丝 19
博文 66
码字总数 31120
作品 0
深圳
后端工程师
私信 提问
python的nltk中文使用和学习资料汇总帮你入门提高

nltk是一个python工具包, 用来处理和自然语言处理相关的东西. 包括分词(tokenize), 词性标注(POS), 文本分类, 等等现成的工具. 1. nltk的安装 资料1.1: 黄聪:Python+NLTK自然语言处理学习(...

dm_ml
2015/12/24
255
0
持续更新笔记:用Python进行自然语言处理(Natural Language Processing with python)

#下载 NLTK 图书集 >>> import nltk >>> nltk.download() 使用 nltk.download()浏览可用的软件包。下载器上的 Collections 选项卡显示软件包如何被打包分组。选择 book 标记所在行,可以获取...

gk4030
2016/09/03
418
0
全栈数据,主要技术点

生命之源 0. 缘起 本文仅仅只是列出一些知识点,拟做为内部技术分享的点,只是对『全栈数据』技术点有一个概要性的了解。 列出的点,99%都是自己的经验,或接触、或了解、或实战的内容。 本文...

云戒
2017/06/25
0
0
【常见错误】--Nltk使用错误

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LHWorldBlog/article/details/82719725

LHWorldBlog
2018/09/13
0
0
Python数据科学(三)- python与数据科学应用(Ⅲ)

传送门: Python数据科学(一)- python与数据科学应用(Ⅰ) Python数据科学(二)- python与数据科学应用(Ⅱ) Python数据科学(三)- python与数据科学应用(Ⅲ) Python数据科学(四)- 数据收...

_知几
2017/10/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
1
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
10
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
12
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0
Django的ChoiceField和MultipleChoiceField错误提示,选择一个有效的选项

在表单验证时提示错误:选择一个有效的选项 例如有这样一个表单: class ProductForm(Form): category = fields.MultipleChoiceField( widget=widgets.SelectMultiple(), ...

编程老陆
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部