《Python自然语言处理》第二章 习题解答 练习6
问题描述:在比较词表的讨论中,创建一个对象叫做translate,通过它你可以使用德语和意大利语词汇查找对应的英语词汇。这种方法可能会出现什么问题,你能提出一个办法来避免这个问题吗?
书上的做法是通过entries()方法来指定一个语言链表来访问多语言中的同源词,再把它转换成一个简单的词典。代码如下:
1 from nltk.corpus import swadesh 2 swadesh.fileids() 3 it2en = swadesh.entries(['it', 'en']) 4 de2en = swadesh.entries(['de', 'en']) 5 translate = dict(it2en) 6 translate.update(dict(de2en)) 7 translate['Hund']
然而这个方法有个问题,原语言链表中有多对多关系的词,如it2en中的:
1 (u'tu, Lei', u'you (singular), thou') 2 (u'lui, egli', u'he') 3 (u'loro, essi', u'they') 4 (u'qui, qua', u'here') 5 (u'udire, sentire', u'hear') 6 (u'odorare, annusare', u'smell') 7 (u'dividere, separare', u'split') 8 (u'aguzzo, affilato', u'sharp') 9 (u'asciutto, secco', u'dry')
当输入translate['tu']时并不会正确显示you (singular), thou,而是会报错KeyError: 'tu':
1 >>> translate['tu'] 2 Traceback (most recent call last): 3 File "<stdin>", line 1, in <module> 4 KeyError: 'tu'
解决思路:
遍历语言链表,当检测到有多对多关系时,将该元素进行处理后再加入原语言链表。
代码:
1 from nltk.corpus import swadesh 2 swadesh.fileids() 3 it2en = swadesh.entries(['it', 'en']) 4 de2en = swadesh.entries(['de', 'en']) 5 6 # list[tuple(str, str), ...] 7 for it, en in it2en: 8 if ',' in it: 9 words = it.split(', ') 10 for eachWord in words: 11 newWord = (eachWord, en) 12 it2en.append(newWord) 13 14 for de, en in it2en: 15 if ',' in de: 16 words = de.split(', ') 17 for eachWord in words: 18 newWord = (eachWord, en) 19 de2en.append(newWord) 20 21 translate = dict(it2en) 22 translate.update(dict(de2en))
转载于:https://www.cnblogs.com/yezuoxian/p/6713705.html
《Python自然语言处理》第二章 习题解答 练习6相关推荐
- 【虎书】Fundamentals of Computer Graphics(Fourth Edition)第二章习题解答
[虎书]Fundamentals of Computer Graphics(Fourth Edition)第二章章末习题解答 Exercises Exercise 1: Cardinality of ...
- DIP第二章习题解答
数字图像处理 第二章课后作业 下载地址:数字图像处理第二章课后作业.pdf_数字图像处理第二章完整答案,数字图像处理第二章课后答案-图像处理文档类资源-CSDN下载https://download.c ...
- python自然语言处理 第一章习题
1. 尝试使用Python解释器作为一个计算器,输入表达式,如:12/(4+1) >>> 12/(4+1) 2.4 2. 26 个字母可以组成 26 的 10 次方或者 26**10 ...
- 解释下列术语堆栈型计算机,计算机系统结构 第二章(习题解答)
1. 数据类型.数据表示和数据结构之间是什么关系?在设计一个计算机系统 时,确定数据表示的原则主要有哪几个? 答: 略 2. 假设有A和B两种不同类型的处理机,A处理机中的数据不带标志位,其 指令字长 ...
- 用python编程、假设一年期定期利率_第二章-习题答案
第二章习题 1 . 写一个算法(流程图和 python 程序) :输入三个数,输出其最 大者. numA=3 numB=4 numC=5 if numA <= numB: if numC pri ...
- 计算机组成原理第二章测试题,计算机组成原理第二章习题答案.doc
计算机组成原理第二章习题答案 第2章?习题及解答 2-2?? 将下列十进制表示成二进制浮点规格化的数(尾数取12位,包括一位符号位:阶取4位,包括一位符号位),并写出它的原码.反码.补码三和阶移尾补四 ...
- 统计学习导论:基于R应用——第二章习题
目前在看统计学习导论:基于R应用,觉得这本书非常适合入门,打算把课后习题全部做一遍,记录在此博客中. 第二章习题 1. (a) 当样本量n非常大,预测变量数p很小时,这样容易欠拟合,所以一个光滑度更高 ...
- java第二章选择题_Java第二章习题讲解(2)
第二章习题讲解(1) 3.阅读或调试程序 (1) 上机运行下列程序,注意观察输出的结果.Java public class E{ public static void main(String args ...
- 【Python 自然语言处理 第二版】读书笔记1:语言处理与Python
文章目录 前言 语言处理与Python 一.语言计算:文本和单词 1.NLTK入门 (1)安装(nltk.nltk.book) (2)搜索文本 (3)词汇计数 2.列表与字符串 (1)列表操作 (2) ...
最新文章
- 还找不到数据异常原因?这份教程赶快拿走
- 英雄联盟更新服务器维护,lol更新维护
- 拉5000万存款,银行客户经理能拿40万奖金?
- 以太坊白皮书_以太坊发展历程
- ajax保存避免重复提交,ajax 实现防止重复提交
- Javascript -- 二叉树(查找删除功能实现)
- 第一个简单APP设计图
- 【Spark调优】聚合操作数据倾斜解决方案
- 大型网站架构系列:负载均衡详解
- 记录:zlog交叉编译出aarch64的libzlog.a
- global mapper导出影像范围
- 医疗器械app软件开发功能明细
- 最新主流 Markdown 编辑器推荐
- kindle看pdf不清楚_不要再纠结pdf在kindle上的显示问题了,简单教程,拿去!不要太谢我。...
- IDEA 一直Updating indexes问题解决
- shopnc route.php,shopnc商城专题页的伪静态支持
- 浏览器禁用cookie后session还能用吗?cookie与session区别
- RPC VS REST
- Java利用Ant包进行解压缩文件
- 【笔记】Yolo_v3 损失:正例,计算bbox与GT之间的位置和大小差异(MSE),计算80个类别维度与target的one-hot向量间的交叉熵损失;正例和负例,加权求和置信度与GT之间的交叉熵