《Python自然语言处理》——1.8 练习

简介:

本节书摘来自异步社区《Python自然语言处理》一书中的第1章,第1.8节,作者[美]Steven Bird,Ewan Klein,Edward Loper, 陈涛,张旭,崔杨,刘海平 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.8 练习

1.○尝试使用Python解释器作为一个计算器,输入表达式,如12/(4+1)。

2.○26个字母可以组成26的10次方或者26**10个10字母长的字符串。也就是141167095653376L(结尾处的L只是表示这是Python长数字格式)。100个字母长度的字符串可能有多少个?

3.○Python乘法运算可应用于链表。当你输入['Monty', 'Python'] 20或者3 sent1会发生什么?

4.○复习1.1节关于语言计算的内容。在text2中有多少个词?有多少个不同的词?

5.○比较表格1-1中幽默和言情小说的词汇多样性得分,哪一个文体中词汇更丰富?

6.○制作《理智与情感》中4个主角:Elinor、Marianne、Edward和Willoughby的分布图。在这部小说中关于男性和女性所扮演的不同角色,你能观察到什么?你能找出一对夫妻吗?

7.○查找text5中的搭配。

8.○思考下面的Python表达式:len(set(text4))。说明这个表达式的用途,并且描述在执行此计算中涉及的两个步骤。

9.○复习1.2节关于链表和字符串的内容。

  a.定义一个字符串,并且将它分配给一个变量,如:my_string = 'My String'(在字符串中放一些更有趣的东西)。用两种方法输出这个变量的内容,一种是通过简单地输入变量的名称,然后按回车;另一种是通过使用print语句。

  b.尝试使用my_string+ my_string或者用它乘以一个数将字符串添加到它自身,例如:my_string* 3。请注意,连接在一起的字符串之间没有空格。怎样才能解决这个问题?

10.○使用语法my_sent = ["My", "sent"],定义一个词链表变量my_sent(用自己的词或喜欢的话)。

  a.使用' '.join(my_sent)将其转换成一个字符串。

  b.使用split()在你指定的地方将字符串分割回链表。

11.○定义几个包含词链表的变量,例如:phrase1、phrase2等。将它们连接在一起组成不同的组合(使用加法运算符),最终形成完整的句子。len(phrase1 + phrase2)与len(phrase1) + len(phrase2) 之间的关系是什么?

12.○考虑下面两个具有相同值的表达式。哪一个在NLP中更常用?为什么?

a."Monty Python"[6:12]
b.["Monty", "Python"][1]

13.○我们已经学习了如何用词链表表示一个句子,其中每个词是一个字符序列。sent12代表什么意思?为什么?并尝试其他的索引值。

14.○在变量sent3中保存的是text3的第一句话。在sent3中the的索引值是1,因为sent3[1]的值是“the”。sent3中“the”的其他两种出现的索引值是多少?

15.○复习1.4节讨论的条件语句。在聊天语料库(text5)中查找所有以字母b开头的词。按字母顺序显示出来。

16.○在Python解释器提示符下输入表达式range(10)。再尝试range(10, 20), range(10, 20, 2)和range(20, 10, -2)。在后续章节中我们将看到这个内置函数的多种用途。

17.◑使用text9.index()查找词sunset的索引值。你需要将这个词作为一个参数插入到圆括号之间。在尝试和出错的过程中,在完整的句子中找到包含这个词的切片。

18.◑使用链表加法、set和sorted操作,计算句子sent1...sent8的词汇表。

19.◑下面两行之间的差异是什么?哪一个的值比较大?其他文本也是同样情况吗?

