当前位置:   article > 正文

python自然语言处理 第一章答案_python自然语言处理答案

python自然语言处理答案

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

12/4

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

26**100

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

  1. ['Monty','Python'] * 20
  2. ['Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python', 'Monty', 'Python']

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

  1. len(text1)
  2. len(set(text1))

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

text2.dispersion_plot(['Elinor','Edward','Willoughby','Marianne'])

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

[i for i, w in enumerate(sent3) if w=='the']

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

sorted([w for w in set(text5) if w.startswith('b')])

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

  1. def solution(keyword, text):
  2. pun = [i for i, j in enumerate(text) if j == '.' or j == '?' or j == '!']
  3. sunset = [i for i, j in enumerate(text) if j == keyword]
  4. ans = []
  5. flag = 0
  6. for i in range(len(sunset)):
  7. j = flag
  8. while j < len(pun):
  9. if sunset[i] < pun[j] and pun[j - 1] < sunset[i]:
  10. ans.append([pun[j - 1] + 1, pun[j] + 1])
  11. flag = j + 1
  12. break
  13. j += 1
  14. # print ans
  15. for i in range(len(ans)):
  16. print ('start from %d to end in %d' % (ans[i][0], ans[i][1]))
  17. print (' '.join(text[ans[i][0]: ans[i][1]]))
  18. solution('sunset',text9)

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

  1. text5_freq = nltk.FreqDist(w for w in text5 if len(w)==4)
  2. print(sorted(text5_freq, key=lambda x:text5_freq[x], reverse=True))

 

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

  1. #a.ize结尾
  2. text = [w for w in text6 if w.endswith('ize')]
  3. #b.包含字母z
  4. text = [w for w in text6 if 'z' in w]
  5. #c.包含序列pt
  6. text = [w for w in text6 if 'pt' in w]
  7. #d.除了首字母外是全部小写字母的词(即titlecase)。
  8. [w for w in text6 if w.istitle()]

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

  1. def vocab_size(text):
  2. return len(set(w.lower() for w in text if w.isalpha()))
  3. vocab_size(text1)

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

  1. def percent(word,text):
  2. print("%s" % (nltk.FreqDist(text).freq(word)*100) ,"%")
  3. return
  4. percent('the',brown.sents(categories='news')[1])

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/521755
推荐阅读
相关标签
  

闽ICP备14008679号