python自然語言處理 第一章答案

2021-09-13 10:23:47 字數 3081 閱讀 3429

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會發生什麼?

['monty','python'] * 20

['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中有多少個詞?有多少個不同的詞?

len(text1)

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的索引值。你需要將這個詞作為乙個引數插入到圓括號之間。在嘗試和出錯的過程中,在完整的句子中找到包含這個詞的切片。 

def solution(keyword, text):

pun = [i for i, j in enumerate(text) if j == '.' or j == '?' or j == '!']

sunset = [i for i, j in enumerate(text) if j == keyword]

ans =

flag = 0

for i in range(len(sunset)):

j = flag

while j < len(pun):

if sunset[i] < pun[j] and pun[j - 1] < sunset[i]:

flag = j + 1

break

j += 1

# print ans

for i in range(len(ans)):

print ('start from %d to end in %d' % (ans[i][0], ans[i][1]))

print (' '.join(text[ans[i][0]: ans[i][1]]))

solution('sunset',text9)

22. 找出聊天語聊庫(text5)中所有4個字母的詞。使用頻率分布函式(freqdist),以頻率從高到低顯示這些詞。

text5_freq = nltk.freqdist(w for w in text5 if len(w)==4)

print(sorted(text5_freq, key=lambda x:text5_freq[x], reverse=true))

24. 編寫表示式並找出text6中所有符合下列條件的詞。結果應該以詞鍊錶形式表示:['word1', 'word2'...]。

#a.ize結尾

text = [w for w in text6 if w.endswith('ize')]

#b.包含字母z

text = [w for w in text6 if 'z' in w]

#c.包含序列pt

text = [w for w in text6 if 'pt' in w]

#d.除了首字母外是全部小寫字母的詞(即titlecase)。

[w for w in text6 if w.istitle()]

27.定義乙個名為vocab_size(text)的函式,以文字作為唯一的引數,返回文字的詞彙量。

def vocab_size(text):

return len(set(w.lower() for w in text if w.isalpha()))

vocab_size(text1)

28.定義乙個函式percent(word, text),計算乙個給定的詞在文字**現的頻率,結果以百分比表示。

def percent(word,text):

print("%s" % (nltk.freqdist(text).freq(word)*100) ,"%")

return

percent('the',brown.sents(categories='news')[1])

python自然語言處理 第一章

from future import division import nltk nltk.download from nltk.book import 搜尋文字 text1.concordance monstrous 出現在相似上下文中德詞彙 text1.similar monstrous 兩個或兩...

Python自然語言處理第一章

nltk即natural language toolkit,是乙個先進的用於處理自然語言的python程式,和python中的其他庫一樣,我們可以呼叫它來處理各種文字資訊。nltk功能強大,它不僅為我們學習nlp提供了豐富的語料庫,也為我們處理這些語料庫資訊提供了大量的方法,比如concordanc...

《Python自然語言處理》第一章筆記

import nltk nltk.download 引入book包 from nltk.book import 搜尋文字,顯示指定單詞及其上下文 text1.concordance monstrous 查詢出現在相似上下文中的詞 text1.similar monstrous 查詢兩個或兩個以上詞彙...