1. 程式人生 > >python自然語言處理第五章習題

python自然語言處理第五章習題

3.分詞和標註下面的句子:They wind back the clock,while we chase after the wind.句子中包含哪些不同的發音和詞類?

import nltk
s='They wind back the clock,while we chase after the wind'
s1=nltk.word_tokenize(s)
s2=nltk.pos_tag(s1) #list型別

4.字典相關練習

d={'colorless':'ADJ','idea':'N','sleep':'V'} #create a dict
del d['sleep'] #delete an item from dict d
d.update({'color':'N'}) #add new item into dict d
d2=nltk.defaultdict(list)
d2['N'].append('color') #add new word for type N


9.驗證go和went在分佈上的限制,也就是說,它們不能自由互換。

from nltk.book import *
text1.concordance('go')
text1.concordance('went')

10.訓練一個unigram標註器,在一些新的文字上執行。觀察沒有分配到標記的詞。為什麼沒有分配到標記?一元標註器的行為與查詢

from nltk.corpus import brown

brown_tagged_sents=brown.tagged_sents(categories='news')

brown_sents=brown.sents(categories='news')

unigram_tagger=nltk.UnigramTagger(brown_sents)

unigram_tagger.tag(brown_sents[2007])

unigram_tagger.evaluate(brown_tagged_sents)

11.瞭解詞綴標註器(輸入help(nltk.AffixTagger)。訓練一個詞綴標註器,在一些新的文字上執行。設定不同的詞綴長度和最小詞長。並討論結果。

import nltk

from nltk.corpus import brown

brown_sents=brown.sents(categories='news')

brown_tagged_sents=brown.tagged_sents(categories='news')

affixtagger=nltk.AffixTagger(brown_tagged_sents)

affistagger.tag(brown_sents[2007])

12.訓練一個沒有回退標註器的bigram標註器。在一些訓練資料上執行。然後,在一些新的資料上執行它。標註器的效能會發生什麼變化?為什麼?

import nltk

from nltk.corpus import brown

brown_sents=brown.sents(categories='news')

brown_tagged_sents=brown.tagged_sents(categories='news')

bigram_tagger=nltk.BigramTagger(brown_tagged_sents)

bigram_tagger.tag(brown_sents[2007])

bigram_tagger.evaluate(brown_tagged_sents)

13.我們可以使用字典指定由一個格式化字串替換的值。閱讀關於格式化字串的python文件,使用這種方法以兩種不同格式顯示今天的日期。

d={'year':2016,'month':8,'day':15}

print %s-%s-%s %( d['year'],d['month'],d['day'])

14.使用sorted()和set()獲得布朗語料庫使用的標記排序連結串列,刪除重複。

sorted(set(brown.word(categories='news')))

15.編寫程式處理布朗語料,找到一下答案。 
a.哪些名詞經常以它們的複數形式出現而不是它們的單數形式?