>>> sorted(set([w.lower() for w in text1]))
>>> sorted([w.lower() for w in set(text1)]

20.◑w.isupper()和not w.islower()这两个测试之间的差异是什么?

21.◑编写一个切片表达式提取text2中的最后两个词。

22.◑找出聊天语料库(text5)中所有4个字母的词。使用频率分布函数(FreqDist),以频率从高到低显示这些词。

23.◑复习1.4节中的条件循环。使用for和if语句组合循环遍历电影剧本《巨蟒和圣杯》(text6)中的词,输出所有的大写词,每行输出一个。

24.◑编写表达式并找出text6中所有符合下列条件的词。结果应该以词链表形式表示:['word1', 'word2', ...]。

  a.以ize结尾。

  b.包含字母z。

  c.包含字母序列pt。

  d.除了首字母外是全部小写字母的词(即titlecase)。

25.◑定义sent为词链表['she', 'sells', 'sea', 'shells', 'by', 'the', 'sea', 'shore']。编写代码执行以下任务。

  a.输出所有sh开头的单词。

  b.输出所有长度超过4个字符的词。

26.◑下面的Python代码是做什么的?sum([len(w) for w in text1]),你可以用它来算出一个文本的平均字长吗?

27.◑定义一个名为vocab_size(text)的函数,以文本作为唯一的参数,返回文本的词汇量。

28.◑定义一个函数percent(word, text),计算一个给定的词在文本中出现的频率,结果以百分比表示。

29.◑我们一直在使用集合存储词汇表。试试下面的Python表达式:set(sent3) < set(text1)。尝试在set()中使用不同的参数。它是做什么用的?你能想到一个实际的应用吗?

相关文章
|
1月前
|
数据采集 自然语言处理 算法
如何使用Python的Gensim库进行自然语言处理和主题建模?
使用Gensim库进行自然语言处理和主题建模,首先通过`pip install gensim`安装库,然后导入`corpora`, `models`等模块。对数据进行预处理,包括分词和去除停用词。接着,创建字典和语料库,使用`Dictionary`和`doc2bow`。之后,应用LDA算法训练模型,设置主题数量并创建`LdaModel`。最后,打印每个主题的主要关键词。可以根据需求调整参数和选择不同算法。
26 0
|
1月前
|
Python
Python:函数篇(每周练习)
Python:函数篇(每周练习)
81 1
|
5天前
|
缓存 自然语言处理 数据处理
Python自然语言处理面试:NLTK、SpaCy与Hugging Face库详解
【4月更文挑战第16天】本文介绍了Python NLP面试中NLTK、SpaCy和Hugging Face库的常见问题和易错点。通过示例代码展示了如何进行分词、词性标注、命名实体识别、相似度计算、依存关系分析、文本分类及预训练模型调用等任务。重点强调了理解库功能、预处理、模型选择、性能优化和模型解释性的重要性,帮助面试者提升NLP技术展示。
22 5
|
7天前
|
机器学习/深度学习 自然语言处理 算法框架/工具
用于NLP的Python:使用Keras进行深度学习文本生成
用于NLP的Python:使用Keras进行深度学习文本生成
18 2
|
8天前
|
索引 Python
python 格式化、set类型和class类基础知识练习(上)
python 格式化、set类型和class类基础知识练习
32 0
|
1月前
|
机器学习/深度学习 数据采集 自然语言处理
利用Python实现基于自然语言处理的情感分析
本文将介绍如何利用Python编程语言,结合自然语言处理技术,实现情感分析。通过对文本数据进行情感分析,可以帮助我们了解用户对产品、服务或事件的情感倾向,为市场调研和舆情分析提供有力支持。文章将涵盖文本预处理、情感词典构建以及情感分析模型的搭建与应用等内容,旨在帮助读者深入理解情感分析的原理和实践应用。
|
1月前
|
机器学习/深度学习 自然语言处理 PyTorch
用 Python 进行自然语言处理。
【2月更文挑战第13天】【2月更文挑战第36篇】用 Python 进行自然语言处理。
|
2月前
|
Python
Python猜字游戏是一种常见的编程练习
Python猜字游戏是一种常见的编程练习
24 2
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理基础:Python 文本分析
自然语言处理 (NLP) 是计算机科学和人工智能领域的一个重要分支,它涉及对文本数据的分析、理解和生成。在 Python 中,我们可以使用各种 NLP 库和工具来进行文本分析,提取有用的信息并执行各种自然语言任务。
|
2月前
|
机器学习/深度学习 人工智能 算法
【Python】编程练习的解密与实战(四)
【Python】编程练习的解密与实战(四)
38 0